diff --git a/AyCode.Core/Enums/MessageContextType.cs b/AyCode.Core/Enums/MessageContextType.cs new file mode 100644 index 0000000..b18091e --- /dev/null +++ b/AyCode.Core/Enums/MessageContextType.cs @@ -0,0 +1,12 @@ +namespace AyCode.Core.Enums; + +public enum MessageContextType : byte +{ + Unset = 0, + System = 5, + Private = 10, + Group = 15, + Transfer = 20, + Product = 25, + Company = 30, +} \ No newline at end of file diff --git a/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs b/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs index c8ff388..9da3b5d 100644 --- a/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs +++ b/AyCode.Database/DbSets/Messages/AcEmailMessageDbSetExtension.cs @@ -74,6 +74,27 @@ public static class AcEmailMessageDbSetExtension return ctx.GetEmailMessagesByContextId(contextId).GetEmailMessagesByUserIdOrUpmId(userId, userProductMappingId); } + private static IQueryable GetEmailMessagesByIds(this IQueryable queryableEmails, IQueryable ids) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return queryableEmails.Where(x => ids.Any(id => id == x.SenderId) || x.Recipients.Any(recipient => ids.Any(id => id == recipient.RecipientId))); + } + + public static IQueryable GetEmailMessagesByIds(this IAcEmailMessageDbSet ctx, IQueryable ids) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return ctx.EmailMessages.GetEmailMessagesByIds(ids); + } + + public static IQueryable GetEmailMessagesByIds(this IAcEmailMessageDbSet ctx, Guid contextId, IQueryable ids) + where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation + where TEmailRecipient : IAcEmailRecipientBase + { + return ctx.GetEmailMessagesByContextId(contextId).GetEmailMessagesByIds(ids); + } + #region Add, Update, Remove public static bool AddEmailMessage(this IAcEmailMessageDbSet ctx, TEmailMessage emailMessage) where TEmailMessage : class, IAcEmailMessageBase diff --git a/AyCode.Entities/Messages/AcEmailMessage.cs b/AyCode.Entities/Messages/AcEmailMessage.cs index 7e64a32..c89c1b5 100644 --- a/AyCode.Entities/Messages/AcEmailMessage.cs +++ b/AyCode.Entities/Messages/AcEmailMessage.cs @@ -1,6 +1,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Net.Mail; +using AyCode.Core.Enums; using AyCode.Interfaces.Messages; namespace AyCode.Entities.Messages; @@ -27,6 +28,7 @@ public abstract class AcEmailMessage : IAcEmailMessage Recipients { get; set; } = []; diff --git a/AyCode.Entities/Messages/AcEmailRecipient.cs b/AyCode.Entities/Messages/AcEmailRecipient.cs index 8e9cdad..8ba8057 100644 --- a/AyCode.Entities/Messages/AcEmailRecipient.cs +++ b/AyCode.Entities/Messages/AcEmailRecipient.cs @@ -26,7 +26,7 @@ public abstract class AcEmailRecipient : IAcEmailRecipient