Messages improvements, fixes...

This commit is contained in:
Loretta 2024-08-16 17:01:02 +02:00
parent f54a84aefd
commit fc4966c0dd
6 changed files with 41 additions and 2 deletions

View File

@ -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,
}

View File

@ -74,6 +74,27 @@ public static class AcEmailMessageDbSetExtension
return ctx.GetEmailMessagesByContextId(contextId).GetEmailMessagesByUserIdOrUpmId<TEmailMessage, TEmailRecipient>(userId, userProductMappingId);
}
private static IQueryable<TEmailMessage> GetEmailMessagesByIds<TEmailMessage, TEmailRecipient>(this IQueryable<TEmailMessage> queryableEmails, IQueryable<Guid> ids)
where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation<TEmailRecipient>
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<TEmailMessage> GetEmailMessagesByIds<TEmailMessage, TEmailRecipient>(this IAcEmailMessageDbSet<TEmailMessage> ctx, IQueryable<Guid> ids)
where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation<TEmailRecipient>
where TEmailRecipient : IAcEmailRecipientBase
{
return ctx.EmailMessages.GetEmailMessagesByIds<TEmailMessage, TEmailRecipient>(ids);
}
public static IQueryable<TEmailMessage> GetEmailMessagesByIds<TEmailMessage, TEmailRecipient>(this IAcEmailMessageDbSet<TEmailMessage> ctx, Guid contextId, IQueryable<Guid> ids)
where TEmailMessage : class, IAcEmailMessageBase, IAcEmailRecipientsRelation<TEmailRecipient>
where TEmailRecipient : IAcEmailRecipientBase
{
return ctx.GetEmailMessagesByContextId(contextId).GetEmailMessagesByIds<TEmailMessage, TEmailRecipient>(ids);
}
#region Add, Update, Remove
public static bool AddEmailMessage<TEmailMessage>(this IAcEmailMessageDbSet<TEmailMessage> ctx, TEmailMessage emailMessage) where TEmailMessage : class, IAcEmailMessageBase

View File

@ -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<TEmailRecipient> : IAcEmailMessage<TEmailRe
public Guid ContextId { get; set; }
public Guid? SenderId { get; set; }
public MessageContextType ContextType { get; set; }
public virtual List<TEmailRecipient> Recipients { get; set; } = [];

View File

@ -26,7 +26,7 @@ public abstract class AcEmailRecipient<TEmailMessage> : IAcEmailRecipient<TEmail
public Guid RecipientId { get; set; }
public Guid EmailMessageId { get; set; }
public string EmailAddress { get; set; }
public bool IsReaded { get; set; }
public virtual TEmailMessage EmailMessage { get; set; }

View File

@ -1,4 +1,5 @@
using AyCode.Interfaces.Entities;
using AyCode.Core.Enums;
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo;
using AyCode.Interfaces.Users;
@ -10,6 +11,8 @@ public interface IAcEmailMessageBase : IEntityGuid, ITimeStampInfo, IAcEmailAddr
public Guid ContextId { get; set; }
public Guid? SenderId { get; set; }
public MessageContextType ContextType { get; set; }
public string Subject { get; set; }
public string? Text { get; set; }
public bool IsReaded { get; set; }

View File

@ -8,4 +8,5 @@ public interface IAcEmailRecipientBase : IEntityGuid, ITimeStampInfo, IAcEmailAd
{
public Guid RecipientId { get; set; }
public Guid EmailMessageId { get; set; }
public bool IsReaded { get; set; }
}