private IQueryable <MessagesBCCs> findBCC(Message message) { return(context.Users.Where(u => message.BCC.Select(r => r.Email).Contains(u.Email)) .Select(u => new MessagesBCCs() { User = u, MessageId = message.Id, IsRead = message.IsReadBy(u.Email) })); }
public static Message CreateMessage(Database.POCO.Message messageEntity) { var msg = new Message(messageEntity, new User(messageEntity.Sender)); msg.Attachments = messageEntity.Attachments.Select(a => new Attachment(a, msg)).ToList(); messageEntity.MessagesReceivers.ForEach(mr => msg.AddReceiver(new User(mr.User), mr.IsRead)); messageEntity.MessagesCCs.ForEach(mcc => msg.AddCcUser(new User(mcc.User), mcc.IsRead)); messageEntity.MessagesBCCs.ForEach(mbcc => msg.AddBccUser(new User(mbcc.User), mbcc.IsRead)); return(msg); }
private static Message createMessage(Database.POCO.Message entity, User sender) { var msg = new Message(entity, sender); msg.Attachments = entity.Attachments.Select(a => new Attachment(a, msg)).ToList(); entity.MessagesReceivers.ForEach(mr => msg.AddReceiver(new User(mr.User), mr.IsRead)); entity.MessagesCCs.ForEach(mcc => msg.AddCcUser(new User(mcc.User), mcc.IsRead)); entity.MessagesBCCs.ForEach(mbcc => msg.AddBccUser(new User(mbcc.User), mbcc.IsRead)); return(msg); }
public async Task <Message> AddAsync(Message message) { var messageEntity = new Database.POCO.Message() { Subject = message.Subject, MessageBody = message.MessageBody, Sender = context.Users.First(u => u.Email.Equals(message.Sender.Email)), MessagesReceivers = findReceivers(message).ToList(), MessagesCCs = findCC(message).ToList(), MessagesBCCs = findBCC(message).ToList(), Attachments = findAttachments(message).ToList(), ReceivedTime = message.ReceivedTime }; var added = context.Messages.Add(messageEntity).Entity; await context.SaveChangesAsync(); return(createMessage(added)); }
public async Task <Message> UpdateAsync(Message message) { var messageEntity = context.Messages.Find(message.Id); messageEntity.Subject = message.Subject; messageEntity.MessageBody = message.MessageBody; messageEntity.Sender = context.Users.First(u => u.Email.Equals(message.Sender.Email)); messageEntity.MessagesReceivers = findReceivers(message).ToList(); messageEntity.MessagesCCs = findCC(message).ToList(); messageEntity.MessagesBCCs = findBCC(message).ToList(); messageEntity.Attachments = findAttachments(message).ToList(); messageEntity.ReceivedTime = message.ReceivedTime; // if message does not have any receiver / bcc member left, it is deleted from db if (!messageEntity.Receivers.Any() && !messageEntity.BCC.Any() && !messageEntity.CC.Any()) { return(await deleteMessage(messageEntity)); } var updated = context.Messages.Update(messageEntity).Entity; await context.SaveChangesAsync(); return(createMessage(updated)); }
public async Task <Message> DeleteAsync(Message message) { var messageEntity = context.Messages.Find(message.Id); return(await deleteMessage(messageEntity)); }
private IQueryable <Database.POCO.Attachment> findAttachments(Message message) { return(message.Attachments.AsQueryable().Select(a => context.Attachments.First(a1 => a1.Filename.Equals(a.Filename) && a1.Url.Equals(a.Url)))); }