From f54a84aefd09a97fd9941657b521c8d0462731c8 Mon Sep 17 00:00:00 2001 From: Loretta Date: Thu, 15 Aug 2024 18:45:12 +0200 Subject: [PATCH] EmailMessages improvements --- .../Messages/AcEmailMessageDbSetExtension.cs | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs b/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs index aa628ab..c8ff388 100644 --- a/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs +++ b/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs @@ -11,24 +11,53 @@ public static class AcEmailMessageDbSetExtension public static IQueryable GetEmailMessagesByContextId(this IAcEmailMessageDbSet ctx, Guid contextId) where TEmailMessage : class, IAcEmailMessageBase => ctx.EmailMessages.Where(x => x.ContextId == contextId); - public static IQueryable GetEmailMessagesBySenderId(this IAcEmailMessageDbSet ctx, Guid senderId) where TEmailMessage : class, IAcEmailMessageBase - => ctx.EmailMessages.Where(x => x.SenderId == senderId); - public static IQueryable GetEmailMessagesBySenderEmailAddress(this IAcEmailMessageDbSet ctx, string senderEmailAddress) where TEmailMessage : class, IAcEmailMessageBase => ctx.EmailMessages.Where(x => x.EmailAddress == senderEmailAddress); - private static IQueryable GetEmailMessages(this IQueryable queryableEmails, Guid userId, Guid userProductMappingId) + public static IQueryable GetEmailMessagesBySenderId(this IAcEmailMessageDbSet ctx, Guid senderId) where TEmailMessage : class, IAcEmailMessageBase + => ctx.EmailMessages.Where(x => x.SenderId == senderId); + + public static IQueryable GetEmailMessagesByRecipientId(this IAcEmailMessageDbSet ctx, Guid recipientId) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return ctx.EmailMessages.Where(x => x.Recipients.Any(recipient => recipient.RecipientId == recipientId)); + } + + private static IQueryable GetEmailMessagesBySenderIdOrRecipientId(this IQueryable queryableEmails, Guid senderIdOrRecipientId) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return queryableEmails.Where(x => x.SenderId == senderIdOrRecipientId || x.Recipients.Any(recipient => recipient.RecipientId == senderIdOrRecipientId)); + } + + public static IQueryable GetEmailMessages(this IAcEmailMessageDbSet ctx, Guid senderIdOrRecipientId) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return ctx.EmailMessages.GetEmailMessagesBySenderIdOrRecipientId(senderIdOrRecipientId); + } + + public static IQueryable GetEmailMessages(this IAcEmailMessageDbSet ctx, Guid contextId, Guid senderIdOrRecipientId) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return ctx.EmailMessages.Where(x => x.ContextId == contextId).GetEmailMessagesBySenderIdOrRecipientId(senderIdOrRecipientId); + } + + + private static IQueryable GetEmailMessagesByUserIdOrUpmId(this IQueryable queryableEmails, Guid userId, Guid userProductMappingId) where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation where TEmailRecipient : IAcEmailRecipientBase { return queryableEmails.Where(x => x.SenderId == userId || x.SenderId == userProductMappingId || x.Recipients.Any(recipient => recipient.RecipientId == userId || recipient.RecipientId == userProductMappingId)); } - public static IQueryable GetEmailMessages(this IAcEmailMessageDbSet ctx, Guid userId, Guid userProductMappingId) + public static IQueryable GetEmailMessagesByUserIdOrUpmId(this IAcEmailMessageDbSet ctx, Guid userId, Guid userProductMappingId) where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation where TEmailRecipient : IAcEmailRecipientBase { - return ctx.EmailMessages.GetEmailMessages(userId, userProductMappingId); + return ctx.EmailMessages.GetEmailMessagesByUserIdOrUpmId(userId, userProductMappingId); } public static IQueryable GetAllEmailMessages(this IAcEmailMessageDbSet ctx) @@ -42,7 +71,7 @@ public static class AcEmailMessageDbSetExtension where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation where TEmailRecipient : IAcEmailRecipientBase { - return ctx.GetEmailMessagesByContextId(contextId).GetEmailMessages(userId, userProductMappingId); + return ctx.GetEmailMessagesByContextId(contextId).GetEmailMessagesByUserIdOrUpmId(userId, userProductMappingId); } #region Add, Update, Remove