Konu: Ürün Katalog Projesi
Bu proje c# dili ile .Net Core 5.0 Framework'u ile gelistirlimis bir backend projesidir.
- Asp .Ner Core WebAPI
- EntityFramework Core
- Autofac
- FluentValidation
- RabbitMQ
- Docker
- PostgreSQL
- 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
- 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.
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.
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.
Address add ve update methodları validation gerektirir. Bu yüzden adresinize mutlaka bir ad vermeli , il ,ilçe ve bina no'yu girmelisiniz.'
Delete işlemi için adress kısmında Id girilmesi yeterli olacaktır
Bu methodu çalıştırabilmek için Admin rolüne sahip bir kullanıcı girişi gerekmektedir.
Bu method giriş yapmış kullanıcının claims bilgilerinden userId bilgisini alır ve kaydetmiş olduğu adresleri getirir. <br/
Daha önce bu kullanıcı bu ürüne teklif yapmışsa bu yanıtı alır
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.
Eğer teklif satıcı tarafından kabul edilmiş ise satışa dönüşmüştür ve offer olarak iptal edilemez.
Satıcı yapılan teklifi reddettiğinde teklifi yapan kişiye bilgilendrime maili iletilir.
Kullanıcının eklemiş olduğu ürünlere yapılan teklifleri gösterir.
Kullanıcının yapmış olduğu teklifleri gösterir.UserId yi claimsten otomatik alır.
Admin'in tüm teklifleri görmesini sağlar.
Kullanıcının eklemiş olduğu, satıştaki ürünleri gösterir.
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.
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.
Kullanıcının yapmış olduğu satınalmaları gösterir.