Skip to content

Latest commit

 

History

History
208 lines (196 loc) · 27.1 KB

README.md

File metadata and controls

208 lines (196 loc) · 27.1 KB

ReCapProject - Car Rental System

Araç Kiralama

The Car Rental System is a project that covers the work done in the (Qualified) Software Developer Training Camp.

The project was developed in C # language, implemented by the server in the back-end interface, with layered software corporate architecture, SOLID software principles, Web API, EntityFrameWork structure. JWT integration; Implementations of Transaction, Cache, Validation and Performance aspects have been implemented, and support for FluentValidation for Validation and Autofac support for IoC has been added.

🗂️ Layers

📁 Entities Layer

It is the layer created to hold database objects to be used in the project.
It consists of three sub-folders.
  1.The Abstract folder has been moved to the Core layer to keep the abstract objects (Abstract folder has been moved to the Core layer since it contains common codes in the projects that will be developed later.),
  2.Concrete folder for holding concrete objects
  3.The folder DTOs is used to give different properties to objects and to combine tables in the database.

    :open_file_folder:Abstract
        :clipboard: IEntity
    :open_file_folder: Concrete
        :clipboard: Brand
        :clipboard: Car
        :clipboard: Color
        :clipboard: Customer
        :clipboard: CarImages
        :clipboard: Rental
        :clipboard: Payment
    :open_file_folder: DTOs
        :clipboard: CarDetailsDto
        :clipboard: RentalDetailsDto
        :clipboard: UserForLoginDto
        :clipboard: UserForRegisterDto
        :clipboard: CustomerDetailDto

📁 DataAccess Layer

Database is the data access layer established to perform CRUD operations.
It consists of two subfolders.
  1.Abstract folder to hold abstract objects,
  2.Concrete folder to hold concrete objects.


    :open_file_folder:Abstract
        :clipboard: IBrandDal
        :clipboard: ICarDal
        :clipboard: IColorDal
        :clipboard: ICustomerDal
        :clipboard: ICarImagesDal
        :clipboard: IRentalDal
        :clipboard: IUserDal
        :clipboard: IPayment
    :open_file_folder: Concrete
       :open_file_folder: EntityFrameWork
             :clipboard: EfBrandDal
             :clipboard: EfCarDal
             :clipboard: EfColorDal
             :clipboard: EfCustomerDal
             :clipboard: EfCarImagesDal
             :clipboard: EfRentalDal
             :clipboard: EfUserDal
             :clipboard: EfPaymentDal
             :clipboard: CarDbContext
       :open_file_folder: InMemory
             :clipboard: InMemoryCarDal

📁 Business Layer

It is the layer that processes the data captured by DataAccess from the database to the project. In other words, it is the layer on which workloads are written. It consists of six subfolders.
  1.Abstract folder to hold abstract objects,
  2.Concrete folder to hold concrete objects.
  3.BusinessAspect folder for management of security operations,
  4.Constants folder for the management of information messages as a result of the operation performed with user data,
  5.To create the DependecyResolvers folder instance,
  6.The ValidationRules folder was created for the management of validation rules.


    :open_file_folder:Abstract
        :clipboard: IAuthService
        :clipboard: IBrandService
        :clipboard: ICarService
        :clipboard: IColorService
        :clipboard: ICustomerService
        :clipboard: ICarImagesService
        :clipboard: IRentalService
        :clipboard: IUserService
        :clipboard: IPaymentService
    :open_file_folder:Concrete
        :clipboard: AuthManager
        :clipboard: BrandManager
        :clipboard: CarManager
        :clipboard: ColorManager
        :clipboard: CustomersManager
        :clipboard: CarImagesManager
        :clipboard: RentalsManager
        :clipboard: UserManager
        :clipboard: Payment
    :open_file_folder:BusinessAspect
       :open_file_folder: Autofac
             :clipboard: SecuredOperation
    :open_file_folder:Constants
        :clipboard: Messages
    :open_file_folder:DependecyResolvers
       :open_file_folder: Autofac
             :clipboard: AutofacBusinessModule
    :open_file_folder:ValidationRules
       :open_file_folder: FluentValidation
             :clipboard: CarValidator
             :clipboard: CustomerValidator
             :clipboard: CarImagesValidator
             :clipboard: PaymentValidator
             :clipboard: UserValidator

📁 Core Layer

It is a universal layer with common codes to be used in all projects.
It consists of seven sub-folders.
  1.Aspects folder,
  2.CrossCuttingConcerns folder,
  3.DataAccess folder,
  4.Entities folder,
  5.DependecyResolvers folder,
  6.Extensions folder,
  7.Utilities folder,


    :open_file_folder:Aspect
       :open_file_folder: Autofac
          :open_file_folder: Caching
             :clipboard: CacheAspect
             :clipboard: CacheRemoveAspect
          :open_file_folder: Performance
             :clipboard: PerformanceAspect
          :open_file_folder: Transactional
             :clipboard: TransactionScopeAspect
          :open_file_folder: Validation
             :clipboard: ValidationAspect
    :open_file_folder:CrossCuttingConcerns
          :open_file_folder: Caching
             :open_file_folder: Microsoft
                :clipboard: MemoryCacheManager
          :open_file_folder: Validation
             :clipboard: ValidationTool
    :open_file_folder:DataAccess
          :open_file_folder: EntityFramework
             :clipboard: EfEntityRepositoryBase
    :open_file_folder:DependecyResolvers
        :clipboard: CoreModule
    :open_file_folder:Entities
        :clipboard: IDto
          :open_file_folder:Concrete
             :clipboard: OperationClaim
             :clipboard: User
             :clipboard: UserOperationClaim
    :open_file_folder:Extensions
        :clipboard: ClaimExtensions
        :clipboard: ClaimsPrincipalExtensions
        :clipboard: ServiceCollectionExtensions
    :open_file_folder:Utilities
          :open_file_folder:Business
             :clipboard: BusinessRules
          :open_file_folder:Interceptors
             :clipboard: AspectInterceptorSelector
             :clipboard: MethodInterception
             :clipboard: MethodInterceptionBaseAttribute
          :open_file_folder:IoC
             :clipboard: ICoreModule
             :clipboard: ServiceTool
          :open_file_folder:Results
             :clipboard: DataResult
             :clipboard: ErrorDataResult
             :clipboard: ErrorResult
             :clipboard: IDataResult
             :clipboard: IResult
             :clipboard: Result
             :clipboard: SuccessDataResult
             :clipboard: SuccessResult
          :open_file_folder:Security
             :open_file_folder:Encryption
                :clipboard: SecurityKeyHelper
                :clipboard: SigningCredentialsHelper
             :open_file_folder:Hashing
                :clipboard: HashingHelper
             :open_file_folder:JWT
                :clipboard: AccessToken
                :clipboard: ITokenHelper
                :clipboard: JwtHelper
                :clipboard: TokenOptions

📁 WebAPI Layer

    :open_file_folder:Controllers
        :clipboard: AuthController
        :clipboard: BrandController
        :clipboard: CarsController
        :clipboard: ColorController
        :clipboard: CustomersController
        :clipboard: CarImagesController
        :clipboard: RentalController
        :clipboard: PaymentsController
        :clipboard: UsersController

Thank you for taking your time to read. You can contact me from my accounts below.

alt text

alt text