Exemplo n.º 1
0
 public IEnumerable <DirectChatDto> GetChats(string tokenId, string userId)
 {
     return(_directChatGR.GetDbSet().Where(x => x.User1Id == userId || x.User2Id == userId).Include(x => x.Messages).OrderBy(x => x.LastModify).ToArray().Select(x => new DirectChatDto {
         Id = x.Id,
         Read = !((userId == x.User1Id && x.Read == 1) || (userId == x.User2Id && x.Read == 2)),
         SubscribeToken = _chatEventService.CreateSubscriptionToken(tokenId, x.Id),
         LastMessage = _mapper.Map <DirectMessage, MessageDto>(x.Messages.OrderBy(x => x.Date).Last()),
         User = _userService.GetShortDto(x.User1Id == userId ? x.User2Id : x.User1Id),
         Typing = _chatEventService.IsTyping(x.Id, x.User1Id == userId ? x.User2Id : x.User1Id)
     }).ToArray().Select(x => {
         if (x.LastMessage != null)
         {
             x.LastMessage.Sender = _userService.GetShortDto(x.LastMessage.Sender.Id);
         }
         return x;
     }));
 }