💡 About
- We designed the project of the
backend service of a simple car rental siteand tried to comply withSOLID rulesin 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'sandRequestsare 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 rulesare 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 somerulesorutilities.
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ı
ReCapProjectolacak. (Tekrar ve geliştirme projesi)Entities,DataAccess,Businessoluşturunuz. Bir araba nesnesi oluşturunuz."Car","Brand"ve"Color"nesnelerini oluşturunuz.(BrandId,BrandName… Özellik olarak : Id, BrandId, ColorId, ModelYear, DailyPrice, Descriptionalanlarını ekleyiniz. (Brand = Marka) Car,Brand,Colorsınıflarınız için tümCRUDoperasyonları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.CRUDoperasyonları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ördetutulacaktı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 5resmi 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/Registeryetenekleri getiriniz. Kiralama esnasında müşterininfindeks puanını sorgulayacak sahte servisekleyiniz. Findeks puan aralığı0-1900arası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 bilgisieklenmelidir. Kiralamalarda başlıngıç kilometresi girilmelidir.Kiralama Dönüşlerinde dönüş kilometresi bilgisigirilmelidir. Bu bilgi arabada da güncellenmelidir. - Arabaya ait
hasarlargirilebilmelidir.(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 TLek 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:






