/car-rental

CarRental Project

Primary LanguageC#

CarRental - Car Rental Project

πŸ“ŒGetting Started

An exemplary project for Car Rental workplaces, which is prepared with N-Layered architecture. The project developed using SOLID design principles in the CSharp programming language. CRUD operations are performed using Entity Framework Core.

πŸ“šLayers

Entities Layer

The entities layer is a layer where we store our database data. We have three folders Abstract, Concrete and DTOs in the Entities layer. The abstract folder is used to store abstract objects (e.g Interfaces) while the concrete folder is used to store concrete objects (e.g Classes).The DTOs folder is used to store Data Transmission Objects (CarDetailDto)

πŸ“‚Abstract
   πŸ“ƒ IEntity.cs

πŸ“‚Concrete
   πŸ“ƒ Brand.cs
   πŸ“ƒ Car.cs
   πŸ“ƒ Color.cs
   πŸ“ƒ Customer.cs
   πŸ“ƒ Rental.cs
   πŸ“ƒ User.cs

πŸ“‚DTOs
   πŸ“ƒ CarDetailDto.cs
   πŸ“ƒ RentalDetailDto.cs

Business Layer

This layer coordinates the application, processes commands, makes logical decisions and evaluations, and performs calculations. It also moves and processes data between the two surrounding layers -DataAccess and Presentation. We have 5 folders Abstract, Concrete, Constants, Dependency Resolvers and ValidationRules in the Business Layer.

πŸ“‚Abstract
   πŸ“ƒ IBrandService.cs
   πŸ“ƒ ICarService.cs
   πŸ“ƒ IColorService.cs
   πŸ“ƒ ICustomerService.cs
   πŸ“ƒ IUserService.cs

πŸ“‚Concrete
   πŸ“ƒ BrandManager.cs
   πŸ“ƒ CarManager.cs
   πŸ“ƒ ColorManager.cs
   πŸ“ƒ CustomerManager.cs
   πŸ“ƒ UserManager.cs

πŸ“‚Constants
   πŸ“ƒ Messages.cs

πŸ“‚DependencyResolvers
    πŸ“‚Autofac
        πŸ“ƒ AutofacBusinessModule.cs

πŸ“‚ValidationRules
    πŸ“‚FluentValidation
       πŸ“ƒ BrandValidator.cs
       πŸ“ƒ CarValidator.cs
       πŸ“ƒ ColorValidator.cs
       πŸ“ƒ CustomerValidator.cs
       πŸ“ƒ RentalValidator.cs

Core Layer


πŸ“‚Aspects
   πŸ“‚Autofac
      πŸ“‚Validation
          πŸ“ƒ ValidationAspect.cs

πŸ“‚Business
    πŸ“ƒ IService.cs

πŸ“‚CrossCuttingConcerns
   πŸ“‚Validation
      πŸ“ƒ ValidationTool.cs

πŸ“‚DataAccess
   πŸ“‚EntityFramework
      πŸ“ƒ EfEntityRepositoryBase.cs
    πŸ“ƒ IEntityRepository.cs

πŸ“‚Entities
    πŸ“ƒ IDto.cs
    πŸ“ƒ IEntity.cs

πŸ“‚Utilities
   πŸ“‚Interceptors
      πŸ“ƒ AspectInterceptorSelector.cs
      πŸ“ƒ MethodInterception.cs
      πŸ“ƒ MethodInterceptionBaseAttribute.cs
   πŸ“‚Results
      πŸ“ƒ DataResult.cs
      πŸ“ƒ ErrorResult.cs
      πŸ“ƒ ErrorDataResult.cs
      πŸ“ƒ IDataResult.cs
      πŸ“ƒ IResult.cs
      πŸ“ƒ Result.cs
      πŸ“ƒ SuccessDataResult.cs
      πŸ“ƒ SuccessResult.cs

Tables in Database

Cars Rentals Users
Variable Name Data Type
Id int
BrandId int
ColorId int
ModelYear int
DailyPrice decimal
Description nvarchar(50)
Variable Name Data Type
Id int
CarId int
CustomerId int
RentDate datetime
ReturnDate datetime
Variable Name Data Type
Id int
FirstName nvarchar(50)
LastName nvarchar(50)
Email nvarchar(50)
Password nvarchar(50)
Customers Brands Colors
Variable Name Data Type
UserId int
CustomerName nvarchar(50)
Variable Name Data Type
Id int
BrandName nvarchar(50)
Variable Name Data Type
Id int
ColorName nvarchar(50)