From d9f79bd47401999b59abf0e6f6674e7d71f5478c Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Mon, 29 Apr 2024 19:28:21 +0200 Subject: [PATCH] refactoring, improvements, fixes, etc... --- TIAM.Core/SerializeObjectToJsonExtensions.cs | 23 ------- TIAM.Database/DataLayers/Admins/AdminDal.cs | 21 +++---- TIAM.Database/DataLayers/Users/UserDal.cs | 13 ---- .../Emails/EmailMessageDbSetExtension.cs | 60 +++++++++---------- .../DbSets/Emails/IEmailMessageDbSet.cs | 9 ++- .../DbSets/Users/UserDbSetExtensions.cs | 24 +------- .../Emails/IEmailMessageForeignKey.cs | 9 +-- TIAM.Entities/Emails/IEmailMessageRelation.cs | 13 ++-- .../Emails/IEmailRecipientsRelation.cs | 12 +++- TIAM.Entities/Emails/IMessageSenderService.cs | 10 +++- .../Server/Controllers/UserAPIController.cs | 10 ++-- 11 files changed, 79 insertions(+), 125 deletions(-) delete mode 100644 TIAM.Core/SerializeObjectToJsonExtensions.cs diff --git a/TIAM.Core/SerializeObjectToJsonExtensions.cs b/TIAM.Core/SerializeObjectToJsonExtensions.cs deleted file mode 100644 index 2d9d045a..00000000 --- a/TIAM.Core/SerializeObjectToJsonExtensions.cs +++ /dev/null @@ -1,23 +0,0 @@ -using AyCode.Core.Interfaces; -using Newtonsoft.Json; -using TIAM.Core.Interfaces; - -namespace TIAM.Core; - -public static class SerializeObjectToJsonExtensions -{ - private static string SerializeObjectToJson(T source) - { - JsonSerializerSettings options = new() - { - ReferenceLoopHandling = ReferenceLoopHandling.Ignore, - NullValueHandling = NullValueHandling.Ignore - }; - - return JsonConvert.SerializeObject(source, options); - } - - public static string ToJson(this T source) where T : class, IAcSerializableToJson => SerializeObjectToJson(source); - public static string ToJson(this IQueryable source) where T : class, IAcSerializableToJson => SerializeObjectToJson(source); - public static string ToJson(this IEnumerable source) where T : class, IAcSerializableToJson => SerializeObjectToJson(source); -} \ No newline at end of file diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 1702cf25..49a25e39 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -1,4 +1,6 @@ -using AyCode.Database.DbSets.Users; +using AyCode.Core.Extensions; +using AyCode.Database.DbSets.Messages; +using AyCode.Database.DbSets.Users; using AyCode.Models.Enums; using Microsoft.EntityFrameworkCore; using TIAM.Core; @@ -90,16 +92,15 @@ namespace TIAM.Database.DataLayers.Admins public User? GetUserById(Guid userId, bool autoInclude = false) => Session(ctx => ctx.GetUserById(userId, autoInclude)); public User? GetUserByEmail(string email, bool autoInclude = false) => Session(ctx => ctx.GetUserByEmail(email, autoInclude)); - public UserModelDtoDetail? GetUserModelDtoDetailById(Guid userId, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed)); - public Task GetUserModelDtoDetailByIdAsync(Guid userId, bool onlyConfirmed) => SessionAsync(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed)); - public UserModelDtoDetail? GetUserModelDtoDetailByEmail(string email, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailByEmail(email, onlyConfirmed)); - public TUserModelDto? GetUserModelDtoById(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase - => Session(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); + => Session(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); public Task GetUserModelDtoByIdAsync(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase - => SessionAsync(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); + => SessionAsync(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); - public UserModelDto? GetUserModelDtoByEmail(string email, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoByEmail(email, onlyConfirmed)); + public TUserModelDto? GetUserModelDtoByEmail(string email, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase + => Session(ctx => ctx.GetUserModelDtoByEmail(email, onlyConfirmed)); + public Task GetUserModelDtoByEmailAsync(string email, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase + => SessionAsync(ctx => ctx.GetUserModelDtoByEmail(email, onlyConfirmed)); public string? GetUserJsonById(Guid userId, bool onlyConfirmed) => Session(ctx => ctx.GetUserById(userId, onlyConfirmed)?.ToJson()); public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); @@ -202,8 +203,8 @@ namespace TIAM.Database.DataLayers.Admins public Task> GetEmailMessagesByContextIdAsync(Guid contextId) => SessionAsync(ctx => ctx.GetEmailMessagesByContextId(contextId).ToList()); public Task> GetEmailMessagesBySenderIdAsync(Guid senderId) => SessionAsync(ctx => ctx.GetEmailMessagesBySenderId(senderId).ToList()); public Task> GetEmailMessagesBySenderEmailAddressAsync(string emailAddress) => SessionAsync(ctx => ctx.GetEmailMessagesBySenderEmailAddress(emailAddress).ToList()); - public Task> GetEmailMessagesAsync(Guid userId, Guid userProductMappingId) => SessionAsync(ctx => ctx.GetEmailMessages(userId, userProductMappingId).ToList()); - public Task> GetEmailMessagesAsync(Guid contextId, Guid userId, Guid userProductMappingId) => SessionAsync(ctx => ctx.GetEmailMessages(contextId, userId, userProductMappingId).ToList()); + public Task> GetEmailMessagesAsync(Guid userId, Guid userProductMappingId) => SessionAsync(ctx => ctx.GetEmailMessages(userId, userProductMappingId).ToList()); + public Task> GetEmailMessagesAsync(Guid contextId, Guid userId, Guid userProductMappingId) => SessionAsync(ctx => ctx.GetEmailMessages(contextId, userId, userProductMappingId).ToList()); public Task AddEmailMessageAsync(EmailMessage emailMessage) diff --git a/TIAM.Database/DataLayers/Users/UserDal.cs b/TIAM.Database/DataLayers/Users/UserDal.cs index 9ca9d118..cfbe2240 100644 --- a/TIAM.Database/DataLayers/Users/UserDal.cs +++ b/TIAM.Database/DataLayers/Users/UserDal.cs @@ -29,19 +29,6 @@ namespace TIAM.Database.DataLayers.Users { } - public UserModelDtoDetail? GetUserModelDtoDetailById(Guid userId, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed)); - public Task GetUserModelDtoDetailByIdAsync(Guid userId, bool onlyConfirmed) => SessionAsync(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed)); - public UserModelDtoDetail? GetUserModelDtoDetailByEmail(string email, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailByEmail(email, onlyConfirmed)); - - public TUserModelDto? GetUserModelDtoById(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase - => Session(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); - public Task GetUserModelDtoByIdAsync(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase - => SessionAsync(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); - - public Task GetUserModelDtoByEmailAsync(string email, bool onlyConfirmed) => SessionAsync(x => x.GetUserModelDtoByEmail(email, onlyConfirmed)); - public Task> GetAllUsersModelDtoAsync() => SessionAsync(x => x.GetAllUsersModelDto().ToList()); - public Task> GetAllUsersModelDtoDetailAsync() => SessionAsync(x => x.GetAllUsersModelDetailDto().ToList()); - public async Task CreateUserAsync(User user) { Context.Users.Add(user); diff --git a/TIAM.Database/DbSets/Emails/EmailMessageDbSetExtension.cs b/TIAM.Database/DbSets/Emails/EmailMessageDbSetExtension.cs index 1dc1fdbb..c3e7e3b4 100644 --- a/TIAM.Database/DbSets/Emails/EmailMessageDbSetExtension.cs +++ b/TIAM.Database/DbSets/Emails/EmailMessageDbSetExtension.cs @@ -4,47 +4,47 @@ using TIAM.Entities.Products; namespace TIAM.Database.DbSets.Emails; -public static class EmailMessageDbSetExtension -{ - public static EmailMessage? GetEmailMessageById(this IEmailMessageDbSet ctx, Guid emailMessageId) - => ctx.EmailMessages.FirstOrDefault(x => x.Id == emailMessageId); +//public static class EmailMessageDbSetExtension +//{ +// public static EmailMessage? GetEmailMessageById(this IEmailMessageDbSet ctx, Guid emailMessageId) +// => ctx.EmailMessages.FirstOrDefault(x => x.Id == emailMessageId); - public static IQueryable GetEmailMessagesByContextId(this IEmailMessageDbSet ctx, Guid contextId) - => ctx.EmailMessages.Where(x => x.ContextId == contextId); +// public static IQueryable GetEmailMessagesByContextId(this IEmailMessageDbSet ctx, Guid contextId) +// => ctx.EmailMessages.Where(x => x.ContextId == contextId); - public static IQueryable GetEmailMessagesBySenderId(this IEmailMessageDbSet ctx, Guid senderId) - => ctx.EmailMessages.Where(x => x.SenderId == senderId); +// public static IQueryable GetEmailMessagesBySenderId(this IEmailMessageDbSet ctx, Guid senderId) +// => ctx.EmailMessages.Where(x => x.SenderId == senderId); - public static IQueryable GetEmailMessagesBySenderEmailAddress(this IEmailMessageDbSet ctx, string senderEmailAddress) - => ctx.EmailMessages.Where(x => x.EmailAddress == senderEmailAddress); +// public static IQueryable GetEmailMessagesBySenderEmailAddress(this IEmailMessageDbSet ctx, string senderEmailAddress) +// => ctx.EmailMessages.Where(x => x.EmailAddress == senderEmailAddress); - private static IQueryable GetEmailMessages(this IQueryable queryableEmails, Guid userId, Guid userProductMappingId) - => queryableEmails.Where(x => x.SenderId == userId || x.SenderId == userProductMappingId || x.Recipients.Any(recipient => recipient.RecipientId == userId || recipient.RecipientId == userProductMappingId)); +// private static IQueryable GetEmailMessages(this IQueryable queryableEmails, Guid userId, Guid userProductMappingId) +// => queryableEmails.Where(x => x.SenderId == userId || x.SenderId == userProductMappingId || x.Recipients.Any(recipient => recipient.RecipientId == userId || recipient.RecipientId == userProductMappingId)); - public static IQueryable GetEmailMessages(this IEmailMessageDbSet ctx, Guid userId, Guid userProductMappingId) - => ctx.EmailMessages.GetEmailMessages(userId, userProductMappingId); +// public static IQueryable GetEmailMessages(this IEmailMessageDbSet ctx, Guid userId, Guid userProductMappingId) +// => ctx.EmailMessages.GetEmailMessages(userId, userProductMappingId); - public static IQueryable GetEmailMessages(this IEmailMessageDbSet ctx, Guid contextId, Guid userId, Guid userProductMappingId) - => ctx.GetEmailMessagesByContextId(contextId).GetEmailMessages(userId, userProductMappingId); +// public static IQueryable GetEmailMessages(this IEmailMessageDbSet ctx, Guid contextId, Guid userId, Guid userProductMappingId) +// => ctx.GetEmailMessagesByContextId(contextId).GetEmailMessages(userId, userProductMappingId); - #region Add, Update, Remove +// #region Add, Update, Remove - public static bool AddEmailMessage(this IEmailMessageDbSet ctx, EmailMessage emailMessage) - => ctx.EmailMessages.Add(emailMessage).State == EntityState.Added; +// public static bool AddEmailMessage(this IEmailMessageDbSet ctx, EmailMessage emailMessage) +// => ctx.EmailMessages.Add(emailMessage).State == EntityState.Added; - public static bool UpdateEmailMessage(this IEmailMessageDbSet ctx, EmailMessage emailMessage) - => ctx.EmailMessages.Update(emailMessage).State == EntityState.Modified; +// public static bool UpdateEmailMessage(this IEmailMessageDbSet ctx, EmailMessage emailMessage) +// => ctx.EmailMessages.Update(emailMessage).State == EntityState.Modified; - public static bool RemoveEmailMessage(this IEmailMessageDbSet ctx, Guid emailMessageId) - { - var emailMessage = ctx.GetEmailMessageById(emailMessageId); +// public static bool RemoveEmailMessage(this IEmailMessageDbSet ctx, Guid emailMessageId) +// { +// var emailMessage = ctx.GetEmailMessageById(emailMessageId); - return emailMessage == null || ctx.RemoveEmailMessage(emailMessage); - } +// return emailMessage == null || ctx.RemoveEmailMessage(emailMessage); +// } - public static bool RemoveEmailMessage(this IEmailMessageDbSet ctx, EmailMessage emailMessage) - => ctx.EmailMessages.Remove(emailMessage).State == EntityState.Deleted; +// public static bool RemoveEmailMessage(this IEmailMessageDbSet ctx, EmailMessage emailMessage) +// => ctx.EmailMessages.Remove(emailMessage).State == EntityState.Deleted; - #endregion Add, Update, Remove +// #endregion Add, Update, Remove -} \ No newline at end of file +//} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Emails/IEmailMessageDbSet.cs b/TIAM.Database/DbSets/Emails/IEmailMessageDbSet.cs index f174e4f5..3cf497e7 100644 --- a/TIAM.Database/DbSets/Emails/IEmailMessageDbSet.cs +++ b/TIAM.Database/DbSets/Emails/IEmailMessageDbSet.cs @@ -1,10 +1,9 @@ -using Microsoft.EntityFrameworkCore; +using AyCode.Database.DbSets.Messages; +using Microsoft.EntityFrameworkCore; using TIAM.Entities.Emails; using TIAM.Entities.Permissions; namespace TIAM.Database.DbSets.Emails; -public interface IEmailMessageDbSet -{ - public DbSet EmailMessages { get; set; } -} \ No newline at end of file +public interface IEmailMessageDbSet : IAcEmailMessageDbSet +{ } \ No newline at end of file diff --git a/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs b/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs index e4362cfd..1f6a7a75 100644 --- a/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs +++ b/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs @@ -1,5 +1,6 @@ using System.Security.Cryptography.X509Certificates; using AyCode.Database.DbSets.Users; +using AyCode.Database.Extensions; using Microsoft.EntityFrameworkCore; using TIAM.Entities.Users; using TIAM.Models.Dtos.Users; @@ -20,27 +21,4 @@ public static class UserDbSetExtensions public static User? GetUserByEmail(this IUserDbSet ctx, string email, bool autoInclude) => ctx.UsersWithProductRelations(autoInclude).FirstOrDefault(x => x.EmailAddress == email); - - public static TUserModelDto? GetUserModelDtoById(this IUserDbSet ctx, Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase - { - var user = ctx.GetUsersById(userId, onlyConfirmed).FirstOrDefault(); - return Activator.CreateInstance(typeof(TUserModelDto), user) as TUserModelDto; - } - //=> ctx.GetUsersById(userId, onlyConfirmed).Select(user => new UserModelDto(user)).FirstOrDefault(); - - public static UserModelDto? GetUserModelDtoByEmail(this IUserDbSet ctx, string email, bool onlyConfirmed) - => ctx.GetUsersByEmail(email, onlyConfirmed).Select(user => new UserModelDto(user)).FirstOrDefault(); - - public static IQueryable GetAllUsersModelDto(this IUserDbSet ctx) - => ctx.Users.Select(user => new UserModelDto(user)); - - public static UserModelDtoDetail? GetUserModelDtoDetailById(this IUserDbSet ctx, Guid userId, bool onlyConfirmed) - => ctx.GetUsersById(userId, onlyConfirmed).Select(user => new UserModelDtoDetail(user)).FirstOrDefault(); - - public static UserModelDtoDetail? GetUserModelDtoDetailByEmail(this IUserDbSet ctx, string email, bool onlyConfirmed) - => ctx.GetUsersByEmail(email, onlyConfirmed).Select(user => new UserModelDtoDetail(user)).FirstOrDefault(); - - public static IQueryable GetAllUsersModelDetailDto(this IUserDbSet ctx) - => ctx.Users.Select(user => new UserModelDtoDetail(user)); - } \ No newline at end of file diff --git a/TIAM.Entities/Emails/IEmailMessageForeignKey.cs b/TIAM.Entities/Emails/IEmailMessageForeignKey.cs index 8b2108bc..e55c020c 100644 --- a/TIAM.Entities/Emails/IEmailMessageForeignKey.cs +++ b/TIAM.Entities/Emails/IEmailMessageForeignKey.cs @@ -1,9 +1,6 @@ -namespace TIAM.Entities.Emails; +using AyCode.Interfaces.Messages; -public interface IEmailMessageForeignKey -{ - public T EmailMessageId { get; set; } -} +namespace TIAM.Entities.Emails; -public interface IEmailMessageForeignKey : IEmailMessageForeignKey +public interface IEmailMessageForeignKey : IAcEmailMessageForeignKey { } diff --git a/TIAM.Entities/Emails/IEmailMessageRelation.cs b/TIAM.Entities/Emails/IEmailMessageRelation.cs index 96f9c292..9dd803f0 100644 --- a/TIAM.Entities/Emails/IEmailMessageRelation.cs +++ b/TIAM.Entities/Emails/IEmailMessageRelation.cs @@ -1,6 +1,9 @@ -namespace TIAM.Entities.Emails; +using AyCode.Interfaces.Messages; -public interface IEmailMessageRelation : IEmailMessageForeignKey -{ - public EmailMessage EmailMessage{ get; set; } -} \ No newline at end of file +namespace TIAM.Entities.Emails; + +public interface IEmailMessageRelation : IEmailMessageRelation +{ } + +public interface IEmailMessageRelation : IAcEmailMessageRelation, IEmailMessageForeignKey where TEmailMessage : IAcEmailMessageBase +{ } \ No newline at end of file diff --git a/TIAM.Entities/Emails/IEmailRecipientsRelation.cs b/TIAM.Entities/Emails/IEmailRecipientsRelation.cs index d7da77d4..69749eb6 100644 --- a/TIAM.Entities/Emails/IEmailRecipientsRelation.cs +++ b/TIAM.Entities/Emails/IEmailRecipientsRelation.cs @@ -1,6 +1,12 @@ -namespace TIAM.Entities.Emails; +using AyCode.Entities.Messages; +using AyCode.Interfaces.Messages; -public interface IEmailRecipientsRelation +namespace TIAM.Entities.Emails; + +public interface IEmailRecipientsRelation : IEmailRecipientsRelation +{ +} + +public interface IEmailRecipientsRelation : IAcEmailRecipientsRelation where TEmailRecipient : IAcEmailRecipientBase { - public List Recipients { get; set; } } \ No newline at end of file diff --git a/TIAM.Entities/Emails/IMessageSenderService.cs b/TIAM.Entities/Emails/IMessageSenderService.cs index 4551783f..5003b0cb 100644 --- a/TIAM.Entities/Emails/IMessageSenderService.cs +++ b/TIAM.Entities/Emails/IMessageSenderService.cs @@ -1,7 +1,13 @@ -using AyCode.Interfaces.Messages; +using AyCode.Entities.Messages; +using AyCode.Interfaces.Messages; namespace TIAM.Entities.Emails; -public interface IMessageSenderService : IAcMessageSenderService +public interface IMessageSenderService : IMessageSenderService +{} + +public interface IMessageSenderService : IAcMessageSenderService + where TEmailMessage : IAcEmailMessage + where TEmailRecipient : IAcEmailRecipientBase { } \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/UserAPIController.cs b/TIAMWebApp/Server/Controllers/UserAPIController.cs index 06ef0a7c..09247417 100644 --- a/TIAMWebApp/Server/Controllers/UserAPIController.cs +++ b/TIAMWebApp/Server/Controllers/UserAPIController.cs @@ -319,7 +319,7 @@ namespace TIAMWebApp.Server.Controllers userToCreate.Profile.Address.Latitude = null; //Math.Round(90 + rnd.NextDouble(), 8); userToCreate.Profile.Address.Longitude = null; //Math.Round(180 + rnd.NextDouble(), 8); result = await _userDal.AddUserAsync(userToCreate); - guestUser = await _userDal.GetUserModelDtoDetailByIdAsync(userId, false); + guestUser = await _userDal.GetUserModelDtoByIdAsync(userId, false); } } @@ -334,7 +334,7 @@ namespace TIAMWebApp.Server.Controllers { //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //return users; - return _userDal.GetAllUsersModelDtoAsync(); + return _userDal.GetAllUserModelDtoAsync(); } [AllowAnonymous] @@ -345,7 +345,7 @@ namespace TIAMWebApp.Server.Controllers Console.WriteLine("GetUsersWithDetails called"); //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //return users; - return _userDal.GetAllUsersModelDtoDetailAsync(); + return _userDal.GetAllUserModelDtoAsync(); } [AllowAnonymous] @@ -356,7 +356,7 @@ namespace TIAMWebApp.Server.Controllers Logger.Info($"GetUserByEmail called with email: {email}"); Console.WriteLine($@"GetUserByEmail called with email: {email}"); - return _userDal.GetUserModelDtoByEmailAsync(email, false); + return _userDal.GetUserModelDtoByEmailAsync(email, false); } [AllowAnonymous] @@ -374,7 +374,7 @@ namespace TIAMWebApp.Server.Controllers public Task GetUserDetailById([FromBody] Guid id) { Logger.Info($"GetUserDetailById called with id: {id}"); - return _userDal.GetUserModelDtoDetailByIdAsync(id, true); + return _userDal.GetUserModelDtoByIdAsync(id, true); } } } \ No newline at end of file