Skip to content

160-Sodexo-NET-Bootcamp/bitirmeprojesi-ipekserttas99

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

Sodexo Bitirme Projesi - Ürün Katalog Projesi ✈️

İsterler 👒

Üye Ol Detayları

• Kullanıcılar sisteme uye olabilmeli. Kayit isleminde alinan bilgiler eksiksiz olmali ve validate edilmeli. Email bilgisi gecerli olmali. • Kayit sirasinda kullanici sifresi sifrelenmis sekilde databasede saklanmali. • Ayni sifreye sahip kullanicilarin hashelenmis sifreleri mutlaka farkli olmali. (Tuzlama). • Sifreler geri cozulemeyecek sekilde sifrelenip saklanmali. • Email valid olmalı. • En az 8 ve en fazla 20 karakter uzunluğunda bir password girilmeli. • İşlem başarısız ise kullanıcıya tasarıma göre hata mesajı gösterilmeli. • İşlem başarılı ise API'den basarili mesaji gonderilmeli ve Hosgeldiniz Email i gonderilmeli.

Üye Girişi Detayları

• Kullanıcılar burden üye girişi yapabilmeli. • Email ve Password alanları zorunlu alanlar olmali. Bos yada gecersiz gonderilirse uyari verilmeli. • Email ve Password alanlarının validasyonu yapılmalı. • Email valid olmalı ve en az 8 ve en fazla 20 karakter uzunluğunda bir password girilmeli. • İşlem başarısız ise kullanıcıya hata mesajı gösterilmeli. • İşlem başarılı ise API'de JWT token uretilmeli ve tüm authantication gerektiren requestlerde header'a Bearer token olarak eklenmeli. • 3 kez parolanin yanlis girilmesi durumunda hesabi bloke ediniz ve kullaniciya bilgilendirme maili gonderiniz.

Kategori Detayları

• Tüm kategoriler listelenmeli • Kullanıcı kategori id ile api call yaptiginda kategori altindaki ürünler kategoriye göre filtrelenmeli, default olarak tüm ürünler çekilmeli. • Yeni kategori eklenebilmeli veya mevcut olan guncellenebilmeli.

Ürün Detayları

• Teklif Ver apisi üründen gelen data içerisindeki isOfferable alanına gore control edilmeli. • isOfferable durumunun saglanmadigi takdirde teklif verilememeli. • Teklif Ver apisi ile kullanıcı kendisi teklif girebilmeli. Teklif girme alanı number olmalı ve buraya validasyon eklenmeli. • ayrica Teklif degeri yuzdelik olarak api tarafına yollanabilmeli (offeredPrice), mesela, 100₺ olan ürün için %40 değeri seçilirse, 40₺ teklif yapılabilmeli. • Eğer bir kullanıcı bir ürüne teklif verdiyse, o ürünün icin teklifini geri cekebilmeli. Verdigi teklif yoksa kullanicilar bilgilendirilmeli. • Kullanıcı teklif yapmadan bir ürünü direk satın alabilir. Kullanıcı ürünü satın alınca, ilgili ürün datası içerisindeki isSold alanının değeri guncellenmeli.

Hesabım Detayları

• Kullanicinin yaptigi offer lar listelenmeli. • Kullanicinin urunleri icin aldigi offer lar listelenmeli. • Alınan tekliflere Onayla ve Reddet ile cevap verilebilmeli. • Verilen teklif onaylandığında satin alma icin uygun duruma getirilmeli. • Ürün detay daki gibi Satın Al tetiklenince statu guncellenmeli. Satın Al'a tetiklenince Teklif Verdiklerim listesindeki ürünün durumu güncellenmeli.

Ürün Ekleme Detayları

** İlgili validasyonlar eklenmeli: • Ürün Adı alanı maksimum 100 karakter uzunluğunda olmalı ve zorunlu bir alan olmalı. • Açıklama alanı maksimum 500 karakter uzunluğunda olmalı ve zorunlu bir alan olmalı. • Kategori alanı ilgili endpointten çekilen kategorileri listelemeli ve en fazla bir kategori seçilebilmeli. Bu alan zorunlu bir alan olmalı. • Renk alanı ilgili endpointten çekilen renkleri listelemeli ve en fazla bir renk seçilebilmeli. Bu alan zorunlu bir alan olmamalı. • Marka alanı ilgili endpointten çekilen markaları listelemeli ve en fazla bir marka seçilebilmeli. Bu alan zorunlu bir alan olmamalı. • Kullanım Durumu alanı ilgili endpointten çekilen kullanım durumlarını listelemeli ve en fazla bir kullanım durumu seçilebilmeli. Bu alan zorunlu bir alan olmalı • Ürün Görseli alanından en fazla bir ürün görseli eklenmeli. Eklenen ürün görseli istenildiği zaman silinebilmeli. Bu alan zorunlu bir alan olmalı. • Fiyat alanı number olmalı ve zorunlu bir alan olmalı. • Teklif Opsiyonu alanı boolean bir değer olmalı ve default olarak false olmalı.

Email Servisi

• Email gonderme islemlerini Sync olarak gonderecek bir tasarim yapmayiniz. • Email ler bir kuyruk tablosunda toplanmali ve bir process ordan email gonderimi yapmali. • Database,kafka, rabbitmq vs uzerinde kuyruklama islemi yapabilirsiniz. • Hangfire gibi servisler kullanarak da yapabilirsiniz. • Kuyruga gelen her email in en gec 2sn icerisinde process edilmeli. • Gonderilen email ler in status durumunu guncelleyiniz. • Try count ile basarisiz olmasi durumunda terkar gondermesini saglayiniz. • 5 kez deneyip basarisiz olan kayitlari Farkli bir statuye cekerek guncelleyiniz. • Smtp entegrasyonu yaparak mail gonderimini saglayiniz. • Smtp hizmetinin calisir sekilde oldugundan emin olunuz.

Authorize kısmına tokenımızın başına Bearer ve bir boşluk bırakarak giriyoruz. Register ve Login endpointleri haricinde bütün endpointler authorize istiyor 🌺

alt text

Üye olma 🌺 Bilgilerimizi validasyona uygun girip execute ettiğimizde access token'ımız ve userid'miz dönecektir.

alt text

Üye olduktan saniyeler içinde Hoşgeldiniz maili gelir;

alt text

Giriş yapma 🌺 Bilgilerimizi doğru girdiysek 'Giriş başarılı!' mesajı döner. 3 kez yanlış girdiysek hesabımız bloke olup silinir ve bize bilgilendirme maili gelir.

alt text alt text

Hangfire dashboard'da mail atmak için kullandığımız Job'lar başarılı kısmında görünüyor;

alt text

Tüm kategoriyi listeleme 🌺

alt text

Kategori id'si ile listeleme🌺

alt text

Kategori create etme🌺

alt text

Kategori update etme🌺

alt text

Kategori silme🌺

alt text

Kullanıcının yaptığı teklifleri listeleme. 🌺 ‼️ username'e gerek yoktu ancak bir controller'da 2 Get metodu olduğu için çalışması için parametre ekledim. ‼️

alt text

Kullanıcının aldığı teklifleri listeleme🌺

alt text

Verilen teklifi kabul etme🌺

alt text

Teklif yapma 🌺 Body'nin içindeki isOfferPercentage'ı true yapıp offeredPrice'ı da yüzdelik verirsek (örneğin 20 => %20) teklifler tablosuna fiyat üzerinden yüzde hesabı yaparak düşer. Aşağıda görüldüğü gibi teklifi yapılan ürün %30'u düşülerek tabloya kaydolmuştur.

alt text

Eğer Body'nin içindeki isOfferPercentage'ı false yapıp offeredPrice'ı verirsek teklifler tablosuna ne fiyat teklif ettiysek o düşer.

alt text

Verilen teklifin geri çekilmesi🌺

alt text

Eğer kullanıcı kendine ait olmayan teklifi silmek isterse şu şekilde hata verecektir;

alt text

Ürün ekleme🌺

alt text alt text alt text

Ürün satın alma🌺

alt text

Eğer satın alınmış bir ürünü satın almaya kalkarsak şöyle bir hata alırız;

alt text

About

bitirmeprojesi-ipekserttas99 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages