anilkeskin / internship-project

0 stars 0 forks source link

Gün Sonu Raporları Buraya Yazılıyor. #2

Open anilkeskin opened 3 years ago

anilkeskin commented 3 years ago

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.

anilkeskin commented 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.

anilkeskin commented 3 years ago

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.

anilkeskin commented 3 years ago

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 tagı kullanılıyor. Bunu yarın yapmayı planlıyorum.

anilkeskin commented 3 years ago

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.

anilkeskin commented 3 years ago

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

anilkeskin commented 3 years ago

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

anilkeskin commented 3 years ago

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.

anilkeskin commented 3 years ago

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 (o => o.UseSqlServer(Configuration.GetConnectionString("MyDatabase")));

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 Users { get; set; } public List Debts { get; set; }

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.)

anilkeskin commented 3 years ago

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ı.

anilkeskin commented 2 years ago

30 Ağustos Pazartesi

Zafer Bayramı olduğu için bugün stajım yok.

anilkeskin commented 2 years ago

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.

anilkeskin commented 2 years ago

1 Eylül Çarşamba

Server-Client arasında WEB-API bağlantısı çalıştım. Ancak henüz projemde uygulamadım.

anilkeskin commented 2 years ago

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 GetUserById(Guid Id); public Task<List> GetUsers(); public Task CreateUser(UserDTO User); public Task UpdateUser(UserDTO User); public Task DeleteUserById(Guid Id);

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.

anilkeskin commented 2 years ago

6 Eylül Pazartesi

Diğer sınıfların servisleri yazıldı.

anilkeskin commented 2 years ago

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.

anilkeskin commented 2 years ago

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.

anilkeskin commented 2 years ago

9 Eylül Perşembe

Sorunu çözdüm ve projeyi Blazor Server uygulamasına dönüştürüyorum.

anilkeskin commented 2 years ago

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.

anilkeskin commented 2 years ago

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 ?

anilkeskin commented 2 years ago

Skype üzerinde size yazdım. Görüşme yapabiliriz müsaitseniz.

anilkeskin commented 2 years ago

Kodlarının son halini github 'a yükleyebilir misin @anilkeskin

Yarın yeni bir proje açıp size yetki vereceğim.