Exemplo n.º 1
0
 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)
     }));
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        public async Task <Message> DeleteAsync(Message message)
        {
            var messageEntity = context.Messages.Find(message.Id);

            return(await deleteMessage(messageEntity));
        }
Exemplo n.º 7
0
 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))));
 }