PatikaBitirme-EticaretApp


Konu: Ürün Katalog Projesi
Bu proje c# dili ile .Net Core 5.0 Framework'u ile gelistirlimis bir backend projesidir.

Kullanilan Teknolojiler

  • Asp .Ner Core WebAPI
  • EntityFramework Core
  • Autofac
  • FluentValidation
  • RabbitMQ
  • Docker
  • PostgreSQL

Kullanilan Teknikler

  • Layered Architecture Design Pattern
  • Repository Design Pattern
  • Restful API
  • Result Types
  • Interceptor
  • Autofac
  • AOP, Aspect Oriented Programming
  • Caching
  • Validation
  • Fluent Validation
  • Cache Management
  • JWT Authentication
  • Cross Cutting Concerns
  • Extensions
  • Claims
  • Service Collection
  • Error Handling
  • Validation Error Details
  • SeriLog
  • IOC
  • File Upload
  • Migration
  • Authorization
  • Roles

Kurulum için gerekenler


  • Docker : Dockerda bir RabbitMQ container oluşturmalısınız. RabbitMQ erişim bilgilerinizi appsettings.json dosyasındaki ilhili bölümlere girmelisiniz
  • Dockerda oluşturduğunuz bu container i run ettikten sonra backend projesini açınız.
  • Proje için Database oluşturulması gereklidir. Bu projede PostgreSQl tercih edilmiştir.
  • Kendi Database erişim bilgilerinizi appsetting.json dosyassındaki ilgili yere giriniz.
  • Daha sonra migration oluşturmak için Visual studioda Packaga Manager Console'u açınız. Bilmeyenler için sol üstteki View>other Windows>Packaga Manager Console.
  • Packaga Manager Console 'da DataAccess'i seçiniz'(deffault olarak WebApi seçilidir) ve Add-Migraiton mig_06 kodunu çalıştırınız . en son 05 yapıldığından dolayı 06 , sayıyı kendiniz belirleyebilirsiniz.
  • Migration başarılı bir şekilde gerçekleştikten sonra Update-Database komutunu çalıştırın. Bu komut da başarılı bir şekilde çallıştıysauygulamamız çalıştırılmaya hazır demektir.
  • Çalıştırmadan önce rabbitMQ 'nun Run - Çalışır halde olduğundan emin olunuz.

APILER


Bu api methodlarının büyük bir kısmı yetkilendirme gerektirmektedir. Add,Delete Update methodlarının tamamı ve, özel verlere erişimgerektiren methodlar kullanıcı girişi gerektirmektedir.


Auth Controller


Auth - Register


Senaryo 1: Kullanılmakta olan bir kullanıcıadı veya email ile kayıt olmaya çalışmak.


Senaryo 2: Başarılı Kayıt


Senaryo 3: Başarılı Kayıt - Gönderilen Kayıt Emaili


Senaryo 4: Kayıt Bilgileri Validasyonları


Senaryo 4: Kayıt Bilgileri Validasyonları



Auth - LoginWithEmail - Unregistered Email - User Not Found



Auth - LoginWithEmail - Invalid Email



Auth - LoginWithUserName - Successful Login



Auth - LoginWithUserName - UserNotFound



Auth - Login - 3 kez Hatalı Giriş - Account Suspended Maili


Bu methodda kullanıcı parolasını 3 kez hatalı girerse hesabı 10 dk süreyle askıya alınır ve bilgilendirme emaili gönderilir.



Authorization Token Entrance



Authorization Token Entrance




Address Controller


Address add ve update methodları validation gerektirir. Bu yüzden adresinize mutlaka bir ad vermeli , il ,ilçe ve bina no'yu girmelisiniz.'

Address - Add



Address - Delete


Delete işlemi için adress kısmında Id girilmesi yeterli olacaktır



Address - Update



Address - GetAll


Bu methodu çalıştırabilmek için Admin rolüne sahip bir kullanıcı girişi gerekmektedir.



Address - GetByUserId


Bu method giriş yapmış kullanıcının claims bilgilerinden userId bilgisini alır ve kaydetmiş olduğu adresleri getirir. <br/



Brand Controller


Brand - Add



Brand - Delete



Brand - Update



Brand - GetAll



Brand - GetByBrandId




Category Controller


Category - Add Failed - Admin Required



Category - Add



Category - Delete




Category - Update



Category - GetById



Category - GetAll




Colors Controller


Colors - Add - Admin Required



Colors - Delete



Colors - Update



Colors - GetById



Colors - GetAll




Offers Controller


Offers - Add/Make - Failed


Daha önce bu kullanıcı bu ürüne teklif yapmışsa bu yanıtı alır


Offers - Add/Make - Accept


Teklif kabul edildiğinde eğer aynı ürüne teklif yapmış başka kullanıcılar varsa onlara , otomatik olarak decline işlemi uygulanır ve bilgilendirme maili iletilir.



Offers - Add/Make - Accepted Bilgilendirme Maili



Offers - Add/Make - Fail - Percentage Validation



Offers - Add/Make - 100 percent Directed To Purchase



Offers - Add/Make - ByAmount



Offers - Add/Make - ByPercentage



Offers - Add/Make - NotOfferableProduct



Offers - Delete/Cancel



Offers - Delete/Cancel - Fail


Eğer teklif satıcı tarafından kabul edilmiş ise satışa dönüşmüştür ve offer olarak iptal edilemez.



Offers - Decline



Offers - Decline Notification Mail


Satıcı yapılan teklifi reddettiğinde teklifi yapan kişiye bilgilendrime maili iletilir.



Offers - Decline Notification Mail



Offers - Update - CantBeUpdated



Offers - GetById



Offers - GetDetailsByOfferId



Offers - GetReceivedOffers


Kullanıcının eklemiş olduğu ürünlere yapılan teklifleri gösterir.



Offers - GetSentOffers


Kullanıcının yapmış olduğu teklifleri gösterir.UserId yi claimsten otomatik alır.



Offers - GetAll


Admin'in tüm teklifleri görmesini sağlar.




Products Controller


Products - Add



Products - Delete



Products - Update



Products - GetAll



Products - GetAllByBrandId



Products - GetAllByCategoryId



Products - GetByProductId



Products - GetMyProductsOnSale


Kullanıcının eklemiş olduğu, satıştaki ürünleri gösterir.



Products - GetProductDetailsByProductId


Filter ve expression yardımı ile çalışır.Kökü data acceste bulunan bu method ile her türlü product özelliğine göre arama yapılabilir.




ProductImages Controller



ProductImages - Add || Update Image Size Validation


ProductImage yüklenmesi için controller bir adet formfile dosyası türünde nesne , bir adet de productImage nesnesine ait bilgiler için form nesnesi istiyor. Svagger bu iki özelliği aynı aynda destekleyemediğinden Postman kullanılmalı. Jwt auth token girildikten sonra, resimdeki şekilde Add ve Update yapılmalıdır.



ProductImages - Add UnAuthorized



ProductImages - Add



ProductImages - Update



ProductImages - GetByProductId



ProductImages - GetByProductImageId



ProductImages - GetAll



Purchase Controller


Purchase - Add



Purchase - Cancel



Purchase - GetByPurchaseId



Purchase - GetMyPurchases


Kullanıcının yapmış olduğu satınalmaları gösterir.



Purchase - GetAll



Users Controller


Users - GetByMail



Users - GetByUserName



Users - UpdatePassword