https://github.com/fatmabirel/autogo-backend
Bu proje, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir. Projemiz, araç kiralama sürecini daha hızlı ve güvenli bir deneyim haline getirmeyi hedefler.
https://github.com/fatmabirel/autogo-backend
charp dotnet fluentvalidation jwt jwt-authentication rentacar rental-management rentalsystem
Last synced: 4 months ago
JSON representation
Bu proje, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir. Projemiz, araç kiralama sürecini daha hızlı ve güvenli bir deneyim haline getirmeyi hedefler.
- Host: GitHub
- URL: https://github.com/fatmabirel/autogo-backend
- Owner: Fatmabirel
- Created: 2024-08-27T06:13:49.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-09T18:39:02.000Z (about 1 year ago)
- Last Synced: 2025-04-14T12:58:45.602Z (6 months ago)
- Topics: charp, dotnet, fluentvalidation, jwt, jwt-authentication, rentacar, rental-management, rentalsystem
- Language: C#
- Homepage:
- Size: 609 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AutoGO: Araç Kiralama Sistemi 🚗
Bu proje, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir.
📌Projenin frontend kısmına buradan ulaşabilirsiniz.
#### GEREKSİNİMLER 🛠
- [x] Web projesi:

- [x] Veri tabanı:

- [x] Dökümantasyon için:

#### PROJEDE KULLANILAN TEKNOLOJİLER VE KÜTÜPHANELER 🛠️
![]()
![]()
![]()
![]()
![]()
#### 📫 NASIL BİR PROJE OLUŞTURDUK?
Projemiz, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir. Bu proje, kullanıcı deneyimini ön planda tutarak, araç kiralama sürecini hem hızlı hem de verimli hale getirmeyi amaçlamaktadır.
## PROJE DETAYLARI📝
Projemiz, .Net ve Angular teknolojilerini içeren modern bir web uygulamasıdır. Projemizde MsSQL kullanılmış olup, dökümantasyon için Swagger entegrasyonu sağlanmıştır.
Projemizde veritabanı işlemleri için **Entity Framework** kullanılmış ve **Database First** yaklaşımı benimsenmiştir.
Ek olarak, projede şu önemli kütüphaneler ve araçlar kullanılmaktadır:
- **FluentValidation**: Veri doğrulama süreçlerini yönetmek için.
- **JWT (JSON Web Token)**: Kimlik doğrulama ve yetkilendirme işlemlerini güvenli bir şekilde gerçekleştirmek için.Bu sayede, projemiz yüksek performanslı, kolay yönetilebilir ve güvenli bir mimariye sahip olmuştur.
🎯Projede veri tabanı bağlantı yolu RentACarContext içinde yazılmıştır.
```c#
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=DESKTOP-Q270QVE\\SQLEXPRESS;Database=ReCap;Trusted_Connection=True;TrustServerCertificate=True;");
}
```🔒 Projemizin katmanları aşağıda gösterilmiştir:
-----------------------------------------------------------------------
## 🌱ENTITY KATMANI✎ Entityler Entity katmanında oluşturulmuştur. Aşağıda örnek olarak Brand Entity dosyasını görebilirsiniz. Her class için gereksiz kod tekrarını önlemek adına base class olan Entity sınıfından miras alır. Diğer entityleri projenin içerisinde inceleyebilirsiniz.
Oluşturulan Entityler
- ⚡Brand, marka bilgilerini tutar.
- ⚡Car, araba bilgilerini tutar.
- ⚡CarImage, araba resimleri bilgilerini tutar.
- ⚡Color, renk bilgilerini tutar.
- ⚡Customer, müşteri bilgilerini tutar.
- ⚡OperationClaim, rol bilgilerini tutar.
- ⚡Rental, araba kiralama bilgilerini tutar.
- ⚡User, kullanıcı bilgilerini tutar.
- ⚡UserOperationClaim, kullanıcı rol bilgilerini tutar.
```c#
public class Brand : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
```
-----------------------------------------------------------------------
## 🌱DATA ACCESS KATMANIData Access katmanı, uygulamanın veri tabanı ile olan etkileşimini düzenleyerek, veri saklama işlemlerinin güvenli ve etkili bir şekilde yönetilmesini sağlayan katmandır.
✎ Data Access katmanında, oluşturulan Entity sınıflarını veri tabanı modellerine karşılık gelecek olan tabloların oluşturulması için RentACarContext sınıfı bulunmaktadır. Ayrıca bu katmanda veri tabanı işlemlerini gerçekleştirmek için oluşturulan repository sınıfları bulunmaktadır.
📌 Aşağıda RentACarContext sınıfı örnek olarak verilmiştir. Diğer sınıfları projeden inceleyebilirsiniz.
```c#
public class RentACarContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=DESKTOP-Q270QVE\\SQLEXPRESS;Database=ReCap;Trusted_Connection=True;TrustServerCertificate=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasKey(c => c.Id);
}public DbSet Cars { get; set; }
public DbSet Brands { get; set; }
public DbSet Colors { get; set; }
public DbSet Users { get; set; }
public DbSet Customers { get; set; }
public DbSet Rentals { get; set; }
public DbSet CarImages { get; set; }
public DbSet OperationClaims { get; set; }
public DbSet UserOperationClaims { get; set; }
}
```
-----------------------------------------------------------------------
## 🌱BUSINESS KATMANI
🌕 Business katmanında, uygulamanın iş kodları, iş kuralları ve doğrulama (validation) işlemleri yapılmaktadır. Ayrıca, iş kurallarını uygulayan ve veri doğrulamasını gerçekleştiren sınıflar burada bulunur.📃 Aşağıda Fluent Validation kütüphanesi kullanılarak Brand Entity için oluşturulan validator sınıfı örnek olarak verilmiştir. Diğer sınıfları projeden inceleyebilirsiniz.
```c#
public class BrandValidator : AbstractValidator
{
public BrandValidator()
{
RuleFor(b=>b.Name).NotEmpty();
RuleFor(b=>b.Name).MinimumLength(2);
}
}
```
🔎 Böylece daha Controller tarafında istek atılmadan requestlerin istenilen kurallara uygun olup olmadığı kontrol edilir.-----------------------------------------------------------------------
## 🌱WEBAPI KATMANI⚓ Bu katmanda işlemlerin gerçekleştirildiği Controller sınıfları oluşturulur. Aşağıda BrandsController dosyasının kodları örnek olarak gösterilmiştir.
```c#
[Route("api/[controller]")]
[ApiController]
public class BrandsController : ControllerBase
{
IBrandService _brandService;
public BrandsController(IBrandService brandService)
{
_brandService = brandService;
}[HttpGet("GetAll")]
public IActionResult GetAll()
{
var result = _brandService.GetAll();
if(result.Success)
{
return Ok(result);
}
return BadRequest(result);
}[HttpGet("GetById")]
public IActionResult GetById(int id)
{
var result = _brandService.GetById(id);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result);
}[HttpPost("Add")]
public IActionResult Add(Brand brand)
{
var result = _brandService.Add(brand);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result);
}[HttpPost("Update")]
public IActionResult Update(Brand brand)
{
var result = _brandService.Update(brand);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result);
}[HttpPost("Delete")]
public IActionResult Delete(Brand brand)
{
var result = _brandService.Delete(brand);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result);
}
}
//diğer metotlara proje kodlarından ulaşabilirsiniz.
```Projede 9 adet Controller sınıfı bulunmaktadır. Proje isterlerine göre eklenen Controller sınıfları ise şunlardır;
- ⚡ AuthController, yetkilendirme işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ BrandsController, marka işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ CarsController, araba işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ CarImagesController, araba resimleri işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ ColorsController, renk işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ CustomersController, müşteri işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ RentalsController, araba kiralama işlemlerinin gerçekleştirildiği sınıftır.
- ⚡ UsersController, kullanıcı işlemlerinin gerçekleştirildiği sınıftır.Görüşürüz 🎉