Skip to content

ilaydaez/ReCarProject2

Repository files navigation

ReCarProject - Araç Kiralama Sistemi

Araç Kiralama

Araç Kiralama Sistemi, (Nitelikli) Yazılım Geliştirici Yetiştirme Kampı'nda yapılan çalışmaları kapsayan bir projedir.

Proje, back-end arayüzde sunucu tarafından gerçekleştirilen C# dilinde, katmanlı yazılım kurumsal mimari yapısı, SOLID yazılım prensipleri, Web API, EntityFrameWork yapısı ile geliştirilmiştir. JWT entegrasyonu; Transaction, Cache, Validation ve Performance aspectlerinin implementasyonları gerçekleştirilmiş olup Validation için FluentValidation desteği, IoC için Autofac desteği eklenmiştir.

🗂️ Layers

📁 Entities Layer

Projede kullanılacak veritabanı nesnelerini tutmak için oluşturulan katmandır.
Üç alt klasörden oluşmaktadır.
  1.Abstarct klasörü soyut nesneleri tutmak için (Abstarct klasörü daha sonra geliştirilecek olan projeler içinde ortak kodlar içermesinden dolayı Core katmanına taşınmıştır.),
  2.Concrete klasörü somut nesneleri tutmak için
  3.DTOs klasörü nesnelere farklı özellikler vermek ve veritabanındaki tabloları birleştirmek için kullanılmıştır.

    :open_file_folder:Abstarct
        :clipboard: IEntity
    :open_file_folder: Concrete
        :clipboard: Brand
        :clipboard: Car
        :clipboard: Color
        :clipboard: Customer
        :clipboard: Image
        :clipboard: Rental
    :open_file_folder: DTOs
        :clipboard: CarDetailsDto
        :clipboard: RentalDetailsDto
        :clipboard: UserForLoginDto
        :clipboard: UserForRegisterDto

📁 DataAccess Layer

Veritabanı CRUD işlemleri gerçekleştirmek için kurulan veri erişim katmanıdır.
İki alt klasörden oluşmaktadır.
  1.Abstarct klasörü soyut nesneleri tutmak için,
  2.Concrete klasörü somut nesneleri tutmak için.


    :open_file_folder:Abstarct
        :clipboard: IBrandDal
        :clipboard: ICarDal
        :clipboard: IColorDal
        :clipboard: ICustomerDal
        :clipboard: IImageDal
        :clipboard: IRentalDal
        :clipboard: IUserDal
    :open_file_folder: Concrete
       :open_file_folder: EntityFrameWork
             :clipboard: EfBrandDal
             :clipboard: EfCarDal
             :clipboard: EfColorDal
             :clipboard: EfCustomerDal
             :clipboard: EfImageDal
             :clipboard: EfRentalDal
             :clipboard: EfUserDal
             :clipboard: ReCarContext
       :open_file_folder: InMemory
             :clipboard: InMemoryDal

📁 Business Layer

DataAccess tarafından veratabanından projeye çekilen verileri alarak işleyen katmandır. Bir başka deyişle iş yüklerinin yazıldığı katmandır. Altı alt klasörden oluşur.
  1.Abstarct klasörü soyut nesneleri tutmak için,
  2.Concrete klasörü somut nesneleri tutmak için,
  3.BusinessAspect klasörü güvenlik operasyonlarının yönetimi için,
  4.Constants klasörü kullanıcı verileri ile gerçekleştirilen işlem sonucunda bilgilendirme mesajlarının yönetimi için,
  5.DependecyResolvers klasörü instance oluşturmak için,
  6.ValidationRules klasörü doğrulama kurallarının yönetimi için oluşturulmuştur.


    :open_file_folder:Abstarct
        :clipboard: IAuthService
        :clipboard: IBrandService
        :clipboard: ICarService
        :clipboard: IColorService
        :clipboard: ICustomerService
        :clipboard: IImageService
        :clipboard: IRentalService
        :clipboard: IUserService
    :open_file_folder:Concrete
        :clipboard: AuthManager
        :clipboard: BrandManager
        :clipboard: CarManager
        :clipboard: ColorManager
        :clipboard: CustomerManager
        :clipboard: ImageManager
        :clipboard: RentalManager
        :clipboard: UserManager
    :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: BrandValidator
             :clipboard: CarValidator
             :clipboard: ColorValidator
             :clipboard: CustomerValidator
             :clipboard: ImageValidator
             :clipboard: RentalValidator
             :clipboard: UserValidator

📁 Core Layer

Tüm projelerde kullanılacak ortak kodların bulunduğu evrensel bir katmandır.
Yedi alt klasörden oluşmaktadır.
  1.Aspects klasörü,
  2.CrossCuttingConcerns klasörü,
  3.DataAccess klasörü,
  4.Entities klasörü,
  5.DependecyResolvers klasörü,
  6.Extensions klasörü,
  7.Utilities klasörü,


    :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: BrandsController
        :clipboard: CarsController
        :clipboard: ColorsController
        :clipboard: CustomersController
        :clipboard: ImagesController
        :clipboard: RentalsController
        :clipboard: UsersController

Releases

No releases published

Packages

No packages published

Languages