Skip to content

About

final-BekirK-C created by GitHub Classroom

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

Review Assignment Due Date Simpra Bootcamp Final-Project

  • 7 haftalık Simpra bootcamp sürecinin sonunda verilen bitirme projesidir.
  • Proje SOLID prensiplerine uygun bir şekilde hazırlanmıştır.
  • Güvenlik için JWT entegre edilmiş, bağımlıklıkları çözmek için Autofac kullanılmış ve hatalar SeriLog ile loglanmıştır.

Aşağıdaki teknolojiler kullanılmıştır

C-Sharp Asp-net MSSQL Entity-Framework Autofac Fluent-Validation

Projeyi çalıştırmak için

  • Github'dan projeyi clone'layıp bilgisayarda projeyi başlattıktan sonra ilk olarak DataAccess>Context>SimpraProjectContext içerisinde connectionString bağlantısı güncellenmelidir.
  • Migration işlemi gerçekleştirilip veri tabanı tabloları oluşturulmalıdır. (Örnek "add-migration init_mig")
  • Proje içerisinde admin/customer rolleri bulunmaktadır. Veri tabanına ilk admin kullanıcı kaydı için birkaç TSQL kodu MSSQL'de çalıştırılmalıdır.
  • Aşağıdaki kod bloğunu MSSQL’de çalıştırarak OeprationClaims tablosu oluşturulur. (id=1-”admin” id=2-”customer” olması programın düzgün çalışabilmesi önem arz etmektedir)
    USE TestOne;
    INSERT INTO OperationClaims(Name)
    VALUES ('admin'), ('customer');
  • Aşağıdaki kod bloğunu çalıştırarak ilk kullanıcıyı admin olarak eklemiş oluyorum.
    UPDATE Users SET [Status] = 'Admin' WHERE Id = 1
    UPDATE UserOperationClaims SET OperationClaimId = 1 WHERE Id = 1
  • Bu şekilde ilk kullanıcı admin olarak eklenmiş olur.

Veri tabanına örnek veriler eklemek için (İsteğe bağlı)

  • Örnek ürün ve kategori verileri eklemek için önce aşağıdaki kodu çalıştırıp örnek kategori verileri eklenir.
    INSERT INTO Categories (Name, Description, CreatedAt) VALUES
    ('Category 1', 'Description of Category 1', GETDATE()),
    ('Category 2', 'Description of Category 2', GETDATE()),
    ('Category 3', 'Description of Category 3', GETDATE());
  • Kategori ekleme işleminden sonra aşağıdaki kod bloğunu çalıştırarak örnek ürün verileri eklenir. (FK çakışmasından dolayı önce kategori sonrasında ürün eklenmelidir)
    INSERT INTO Products ([Name], [Description], CategoryId, Price, Stock, MaxPoint, PointPercentage, CreatedAt) VALUES
    ('Product 1', 'Description of Product 1', 1, 10.5, 100, 10, 15, GETDATE()),
    ('Product 2', 'Description of Product 2', 1, 15, 500, 5, 10, GETDATE()),
    ('Product 3', 'Description of Product 3', 2, 7.8, 200, 15, 20, GETDATE()),
    ('Product 4', 'Description of Product 4', 2, 30, 150, 10, 15, GETDATE()),
    ('Product 5', 'Description of Product 3', 3, 21, 80, 15, 30, GETDATE()),
    ('Product 6', 'Description of Product 4', 3, 9, 340, 12, 25, GETDATE())

Proje Hakkında

  • Dokümantasyon Swagger ile gerçekleştirilmiştir. Tüm action'ların açıklaması yapılmış ve Post işlemlerinde örnek veriler eklenmiştir.
  • "Admin" ile başlayan tüm controller endpoint'leri sadece "admin" role sahip kullanıcılar tarafından istek atılabilmektedir.
  • Ürün/kategori listeleme ve admin/customer-login harici tüm istekler Authenticate gerektirmektedir.
  • Giriş yapıldıktan sonra 30 dk'lık token süresi bulunmaktadır.
  • Alışveriş yapmak için öncelikle ürünler sepete eklenmeli ardından sepetteki ürünlerin siparişi verilmelidir.
  • Para kullanıcının sanal cüzdanından çekilmektedir. Eğer sanal cüzdanda yeterli para yoksa sanal cüzdana para ekleme işlemi kredi kartı ile yapılmalıdır.

Proje İş Akışı

  • Sistemde "admin" ve "customer" olmak üzere iki farklı kullanıcı rolü vardır. Admin kullanıcılar admin-login ile giriş yapabilir, sisteme başka bir admin kullanıcı ekleyebilir.
  • Admin role sahip kullanıcılar sistemde Ürün/kategori/müşteri/kupon ekleme/güncelleme/silme işlemlerini gerçekleştirebilmektedir.
  • Müşteriler sisteme customer-register sayfasından kayıt olup customer-login sayfasından giriş yapabilmektedir.
  • Herhangi bir ürün siparişinde önce sepete ekleme işlemi gerçekleştirilir. Bu aşamada sepette düzenleme yapılabilir.
  • Eğer müşteri sanal cüzdanında yeterli para varsa satın alma işlemi için place-order isteği atılır. Bu aşamada müşteri kupon girebilir ayrıca varsa daha önce kazandığı puanlar ödeme tutarından düşürülür.
  • Eğer kupon ve önceki siparişlerden kazanılan puan parası yeterli değilse kredi kartı bilgileri ve para miktarı ile addmoney-towallet isteği atılarak sanal cüzdana para ekleme işlemi gerçekleştirilir.
  • Müşteri ürün bilgisinde bulunan miktar kadar, sanal cüzdanından ödediği net miktar üzerinden puan kazanabilir.
  • Önceki siparişte kazanılan puanlar sonraki siparişte para olarak kullanılır.

İstekler ve teslim kriterleri

  • Tüm istekler ve proje teslim kriterleri tamamlanmıştır.

İletişim

Mail: b.b.kamac@gmail.com

About

final-BekirK-C created by GitHub Classroom

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages