Visual Studio 2022, .Net 5.0 ve Sql Server 2019 kullandım.
- Sunucuda "Final" ve "FinalHangfire" isimlerinde iki veri tabanı oluşturun. "script.sql" dosyasını çalıştırın.
- Betik çalıştığı zaman "Final" veri tabanı içinde Brand, Category, Color, Offer, Product, User, UsingStatus tabloları oluşur.
- Web projesindeki ve Hangfire projesindeki appsettings.json içindeki ConnectionStrings alanının değerini düzenleyin.
- Web projesindeki appsettings.json içindeki UploadsPath alanının değerini düzenleyin. Yüklenen ürün görselleri burada belirtilen klasöre kaydedilecektir.
- Rabbitmq indirin ve çalıştırın.
- Web projesi ve Hangfire projelerini ayrı ayrı koşturun.
- Kimlik doğrulama : Jwt
- Girilen bilgilerin istenilen formata uygunluğunu kontrol : FluentValidator
- E-posta gönderimi :
- Kuyruk : Rabbitmq
- E-postaların arka planda kuyruktan çekilerek gönderilmesi : Hangfire
- Gönderim: MailKit
- Veriye erişim : EntityFramework, GenericRepository ve UnitOfWork modelleri
- Projede ek olarak parola değiştirme imkanı bulunuyor.
- Ürün görselini Swagger'dan dosya yükleme ile almayı hedefledim. Yüklenen dosyayı sunucuda bir klasöre kaydedip dosya yolunu veri tabanına kaydediyorum. Dosyayı FromForm şeklinde alabildim. Fakat ürün eklemede aynı endpointte hem FromBody hem FromForm kullanmak sorun çıkardı. Bu sebeple ürün oluşturulurken görseli alamadım. Onun yerine /UpdateImage/{productId} şeklinde bir endpoint ekledim. Bu endpointten ürünlerin görselleri yüklenebilir.
- Kullanıcının yaptığı teklifler /Offer altında, kendisine gelen teklifler ise /IncomingOffer altında değerlendiriliyor.
- Kullanıcı yaptığı teklifi Delete /Offer/{id} ile geri çekebilir.
- Satın alma endpointi ürün id'si alıyor. Eğer kullanıcının o ürün için kabul edilmiş bir teklifi varsa o teklife göre fiyatı belirliyor. Yoksa, olduğu fiyattan satıyor.
- Gelen teklifler Put /IncomingOffer/{id} ile cevaplanır.