Bu proje Patika-Sodexo .NET Core Bootcamp bitirme projesidir.
- C#
- ASP .NET CORE Web Api
- MSSQL
- Entity FrameWork Core
- AutoMapper
- Fluent Validation
- Autofac
- Hangfire
- JWT
- İhtiyaçlar
- Projeyi github'dan kendi bilgisayarınza yükleyiniz.
appsettings.json veritabanı ve hangfire veritabanı bağlantı ayarlarını kendinize göre yapılandırın.
git clone https://github.com/160-Sodexo-NET-Bootcamp/bitirmeprojesi-codearct.git
- Redis
- Redis msi paketini indiriniz.Paketi indirdikten sonra kurulumu yapınız.
Terminal üzerinden
komutuyla redisi çalıştırın.
redis-server
- Docker üzerinden redis kurulumu için :
terminalde çalıştırarak yükleme işlemini yapınız.
docker run --name my-redis -p 6379:6379 -d redis
komutu ile redis-server çalışma durumunu kontrol edebilirsiniz.docker ps
- Redis msi paketini indiriniz.Paketi indirdikten sonra kurulumu yapınız.
Terminal üzerinden
- Projeyi github'dan kendi bilgisayarınza yükleyiniz.
- Çalıştır
- İlgili dizine giderek
Terminal üzerinden
Your path\ByCell\WebAPI
komutuyla ana projemiz olan Web Api projemizi ayağa kaldıralım.Projedotnet watch run
portunda ayağa kalkacak.http://localhost:1923/
- Arka plan işlemleri için Hangfire
dizinine gidilerek.Terminalden
Your Path\ByCell\BackgroundServicesAPI
komutuyla ayağa kaldırılır.Hangfiredotnet watch run
port ve uç noktasında ayağa kalkacaktır.http://localhost:1922/bycellhangfire
- İlgili dizine giderek
- Proje 3 temel ve 4 yardımcı katman olmak üzere 7 katmandan oluşmaktadır.
- Üye kayıt ve giriş katmanı
- Ürün katmanı
- Kategori,renk,marka ve kullanım durumu katmanları ürün oluştururken kullandığımız yardımcı katmanlardır.
- Teklif katmanı
- Kullanıcı kayıt işlemleri
- Kullanıcılar sisteme üye olabilirler.
- Ad ve soyad alanı boş bırakılamaz.
- Email valid olmalı.
- Şifre en az 8 en fazla 20 karakter uzunluğunda olmalı.
- Validasyonlar geçilirse kullanıcıya başarılı bir mesaj dönülür.
- "Hoşgeldiniz" maili gönderilir.
- Validasyonlar geçilemezse validasyona bağlı olarak kullanıcıya hata mesajı dönülür.
- Kullanıcı şifreleri veritabanında hashing ve aynı şifreye sahip kullanıcılar için salting uygulanarak gizlenmiş olarak tutulur.
- Kullanıcılar sisteme üye olabilirler.
- Kullanıcı Giriş İşlemleri
- Kullanıcılar sisteme giriş yapabilirler.
- Email boş olamaz ve valid olmalı.
- Şifre boş olamaz; en az 8 en fazla 20 karakter uzunluğunda olmalı.
- Giriş işlemi başarılı ise token ve refresh token üretilir.
- Swagger Authorize sekmesi üzerinden tüm kimlik doğrulama gerektiren isteklerde Header'a Bearer token eklenir.
- Belirli bir süre sonra geçersiz olan token için kullanıcıya verilen refresh token ile yeni bir token üretilir.Üretilen bu token ile kullanıcı işlemlerine devam edebilir.
- Şifrenin 3 kez yanlış girilmesi durumunda hesap bloke edilir.
- Kullanıcıya bilgilendirme maili atılır.
- Kullanıcılar sisteme giriş yapabilirler.
- Ürün Ekleme
- Kullanıcı ürün eklemek için kayıt olmalı ve giriş yapmalıdır.
- Ürün adı alanı doldurulması zorunlu bir alandır.En fazla 100 karakter uzunluğunda olmalı.
- Açıklama alanı doldurulması zorunlu bir alandır.En fazla 500 karakter uzunluğunda olmalı.
- Kategori katmanından kategoriler listelenmeli ve en fazla bir kategori seçilmelidir.
- Renk katmanından renkler listelenmeli ve en fazla bir renk seçilmelidir.Bu alan kullanıcı için doldurulması zorunlu bir alan değildir.
- Marka katmanından markalar listelenmeli ve en fazla bir marka seçilmelidir.Bu alan kullanıcı için doldurulması zorunlu bir alan değildir.
- Kullanım durumu katmanından kullanum durumları listelenmeli ve en fazla bir kullanım durumu seçilmelidir.Bu alan kullanıcı için doldurulması zorunlu bir alandır.
- Fiyat alanı sayı olarak doldurulması zorunlu bir alandır.
- Kullanıcı ürün için aradığı kategori,renk,marka,kullanım durumunu ilgili katmanlarda bulamadığında kendisi ekleyebilir.
- Ürün Resmi Ekleme
- Kullanıcı ürün ekleme işlemini tamamladıktan sonra ilgili ürün için resim ekleyebilir.
- Diğer Ürün İşlemleri
- Kullanıcılar giriş yapmadan tüm ürünleri listeyebilirler.
- Kullanıcılar giriş yapmadan istedikleri ürünün detaylarına ulaşabilirler.
- Kullanıcılar giriş yaptıktan sonra kendi ürünlerine ulaşabilirler.
- Kullanıcılar giriş yaptıktan sonra sadece kendilerine ait ürünlerde değişiklik yapabilir veya silebilirler.
- Kullanıcılar giriş yaptıktan sonra kendilerine ait olmayan diğer ürünleri satın alabilirler.
- Teklif Ver
- Kullanıcının teklif verebilmesi için giriş yapmalıdır.
- Üründen gelen teklife açık olma durumuna göre kullanıcılar ürünlere teklif verebilirler.
- Teklif verme ya direk fiyat girerek olmalı ya da ürün fiyatı üzerinden yüzdelik teklif verilmeli.(100 TL olan bir ürün için 40 girilirse 40 TL teklif yapılmış olunur.)
- Diğer Teklif İşlemleri
- Kullanıcılar giriş yaptıktan sonra verdikleri teklifleri listeleyebilirler.
- Kullanıcılar giriş yaptıktan sonra kendi ürünlerine gelen teklifleri ürün bazlı listeleyebilirler.
- Teklif gelen ilgili ürün sahibi teklifi onaylayabilir ya da reddebilir.
- Onaylanan teklifler satın alınmış olarak güncellenir.
- Teklifler ilgili kullanıcılar tarafından güncellenip tekrar tekrif verilebilir veya teklif geri çekilebilir.
- Email servisi bir arka plan işi olarak Hangfire üzerinden yapılmaktadır.
- İki email gönderimi vardır.
- Kullanıcı giriş yaptığında "Hoşgeldiniz" maili göndermek.
- Kullanıcı 3 kez şifresini yanlış girdiğinde hesabının bloke olduğuna dair bilgilendirme maili göndermek.
- Emailler veritabanında bir kuyrukta toplanır.
- 2 saniyede bir tekrar eden iş olarak çalışan ve durumu "Beklemede" olan ilk 10 mail Hangfire tarafından veritabanından çekilerek gönderilir.
- Başarıyla gönderilen maillerin durumu "Gönderildi" olarak güncellenir.
- Gönderimi başarısız olan mailler 5 kez tekrar denendikten sonra durumu "Başarısız" olarak güncellenir ve kuyruktan çıkarılır.
- Kullanıcının şifresini 3 kez yanlış girme ve gönderimi başarısız olan maillerin tekrar denenme sayısı "Redis" üzerinden tutulur.