Open anilkeskin opened 3 years ago
17 Ağustos Salı Bootstrap buttonları miras yapısı kullanılarak özelleştirildi. Artık projeme bir button eklemek istediğimde html yazmak yerine tıpkı bir fonksiyon çağırırmış gibi istediğim componenti çağıracağım. Ek olarak bu componentlere parametre olarak buttonun tüm özellikleri verilebiliyor. Özellikler Caption, Color, Icon, ToolTipStr, IsSmall, IsOutline, IsBusy, IsBusyCaption, OnClick IsBusy parametresi bir boolean değişkendir. Buttona bir kere basıldığında defalarca basılmasını önlemek için kullanılacak. Örneğin serverimiz yavaş çalışıyor. Biz bir buttona bir kere bastık ve verimizin veritabanına kayıt edilmesini bekliyoruz. Bir kere basıldığında IsBusy değişkenini True yapacağız. Bu durum buttonun durumunu DİSABLED yapacak ve Captionu(IsBusyCaption) SAVİNG olacak. Bu durumda kullanıcının bu buttona defalarca basmasını engelleyeceğiz. Ayrıca Buttonları sade kullanmak yerine, sol tarafına Icon eklemek istedim. Bunu otomatik hale getirmek için wwwroot klasörü altındaki index.html dosyasına font-awesome.min.css dosyasını ekledim. Iconlarda parametre olarak verilecek.
Github projemi güncelledim. Dosyalara oradan ulaşabilirsiniz.
18 Ağustos Çarşamba Projemde Popupların olması gerektiğine karar verdim. Örneğin, Bu veriyi silmek üzeresiniz. Silmek istiyor musunuz ? Herhangi bir duyurunun veya bilgilendirmenin kullanıcılara gösterilmesi. Login işlemi (Login işlemini popup ile yapmayı planlıyorum. Projeyi açıklayan bir landing pagenin en üstünde login buttonu olacak ve popup ile login işlemi gerçekleştirilecek) Bu Popupı gerçekleştirmek için BlazoredModal kütüphanesinden yararlandım. Linki : https://github.com/Blazored/Modal Yine buttonlarda yapmış olduğum gibi miras alma kullanarak gerçekleştirdim. (Custom Popup) 2 tane component yazdım. Biri kullanıcıya bilgi vermek amaçlı(duyuru). Diğeri ise Popuplarda buttona tıklandığında bir aksiyon gerçekleştirilmesi için. Aksiyonun gerçekleştirilmesi için ModalManager classını yazdım.
19 Ağustos Perşembe
Landing Page tasarımı responsive olarak tasarlandı. Logo Menü - Hakkında - Demo Talebi alanları oluşturuldu.
Demo talebi alanında form kullanıldı. (Bu kısımda Mail atma olacak).
Formda gerekli VALIDATION lar yapıldı.
Login ekranına gidildiğinde her zaman sol tarafta nav menü nün geldiğini farkettim. Client/Shared altına yeni bir EmptyLayout oluşturdum ve login sayfasında bu yapıyı kullandım.
Login sayfasında Anchor (href="#gidilmesigerekenyer") kısmının Blazor tarafında çalışmadığını farkettim. Bu Blazorda SignalR olduğu için olmayan bir durummuş. Bu olayı yapmak için Devexpress kütüphanesi buldum. Bu kütüphaneyle a tagu yerine
20 Ağustos Cuma Entity ile ilgili araştırmalar yaptım. 2 çeşit olduğunu gördüm DBFirst ve CodeFirst. DBFirst ile ilk önce databaseyi manuel olarak oluşturup daha sonra bağlantısı yapılıyor. Code First ile sql ile ilişkimiz olmadan classlar oluşturarak yapılıyor. Bu iki yapı ile alıştırmalar yapmaya çalıştım. Benim projemde Code First yapısını kullanmaya karar verdim. Önümüzdeki hafta tablolarımı hazırlayıp Code First alt yapısını kullanarak kodumu yazacağım.
23 Ağustos Pazartesi
E/R Diagram oluşturuldu. 5 tablonun yeterli olacağını düşündüm. Projeyi yaparken yeni şeyler aklıma geldikçe ekleme yapacağım. User Table Bu tabloda kullanıcılar tutulacak. Bu alana IsAdmin column ekledim ve adminin olup olmadığını belirleyeceğiz. Flat Table Binadaki daireler bu tabloda tutulacak. 4 sütun ekledim. Aklıma geldikçe yeni özellikler eklenecek. User Table ile Flat table arasında One to many ilişkisi vardır. Bir kişi bir dairede oturabilir. Ancak bir dairede birden fazla insan yaşayabilir. Debt Table Bu tabloda aidatlar,faturalar olacaktır. Bu tablo ile flat table arasında one to many ilişkisi olacaktır. Announcement Table Bu tabloda adminlerin yazmış olduğu duyurular olacaktır. Duyurunun hangi adminin yazdığını belirlemek için user table ile arasında ilişki olacak Expenses Table Bu tabloda binanın giderleri listelenecektir. Giderin hangi admin tarafından yapıldığını belirlemek için user table ile arasında ilişki olacak.
Oluşturulan E/R Model için : https://anilkeskin.com/erModel.PNG
24 Ağustos Salı Logical Database Design yapıldı. User Table Id -> Guild (Prikey) TC -> Varchar(11) FirstName, LastName -> Varchar(20) Phone -> Varchar(11) BoodType -> Varchar(5) IsAdmin -> Boolean Password - > Varchar Flat -> Integer(Forkey)
Flat Table FlatNumber -> Integer (Prikey) Floor -> Integer IsBaloncy -> Boolean NoRooms -> Integer
Debt Table Id -> Guild DebtName -> Varchar(50) Total -> Double FlatNumber -> Integer (Forkey)
Announcement Table Id -> Guild Title -> Varchar(50) AnText -> Varchar(250) AnDate -> Date TC or Id (Forkey)
Expenses Table Id -> Guild ExName-> Varchar(50) Total -> Double ExDate -> Date TC or Id (Forkey)
User Table de TC ya da Id yi primary key yapacağım. Bu şekilde tablolarımı tamamladım. Görsel olarak görmek için (Logical Database Design) : https://anilkeskin.com/logicalDatabaseDesign.PNG
25 Ağustos Çarşamba
Oluşturmuş olduğum tabloların Entitylerini yazmaya çalıştım. Ancak henüz test edemedim.
NuGet Paket yöneticisinden gerekli Entity Paketlerini yükledim. 1) EntityFrameworkCore 2) EntityFrameworkCore.Design 3) EntityFrameworkCore.Relational 4) EntityFrameworkCore.SqlServer 5) EntityFrameworkCore.Tools
Daha sonra ProjeAdı.Server.Data isminde bir ClassLib(.NetCore) proje oluşturdum. Bu proje içine Models adında bir klasör açtım ve oluşturmuş olduğum tabloları sınıflar kullanarak yazdım. Ayrıca Context adında bir klasör açarak DbContext sınıfını oluşturdum. Models tablosu içinde BaseEntity sınıfını oluşturdum. Burada Guid keyini oluşturdum ve diğer sınıflarda bu sınıfı kullandım. Yarın çalışmalara devam edeceğim. Projenin son halini GitHub a yükledim.
26 Ağustos Perşembe
Entity Code First ile tüm tabloları ve ilişkilerini kodladım.
appsettings.json dosyasına gerekli connection bağlantısını yazdım. "ConnectionStrings": { "MyDatabase": "data source=LAPTOP-GJ916957; initial catalog=MyDb;integrated security=true" }
Startup.cs dosyasından gerekli konfigüreleri yaptım. Method -> ConfigureServices
services.AddControllersWithViews();
services.AddDbContext
Method -> Configure
db.Database.EnsureCreated();
Tablolarımı kodlarken Primary key hataları vs. vardı. Onları düzeltmeye çalıştım ve uzun sürdü. Ancak şuan hepsi çalışır durumda.
Ayrıca Flat.cs dosyasına,
public List
Listelerini ekledim. Böylece Flat.cs den hangi dairede kimler oturuyor ve o dairenin aidatlarına kolayca ulaşacağım. Ayrıca DataAnnotations.Schema kullanarak, Tablolara vs isimler verdim. Örneğin, [Table("Flats")]. Bunu columnlarda da yaptım.
Şuan projemi çalıştırdığımda tüm tablolarım ve ilişkileri SqlServer de gözüküyor. (Diagramdan kontrol edildi.)
27 Ağustos Cuma
Aidat, Giderler, Kullanıcılar, Duyurular, Daireler sayfaları yapıldı. Sayfaların front-end kısımları yazılmaya başlandı.
30 Ağustos Pazartesi
Zafer Bayramı olduğu için bugün stajım yok.
31 Ağustos Salı
Birkaç gün WEB-API çalışacağım. Bu konuda tecrübem yok ancak yapmaya çalışacağım. Eğer yapamazsam normal CRUD işlemi yapacağım.
1 Eylül Çarşamba
Server-Client arasında WEB-API bağlantısı çalıştım. Ancak henüz projemde uygulamadım.
2 Eylül Perşembe - 3 Eylül Cuma
Dün hastaneye gitmek zorunda kaldım. O yüzden yorum yazamadım. Toplu yazıyorum.
Projemde Server ile Client arasına bağlantı kurmaya çalıştım.
Shared kısmının altına DTO diye bir klasör açarak tablolarıma benzer classlar oluşturdum. Veri alırken burayı kullanacağım. Servis yazıp normal verilerimi bu alanda tutacağım.
Hazırlanan classlar. AnnouncementDTO.cs DebtDTO.cs ExpensesDTO.cs FlatDTO.cs UserDTO.cs
Server kısmına NuGet Paket yöneticisi ile AutoMapper paketini projeme ekledim.(Ekleme sebebim dönüşüm işlemi) Server kısmında Services adında bir klasör açtım. Burada Veritabanından gelen verileri alınıp gönderilmesi gibi işlemleri yapacağım.
Bu klasör altına ConfigureMappingExtension adında bir sınıf oluşturdum. Bu sınıfta dönüşümleri gerçekleştirdim.
Server klasörü altına Infrastruce klasörünü ekledim. Örnek olması açısından içine sadece IUserService ekledim.
Bunun içine Task tipinde methodlar tanımladım.
public Task
Daha sonra Services klasörü içine bir tane daha Services klasörü açtım. İçine UserService sınıfını ekledim. UserService : IUserService yaptım ve daha sonra çıkan hatada Arabirimleri uygula dedim. IUserService de yazdığım tüm methodlar bu kısma geldi. Bu kısımda olan methodları koda döktüm. Github üzerinden projei güncelledim. Bakabilirsiniz. Bu yaptıklarımı test ettikten sonra tüm tablolar için yapacağım.
6 Eylül Pazartesi
Diğer sınıfların servisleri yazıldı.
7 Eylül Salı
Yazdığım servisleri test etmek istedim ancak hata aldım. Çözmeye çalıştım ancak başarılı olamadım. Front end yazdım biraz. Eğer yarın da cözemezsem sizinle iletişime geçeceğim.
8 Eylül Çarşamba
Sorunu çözemedim. Size Skype üzerinden yazdım. Yarın müsait bir zamanda beraber bakabilir miyiz ? Ben WebAssembly uygulaması üzerinde çalışıyorum(Katmanlı). Bu konuda tecrübem olmadığı için tıkandım bayağı bu hafta. Eğer veritabanı işlemini çözemezsem Hafta sonu Blazor Server projesi açıp, projeyi ona geçirmek istiyorum.
9 Eylül Perşembe
Sorunu çözdüm ve projeyi Blazor Server uygulamasına dönüştürüyorum.
10 Eylül Cuma
Yaptıklarımı tamamen server uygulamasına geçirdim. Biraz eksiklerim var onları haftasonu halledeceğim. Pazartesi günü stajımın son günü. Son gün test yapacağım.
10 Eylül Cuma Yaptıklarımı tamamen server uygulamasına geçirdim. Biraz eksiklerim var onları haftasonu halledeceğim. Pazartesi günü stajımın son günü. Son gün test yapacağım.
Pazartesi günü yaptıklarının üzerinden geçelim
Merhaba pazartesi sabahına acil bir işim çıktı. Sizin için hangisi uygun olur bilmiyorum ama Salı veya Çarşamba günü görüşmeyi yapsak olur mu ?
Skype üzerinde size yazdım. Görüşme yapabiliriz müsaitseniz.
Kodlarının son halini github 'a yükleyebilir misin @anilkeskin
Yarın yeni bir proje açıp size yetki vereceğim.
16 Ağustos Pazartesi Blazor ile ilgili araştırmalar yaptım. Kullanabileceğim front-end yapılarına baktım. Blazor ile OOP-Miras kullanarak custom componentler tasarlayabileceğimi anladım. Projede Buttonları sürekli tekrar yapmamak ve dinamik hale getirmek için bu yapıyı kullanacağım. Yarın, Button(Save, Edit, Delete) için miras yapısını kullanarak Custom Componentler yazmayı ve blazor araştırmalarına devam etmeyi planlıyorum.