public IActionResult GetListChatByUser(int id) { var chats = _context.ChatMessages .Include(x => x.Receiver) .Include(x => x.Sender) .Where(x => x.SenderId == id || x.ReceiverId == id) .GroupBy(x => x.RoomId); var distinctChats = chats .Select(x => x.LastOrDefault()) .ToList(); var unreadChats = chats .Select(x => x.Count(y => y.ReceiverId == id && !y.IsRead)) .ToList(); return(Ok(ChatMessagesMapping.ChatMessagesResponseMapping(distinctChats, unreadChats, id))); }
public IActionResult GetListMessagesByRoomId(string roomId, int userId) { var chats = _context.ChatMessages .Include(x => x.Receiver) .Include(x => x.Sender) .Where(x => x.RoomId.Equals(roomId)) .ToList(); var unread = chats.Where(x => x.ReceiverId == userId && !x.IsRead).ToList(); if (unread != null) { foreach (var item in unread) { item.IsRead = true; _context.ChatMessages.Update(item); } _context.Commit(); } return(Ok(ChatMessagesMapping.ChatMessagesRoomResponseMapping(chats))); }