Merhaba,
Bu projede, kullanıcılar kendi aralarında mesaj gönderebilir, gönderilen mesajlar yanıtlanabilir ve mesajları başka kullanıcılara iletebilir, mesajları taslak olarak kaydedebilir, mesajlarını çöp kutusuna taşıyabilir, gönderdikleri mesajları ve kendisine gelen önemli mesajları görüntüleyebilir.
📌 Identity kütüphanesi içinde hazır olarak bir çok tablo ve bu tablolara ait propertyler barındırır.
- AspNetUsers : bu tablo kayıtlı kullanıcıların tutulacağı otomatik olarak gelen tablodur içinde email telefon numarası şifre kullanıcı adı gibi veriler yer alır bu tabloya ayrıca kendi istediğimiz verilerin eklenmesi de mümkündür.
- AspNetRoles : bu tablo kullanıcılara rol atama işlemlerinde rol adlarının belirlenmesinde kullanılmaktadır.
- AspNetUserRoles : Son olarak bu tablo ise yukarda bahsettiğim iki tablo ile ilişkilidir ve hangi kullanıcının hangi rolu olduğu buradan anlaşılır
📌 Kullanıcılar 5 defa hatalı giriş yaptığında sistem tarafından otomatik olarak 5 dakika boyunca engellenir.
📌 AspNetCore da AppUser ve AppRole olarak iki tablo oluşturulursa bu oluşturulan iki tablonunun da id değerlerinin aynı olması gereklidir yani aslında AppUser tablosunun id özelliği int ise AppRole tablosunun da int olmalıdır bu işlem tablolar arasında ilişki sağlanabilmesi için önemlidir.
📌 SignalR, gerçek zamanlı uygulamalar geliştirmek için yazılmış açık kaynak kodlu bir .NET kütüphanedir. Normal HTTP bağlantılarında client-server iletişimi her istekte yenilenirken, SignalR ile client ve server arasında sürekli bir bağlantı sağlanır.📌 Aşağıdaki Görsel de bir kullanıcı giriş yaptıktan sonra aktif olan bütün kullanıcılara görseldeki gibi bilidirm gitmektedir.
📌 Bu olay mesaj gönderme işleminde de kullanılmıştır, kullanıcı mesaj gönderdiğinde sadece mesajın gideceği kişinin tarayıcısında "Yeni Mesajınız Var" şeklinde bildirim gidecektir.
📌 AutoMapper; farklı veri nesnelerinin otomatik olarak eşleştirilerek dönüştürülmesini ve kopyalanmasını kolaylaştıran bir kütüphanedir.
📌 (örneğin mail adında bir entitymizin olduğunu ve bu entitynin birden cok propertysi olduğunu düşünelim CreateMailViewModel adında bir sınıf oluşturduğumuzda bu sınıfa bütün propertyleri tek tek atamamız gereklidir. AutoMapper işte tam burada kullanılır
birden cok nesneyi tek tek atamak yerine otomatik olarak verdiğimiz sınıflari birbiyle eşler.
Dikkat ! : verilerin eşitlenmesi için entity sınıfı ve oluşturulan ViewModel/Dto sınıflarının propertylerinin birebir aynı olması gereklidir aksi halde eşitleme işlemi başarıylı olamaz.
📌 mesaj gönderilirken, yanıtlanırken ve iletilirken automaper kullanılmıştır.
📌 Her kullanıcının Sistem akışını izlediği mesajlarını alandır. 📌 Giriş yapan kullanıcının gönderdiği son 5 mesajın durumu sağ alanda yer alır mesaj durumu kullanıcının mesaja tıkladığında bu alanda iletildi yerine görüldü yazmaktadır.
📌 Mesaj gönderme işlemi kayıtlı kullanıcıların email adreslerine göre işlemektedir. 📌 Mesaj içeriğini süslemek ve daha modern bir görünüme kavuşturmak için summerNote ile textarea kullanılmıştır.
📌 Mesajın kimden geldiği, mesajın başlığı, kategorisi önemli olarak işaretlendiği zaman önemli seviye mesaj yazılması, tarihi ekli dosya paylaşıldğında ataç sembolunun cıkması mesaj yanıtlandığında yanıtlandı olarak iletildiğinde iletildi olarak gösterilmesi burada sağlanır. 📌 Sol tarafda bulunan klasörler sayesinde kullanıcı mesajları okundu olarak işaretliyebilir, çöp kutusuna taşıyabilir gönderdiği mesajları görüntüleyebilir taslak mesajlarını görüntüleyebilir.
📌 Kullanıcının göndermiş olduğu mesajlar burada görünür.
📌 Gönderilen mesajların önemli olarak işaretlenmesi durumunda mesaj bu klasöre ve ana klasore düşmektedir.
📌 Kullanıcı mesaj göndermekten vazgeçmesi durumunda mesajını taslak olarak kayıt edebilir.
📌 Kullanıcı sildiği mesajları buradan görüntüler.







