YMS3132 Öğrencileri Tarafından Geliştirilmekte Olan bir E-Ticaret Sitesi Projesidir.
E-Ticaret sitesi olarak yazılan bu proje de kullanıcı sitede istediği kategorideki ürünler arasında dolaşabilir ve ürünlerde filtreleme yapabilir. Kullanıcı istediği ürünü sepetine atabilir ve istediğinde sepetinde hangi ürünlerin bulunduğunu ve toplam olarak ne kadar ödemesi gerektiğini görebilir. Satın alma işlemini yapmak istediğinde kart bilgilerini ve adresini girerek satın alma işlemini tamamlar.
- Ntier ve MVC Mimari
- Code First EAV modeli Veri Tabanı
- Mail Gönderme, Fotoğraf Yükleme ve Şifreleme Sınıfları
- Web Api Kullanımı: a) Kargo Api b) Loglama Api c) Fake Data Api
- Önyüz tasarımında Kullanılanlar: a) Javascript b) Ajax
- Admin Özel Sayfa (Urun ekleme vb. için)
- Member için sayfalar
- Proje Başlangıcında Projenin Mimarisini oluşturmak, gerekli sınıfları projeye entegre etmek ve referansları vermek
- Projenin yapılış zamanı sürecinde proje çalışanlarının yaptıkları işlemlerde onları gözlemlemek ve çıkan sorunlarda eğer takım arkadaşı o sorunu çözemiyorsa sorunun çözümünü devir alarak sorunu çözmek
- Takım arkadaşlarının psikolojik durumlarını göz önünde bulundurmak ve takım arkadaşlarına destekçi olmak
- Proje çalışanı kendi üzerine düşen görevi tamamladıktan sonra commit ve push işlemlerinden önce güncel projede çalıştığının teyidini almak ve projenin güncel versiyonunda çalıştığının onayını altıktan sonra commit etmesi sonucunda Master olarak projeyi o kişiden çekerek Master’i güncel tutmak.
Önemli Bilgi: Proje deki göreve başlarken master’ın söylediği zamanda başlamaya dikkat edilmelidir. Master’in sizin proje üzerinde çalıştığınızdan haberi olmalıdır. Önemli işlemleri (commit vb.) işlemler yapılırken master’a bilgi verilmeli ve onay beklenmelidir. Projeye başlarken projenin güncel halini master’dan çektiğinize emin olmalısınız.
- Ntier ve MVC mimarisinin kurulması
- Gerekli Framework’lerin indirilmesi
- Katmanlar arasında referansların verilmesi
- Web. Config’e bağlantı yazısının verilmesi
- Mail Gönderme, Fotoğraf Yükleme, Şifreleme Sınıflarının Yapılması
- Web sitesi görsellerinin MVCUI katmanında mevcut hale getirilmesi
- Katmanlardaki gerekli klasörlerin açılması (Design Patterns vb.)
- Veri tabanın Code First yazılması
- Veri tabanına EAV modelinin entegrasyonu
- Ürün ile Kategori arasında ilişkinin çoka çok olarak yapılması
- Veritabanı sınıflarının MAP katmanında düzenlenmesi(AppuserMap vb.)
- DAL katmanında MyContext sınıfının oluşturulup Veritabanı işlemlerini sonlandırmak. Connection name =”MyConnection”
- Strategy patterni
- BLL katmanında Repository’lerin oluşturulması
- İlk olarak Kargo Firmasının Web Api’si yazılacak
- Backend kodları yazılacak(Enes ile ortak çalışarak)
- İlk olarak Loglama Api’si yazılacak
- Ek veritabanı
- Backend kodları yazılacak(Tarık ile ortak çalışarak)
- Frontend Kodları yazılacak ve Gökhan ile birlikte ortaklaşa çalışacaklar.
- Frontend Kodları yazılacak ve Cem ile birlikte ortaklaşa çalışacaklar.
- Api Entegrasyonu E Ticaret
- Proje master’a gelmeden önce detaylı test işleminden geçecek.
- Bogus Dal katmanına yüklendi
- EntityFramework 6.2.0 BLL, COMMON, DAL, MAP, MVCUI katmanlarına yüklendi
- Microsoft. AspNet. WebApi. Client 5.2.7 MVCUI katmanına yüklendi
- BLL katmanı COMMON, DAL, MODEL katmanında referans aldı
- DAL katmanı MAP ve MODEL katmanında referans aldı
- MAP katmanı MODEL katmanından referans aldı
- MVCUI katmanı BLL, COMMON ve MODEL katmanında referans aldı.
- MVCUI katmanının Web. Config’e Connection String yazıldı name "MyConnection" olarak verildi.
- COMMON katmanına Mail gönderme, Fotoğraf yükleme, Şifreleme Sınıfları eklendi
- MVC FlatAdmin Eklendi
- Proje mimarisi hazır geldi.
- Gerekli FrameWorkler hazır geldi.
- Katmanlar arasındaki referanslar hazır geldi.
- Web.config bağlantısındaki düzenlemeler hazır geldi.
- Mail gönderme, fotoğraf yükleme, şifreleme sınıfları hazır geldi.
- Proje, Web sitesi görsellerinin MVCUI katmanına entegre edilmiş halde geldi.
- Katmanlardaki gerekli klasörler (design pattern, strategy pattern vs. gibi) hazır geldi.
-
Veri tabanı code-first ile yazıldı. (Veritabanı EAV modelinde hazırlandı): a) Projedeki enumslar oluşturuldu. b) Entities’ler hazırlandı. Hazırlanan sınıflar: a. Abstract BaseEntity sınıfı b. AppUser c. AppUserDetail (AppUser ile Bire bir ilişkili) d. Category e. Product (Category sınıfı ile Product sınıfı çoka çok ilişkili) f. Feature (özellik sınıfı=> Product sınıfı ile çoka çok ilişkili (junction table’ı => ProductFeature tablosu. Value değerleri bu tablo içerisinde) e.Order sınıfı (Product sınıfı ile çoka çok ilişkili. Junction table’i OrderDetail) c) Gerekli özellikler sınıflara verildi. d) Relational propertyler hazırlandı.
-
Veritabanı sınıfları MAP Katmanında düzenlendi. Birebir ve çok a çok tablolar için gerekli ayarlamalar hazırlandı. ColoumnName’ler Türkçeleştirildi. Gerekli coloumnTyplerin ayarlanmaları yapıldı.(datetime => datetime2 , decimal=> Money gibi)
-
DAL katmanında MyContext sınıfı oluşturuldu. Hazırlanan Map katmanları çağırıldı. Veritabanında tablolar oluşturuldu. Connection name ayarlamaları yapıldı.
-
BLL katmanında design patternler hazırlandı. İlk olarak; Singletton pattern projeye entegre edildi.
-
Unit of Works pattern olarak da bilinen, Repository pattern oluşturuldu. IntRep klasörü içerisine; IRepository interface ‘i hazırlandı/ eklendi.
-
BaseRep klasörünün içerisinde, abstract BaseRepository sınıfı oluştuldu. IRepository interface’inden miras verildi. İmplement edildi.
-
BaseReporsitory de gerekli Repository ayarlamaları yapıldı.:
a) Listelemeler:
- GetAll => Hepsini Listeler
- GetActives=> Aktifleri Listeler
- GetUpdates=> Güncellemeleri Listeler
- GetPassives=> Pasife çekilmişleri listeler
b) Modifikasyonlar:
- Add=> Ekleme metodu
- Update=> Güncelleme metodu
- Delete=> Pasife çekme metodu
- SpecialDelete=> Tamamen silme metodu
c) Queries:
- T GetByID(int id)=> id’Den yakala
- (Diğer kısımların isimlerinde herhangi bir değişiklik yapılmadı.)
- Diğer sınıflar için Respository sınıfları düzenlendi. Hazırlanan BaseRepository, bu sınıflara miras verildi.
- Strategy patterni oluşturuldu. Projeyle hazır hale gelen bogus’tan fake datalar çekildi. (AppUser, AppUserDetail, Product ve Category için fake datalar çekildi)
- Proje test amacı ile ayağa kaldırıldı. (package Manage Console’dan)
- Migration klasörü kaldırıldı.
- Son kontroller yapıldı.
- Projeyi Build etmeyi unutmayın. Genelde git hub’dan bağlanırken entityframeworklerde sorun çıkıyor. Build ederek bu sorun çözülüyor.
- Bogus bazen patlıyor. Böyle bir durumda birkaç defa daha deneyin.
- MVCUI katmanında oluşturulan HomeContorller, Test amaçlı oluşturulmuştur. Keza view-Home klasöründeki “index” view’u da test amaçlı oluşturulmuştur. Çalışmalarınızı testlerini yaparken belki kullanmak istenir belki diye özellikle silmedim. Sizler istediğiniz modifikasyonları orada uygulayabilirsiniz.
-
NTier mimarisi oluşturuldu(MODEL, MAP, DAL, BLL, WebApi)
-
MODEL katmanında veritabanı sınıfları(Alici, AdresBilgisi, Hareket, Kargo) ve gerekli enum yapıları(DataStatus, Durum) oluşturuldu.
-
MODEL katmanında veritabanı sınıfları arasındaki ilişkiler oluşturuldu.
-
MAP katmanında tablo isimleri ayarlandı, maksimum karakter sayıları belirlendi.
-
DAL katmanında veritabanı sınıfı oluşturuldu ve configürasyon ayarları sağlandı, veritabanı tabloları oluşturuldu.
-
BLL katmanında Singleton Patterni ve Unit Of Work Patternleri uygulandı. Veritabanı işlemlerinde kullanılacak metotlara açıklamaları eklendi.
-
WebApi katmanında connectionString yazıldı.
-
WebApi katmanında VM sınıfları oluşturuldu. Post olarak gelecek olan KargoVM sınıfında validation(DataAnnotations) ayarlamaları yapıldı.
-
WebApi katmanında HomeController oluşturuldu. KargoOlustur ve KargoTakip isimli iki metot oluşturuldu.
-
WebApi katmanında route template "api/{controller}/{action}/{kargoTakip}" olarak ayarlandı. {kargoTakip} ifadesi Postman veya Fiddler araçlarında test edilebilirliği sağlamak için yazıldı. Bu veri form ile geleceği için daha sonra kaldırılacak.
-
Proje Fiddler aracı ile test edildi. Çalıştığı görüldü.
-
KargoOlustur Metot Çıktısı ve KargoTakipEt Metot Çıktısı görselleri Dokumantasyonda mevcuttur...
- Esra => 4 gün (veri tabanı) ------ Yapıldı (14.11.2019)
- Tarık => 4 gün (Api entegrasyonu Kargo)------- Yapıldı (15.11.2019)
- Enes => 4 gün (Loglama ve ek veri tabanı) ----- (Yapılıyor...)
- Ozan => (Api Entegrasyonu E Ticaret) -------- daha zamanı var
- Kasım 18 Tarık (Api),Enes(Loglama) ve Esra veritabanı bitiyor... (sadece Enes kaldı !!!)
- Aralık 5 Tarık ve Enes Backend bitişi...
- Aralık 10 Cem ve Gökhan Frontend bitişi...
- Aralık 13 Ozan Api Entegrasyon Bitişi...
- 2020 Ocak 3 Emre Alp Test bitişi
- 2020 Mart 3 Proje Live'a acılısı...