Skip to content

mustafasameturan/RentACarProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rent A Car Project - Araba Kiralama Sistemi

🌟Teşekkür

Öncelikle bana bu projeyi yazmamda büyük desteği olan, bana çok değerli bilgiler katan Engin Demiroğ Hocama teşekkür ediyorum. Ayrıca bu yolda bana destek olan arkadaşlarıma ve aileme de teşekkürlerimi iletiyorum.

🌟Amaç

Projeyi yazmamdaki amacımdan bahsetmek istiyorum çünkü bunu projeyi daha anlamlı kılacak bir unsur olarak görüyorum. Başlıca amacım C# dilini, .NET dünyasını tanımak, bu yolda uzmanlaşmaktır. Yazdığım bu proje kendimi geliştirmeme vesile oluyor. Ayrıca bu proje ile birlikte SOLID yazılım tekniklerini öğreniyorum. Yazılım Geliştirici olma yolunda ilerlerken temelimi sağlam atmaya çalışıyorum ve sadece kendi penceremden değil, bu projeyi okuyacak, üstünde çalışacak insanların penceresinden de bakarak çalışmalarıma devam ediyorum.

🌟İçindekiler

Tanıtım

Projem adından da anlaşılacağı üzere bir araba kiralama sistemidir. Projemde, kendi oluşturduğum database üzerinden gelen bilgileri yönlendirerek;

☑️ Araba Ekle/Sil/Güncelle/Listele
☑️ Araba Gücü(HP) Ekle/Sil/Güncelle/Listele
☑️ Araba Fotoğrafı Ekle/sil/Güncelle/Listele
☑️ Marka Ekle/Sil/Güncelle/Listele
☑️ Renk Ekle/Sil/Güncelle/Listele
☑️ Kullanıcı Ekle/Sil/Güncelle/Listele
☑️ Müşteri Ekle/Sil/Güncelle/Listele
☑️ Araba Kiralama Özelliği

gibi imkanlar mevcuttur. Ayrıca projem bir katmanlı mimaridir. Projemin katmanlı mimarisi sayesinde kodun anlaşılabilirliği yüksektir. Tüm yazılan kodlar bir düzen içerisinde çalışmaktadır. Projemde kullandığım teknolojilerden bahsedeceğim fakat öncesinde sizden talep edilen farklı bir teknoloji kullanmak istediğinizde, projem herhangi bir zorluk yaratmayacaktır. Tamamen "Plug and Play" prensipi göz önüne alınarak tasarlanmıştır.

Katmanlı Mimari

Kullanılan Teknolojiler

☑️ Database → SQL
☑️ Çatı → EntityFramework
☑️ IoC Container → Autofac
☑️ Arabirim → WebAPI
☑️ Katmanlar → Business,DataAccess,Entity,Core,WebAPI

Katmanlar

Son Güncellemeler

☑️ Autofac desteği eklendi.
☑️ FluentValidation uygulaması sisteme entegre edildi.
☑️ AOP Desteği eklendi.
☑️ BusinessRules motoru eklendi.
☑️ JWT entegrasyonu yapıldı.
☑️ Security sistemi eklendi. Login, Register olma ve Yetki uygulaması sisteme eklendi.
☑️ Caching Aspect'i eklendi.
☑️ Transaction Aspect'i eklendi.
☑️ Performance Aspect'i eklendi.
☑️ Sistemde kayıtlı arabalar için fotoğraf ekleme/silme/güncelleme özelliği entegre edildi..

Katmanlar

🗃 Business
     📂 Abstract
         📃 ICarService.cs
         📃 IBrandService.cs
         📃 ICarImageService.cs
         📃 IColorService.cs
         📃 ICustomerService.cs
         📃 IRentalService.cs
         📃 IUserService.cs
         📃 IPowerService.cs
         📃 IAuthService.cs

    📂 Concrete
         📃 CarManager.cs
         📃 BrandManager.cs
         📃 CarImageManager.cs
         📃 ColorManager.cs
         📃 CustomerManager.cs
         📃 RentalManager.cs
         📃 UserManager.cs
         📃 PowerManager.cs
         📃 AuthManager.cs

     📂 BusinessAspects
         📂 Autofac
             📃 SecuredOperation.cs

     📂 Constants
        📃 Messages.cs

     📂 DependencyResolvers
         📂 Autofac
             📃 AutofacBusinessModule.cs

     📂 ValidationRules
         📂 FluentValidation
             📃 BrandValidator.cs
             📃 CarValidator.cs
             📃 CarImageValidator.cs
             📃 ColorValidator.cs
             📃 CustomerValidator.cs
             📃 RentalValidator.cs
             📃 UserValidator.cs
             📃 PowerValidator.cs

🗃 Core
    📂 Aspects
        📂 Autofac
            📂 Validation
                📃 ValidationAspect.cs
            📂 Caching
                📃 CacheAspect.cs
                📃 CacheRemoveAspect.cs
            📂 Performance
                📃 PeformanceAspect.cs
            📂 Transaction
                📃 TransactionScopeAspect.cs

    📂 CrossCuttingConcerns
        📂 Validation
            📃 ValidationTool.cs
        📂 Caching
            📃 ICacheManager.cs
            📂 Microsoft
                📃 MemoryCacheManager.cs

    📂 DependencyResolvers
         📃 CoreModule.cs

    📂 DataAccess
         📃 IEntityRepository.cs
        📂 EntityFramework
             📃 EfEntityRepositoryBase.cs

    📂 Entities
        📂 Abstract
             📃 IDto.cs
             📃 IEntity.cs
        📂 Concrete
             📃 OperationClaim.cs
             📃 User.cs
             📃 UserOperationClaim.cs

        📂 Extensions
             📃 ClaimExtensions.cs
             📃 ClaimsPrincipalExtensions.cs
             📃 ServiceCollectionExtensions.cs

    📂 Utilities
        📂 Interceptors
             📃 AspectInterceptorSelector.cs
             📃 MethodInterception.cs
             📃 MethodInterceptionBaseAttribute.cs
        📂 BusinessRules
             📃 BusinessRules.cs
        📂 Helpers
             📃 FileHelper.cs
        📂 IoC
             📃 ICoreModule.cs
             📃 ServiceTool.cs
        📂 Autofac
            📂 Encryption
                📃 SecurityKeyHelper.cs
                📃 SigningCredentialsHelper.cs
            📂 Hashing
                📃 HashingHelper.cs
            📂 JWT
                📃 AccessToken.cs
                📃 ITokenHelper.cs
                📃 JwtHelper
                📃 TokenOptions.cs

        📂 Results
             📃 IDataResult.cs
             📃 DataResult.cs
             📃 SuccessDataResult.cs
             📃 ErrorDataResult.cs
             📃 IResult.cs
             📃 Result.cs
             📃 SuccessResult.cs
             📃 ErrorResult.cs

🗃 Data Access
    📂 Abstract
         📃 ICarDal.cs
         📃 IBrandDal.cs
         📃 ICarImageDal.cs
         📃 IColorDal.cs
         📃 ICustomerDal.cs
         📃 IRentalDal.cs
         📃 IUserDal.cs
         📃 IPowerDal.cs
         📃 IUserDal.cs

     📂 Concrete
         📂 EntityFramework
                 📃 ReCapProjectDatabaseContext.cs
                 📃 EfCarDal.cs
                 📃 EfBrandDal.cs
                 📃 EfCarImageDal.cs
                 📃 EfColorDal.cs
                 📃 EfCustomerDal.cs
                 📃 EfRentalDal.cs
                 📃 EfUserDal.cs
                 📃 EfPowerDal.cs
                 📃 EfUserDal.cs

🗃 Entities
    📂 Concrete
         📃 Car.cs
         📃 Brand.cs
         📃 CarImage.cs
         📃 Color.cs
         📃 Customer.cs
         📃 Rental.cs
         📃 User.cs
         📃 Power.cs

    📂 DTOs
         📃 CarDetailDto.cs
         📃 RentalDetailDto.cs

         📃 UserForLoginDto.cs
         📃 UserForRegisterDto.cs

🗃 WebAPI
    📃 Startup.cs
    📃 Program.cs
    📂 Controllers
         📃 BrandsController.cs
         📃 CarsController.cs
         📃 CarImagesController.cs
         📃 ColorsController.cs
         📃 CustomersController.cs
         📃 RentalsController.cs
         📃 UsersController.cs
         📃 PowersController.cs
         📃 AuthController.cs

☑️SQL Tables

Cars Brands Colors Powers
Variable Name Data Type
CarId int
BrandId int
ColorId int
ModelYear nchar(10)
DailyPrice decimal
Description nvchar(30)
Model nchar(20)
Variable Name Data Type
ColorId int
ColorName nchar(10)
Variable Name Data Type
BrandId int
BrandName nchar(12)
Variable Name Data Type
PowerId int
BrandId int
CarId int
HorsePower nchar(4)
Customers Rentals Users CarImages
Variable Name Data Type
CustomerId int
UserId int
CompanyName nchar(40)
Variable Name Data Type
RentalId int
CarId int
CustomerId int
RentDate datetime
ReturnDate datetime
Variable Name Data Type
UserId int
FirstName nchar(25)
LastName nchar(20)
Email nchar(50)
Password nchar(20)
Variable Name Data Type
Id int
Car int
ImagePath nvarchar(max)
Date datetime2(7)
Users OperationClaims UserOperationClaims
Variable Name Data Type
ıd int
FirsName varchar(50)
LastName varchar(50)
Email varchar(50)
PasswordHash varbinary(500)
PasswordSalt varbinary(500)
Status bit
Variable Name Data Type
Id int
Name varchar(250)
Variable Name Data Type
Id int
UserId int
OperationClaimId int