💡 About
- We designed the project of the
backend service of a simple car rental site
and tried to comply withSOLID rules
in the project. UsingSpringBoot
, we performeddatabase operations with API's
. We have associated our tables withJpaRepository
, which is part of the Spring framework.
- It is the layer where
Objects
,Dto's
andRequests
are defined.
Entities kısmı için tıklayınız.
- It is the layer that connects with the database. Tables are created using JpaRepository.
DataAccess kısmı için tıklayınız.
- It is the layer where
business rules
are defined and controlled. When a command is received by the program, what operations it should do and which set of rules it should go through are defined here.
Business kısmı için tıklayınız.
- It is the layer where we run our codes with
Spring boot
.
Api kısmı için tıklayınız.
- It is the layer that
connects with external services
.Generally we used this layer to use somerules
orutilities
.
Core kısmı için tıklayınız.
- External services
Out Service kısmı için tıklayınız.
- Yepyeni bir proje oluşturunuz. Adı
ReCapProject
olacak. (Tekrar ve geliştirme projesi)Entities
,DataAccess
,Business
oluşturunuz. Bir araba nesnesi oluşturunuz."Car"
,"Brand"
ve"Color"
nesnelerini oluşturunuz.(BrandId,BrandName… Özellik olarak : Id, BrandId, ColorId, ModelYear, DailyPrice, Description
alanlarını ekleyiniz. (Brand = Marka) Car
,Brand
,Color
sınıflarınız için tümCRUD
operasyonlarını hazır hale getiriniz. Console'da Tüm CRUD operasyonlarınızı Car, Brand, Model nesneleriniz içintest ediniz
.GetAll
,GetById
,Insert
,Update
,Delete
. Arabaları şu bilgiler olacak şekilde listeleyiniz. CarName, BrandName, ColorName, DailyPrice. (İpucu : Dto oluşturup 3 tabloya join yazınız)- Core katmanında
Results yapılandırması
yapınız. - Kullanıcılar tablosu oluşturunuz.
Users-->Id,FirstName,LastName,Email,Password. Müşteriler tablosu oluşturunuz
. Customers->UserId,CompanyName.Kullanıcılar ve müşteriler ilişkilidir.
Arabanın kiralanma bilgisini tutan tablo oluşturunuz
. Rentals->Id
,CarId
,CustomerId
,RentDate(Kiralama Tarihi)
,ReturnDate(Teslim Tarihi)
. Araba teslim edilmemişse ReturnDate null'dır. Projenizde bu entity'leri oluşturunuz.CRUD
operasyonlarını yazınız. Yeni müşteriler ekleyiniz. Arabayı kiralama imkanını kodlayınız. Rental- >AddArabanın kiralanabilmesi için arabanın teslim edilmesi gerekmektedir
. WebAPI katmanını kurunuz
. Business katmanındakitüm servislerin Api karşılığını yazınız
.Swagger’da test ediniz
.Validation desteği ekleyiniz
.CarImages
(Araba Resimleri) tablosu oluşturunuz.(Id,CarId,ImagePath,Date)
Bir arabanın birden fazla resmi olabilir. Api üzerinden arabaya resim ekleyecek sistemi yazınız. Resimler projeniz içerisindebir klasörde
tutulacaktır.Resimler yüklendiği isimle değil, kendi vereceğiniz GUID ile dosyalanacaktır
. Resim silme, güncelleme yetenekleri ekleyiniz. Bir arabanınen fazla 5
resmi olabilir. Resmin eklendiği tarih sistem tarafından atanacaktır. Bir arabaya ait resimleri listeleme imkanı oluşturunuz. (Liste) Eğer birarabaya ait resim yoksa, default bir resim gösteriniz
. Bu resim şirket logonuz olabilir. (Tek elemanlı liste)- Brand listesinde herhangi bir marka seçildiğinde, o markaya ait arabaları listeleyiniz. Color listesinde herhangi bir renk seçildiğinde, o renge ait arabaları listeleyiniz. Car listesinde bir arabaya tıklandığında o arabaya ait detay sayfası oluşturunuz. Bu sayfada bu araca ait resimleri de gösteriniz.
Login/Register
yetenekleri getiriniz. Kiralama esnasında müşterininfindeks puanını sorgulayacak sahte servis
ekleyiniz. Findeks puan aralığı0-1900
arasındadır. Araçların kiralanabilmesi içinher aracın ayrı ayrı minimum findeks puanı
olmalıdır. Bu puanı olmayan müşteriler araç kiralayamaz. Giriş yapılmışsa müşteri adı ex: "Müsteri İsmi" yazsın. Kullanıcı bilgilerini görüp güncelleyebilmelidir. Kredi kartıyla ödeme alındığında kullanıcıya kredi kartını kaydedelim mi? Sorusu yöneltiniz. Kaydetmek isteyen müşteriye sonraki ödemede kayıtlı kredi kartını gösteriniz.- Markalar tekrar edemez. (Brand-add)
- (Düzeltme) Kredi kartı formatı control edilmeli. Regex
Arabalar bakıma gönderilebilmelidir
. Kirada olan bir araba bakıma gönderilemez.Bakımda olan bir araba kiralanamaz
. Bakımda olan araba tüm listelerde listelenmemelidir.- Şirketimiz büyüdü. Kurumsal müşteriler araba kiralayabilmelidir.
(Kurumsal Müşteri – vergiNo, Şirket ismi,email….
Kiralama kuralları bireysel müşteri ile aynıdır. - Tüm kiralamalar sonucunda fatura kesilmelidir. (
Fatura No, Oluşturma Tarihi, Kiralama tarihleri, Toplam kiralama gün sayısı, kiralama tutarı
) Belirli tarih aralığında tüm faturalar listelenebilmelidir. Müşteriye ait faturalar listelenebilmelidir. - Farklı illerde şubeler açmaya karar verdik.
Arabalara şehir bilgisi eklenmelidir
. Şehir bilgisine göre arabalar listelenebilmelidir.Kiralamada alış şehri – dönüş şehri bilgisi eklenmelidir
. Araba teslim edildiğinde, dönüş şehri farklıysa, araba dönüş ili portföyüne girmelidir. - Arabalara
güncel kilometre bilgisi
eklenmelidir. Kiralamalarda başlıngıç kilometresi girilmelidir.Kiralama Dönüşlerinde dönüş kilometresi bilgisi
girilmelidir. Bu bilgi arabada da güncellenmelidir. - Arabaya ait
hasarlar
girilebilmelidir.(Id,CarId,HasarBilgisi)
Fake Pos Servisi ekleyiniz
. Servis olumsuz döndüğünde kiralama gerçekleşmemelidir.- Araba
farklı ilde teslim edildiğinde kiralama bedeline 500 TL
ek hizmet bedeli eklenmelidir. - Hizmet kalitemizi arttırmaya karar verdik. Araba kiralanırken ek hizmetler satin alınabilir.
Bebek koltuğu, scooter ….
Günlük bedelleri üzerinden kiralamaya eklenmelidir. - Ek hizmetler
eklenebilmeli
,güncellenebilmeli
,listelenebilmelidir
. Ek hizmetler isim olarak tekrar edemez.
- Technologies that used in this project are: