Ejemplo n.º 1
0
 public List <MessageDto> LoadMessages(IContract userContract, int number, DateTime?date)
 {
     if (date == null)
     {
         date = DateTime.Now;
     }
     using (Context db = new Context(ServerHost.Settings.Ef))
     {
         try
         {
             return(db.Messages
                    .Include(_ => _.User.Image).Include(_ => _.User).Include(_ => _.Room)
                    .Where(_ => _.Room.Id == Room.Id && _.Date < date && _.Date > userContract.User.Date)
                    .OrderByDescending(_ => _.Date)
                    .Take(number)
                    .ToList().Select(_ =>
             {
                 if (_ is FileMessage message)
                 {
                     return db.FileMessages
                     .Include(fileMessage => fileMessage.Content)
                     .Include(fileMessage => fileMessage.User.Image)
                     .Include(fileMessage => fileMessage.User)
                     .Include(fileMessage => fileMessage.Room)
                     .Where(fileMessage => fileMessage.Date == message.Date &&
                            fileMessage.User.Name == message.User.Name &&
                            fileMessage.FileName == message.FileName)
                     .ToList()
                     .Select(fileMessage => FileMessage.ToFileMessageDto(fileMessage))
                     .FirstOrDefault();
                 }
                 else
                 {
                     return Message.ToMessageDto(_);
                 }
             })
                    .ToList());
         }
         catch (Exception e)
         {
             Log.Error(e);
         }
         return(null);
     }
 }