public async Task <ActionResult> Get([FromQuery] MessagesListFilters filters) { _logger.LogInformation($"Retriving last {filters.Amount} messages for room {filters.RoomId.ToString()}"); List <MessageDto> messages = new List <MessageDto>(); try { messages = await _roomService.GetMessagesForRoom(filters); } catch (Exception e) { _logger.LogInformation($"Error was thrown during retriving messeges. Exception message {e.Message}. Inner error message {e.InnerException?.Message}"); throw e; } return(Ok(messages)); }
public Task <List <MessageDto> > GetMessagesForRoom(MessagesListFilters filters) { var messages = _context.Messages.Where(c => c.RoomId == filters.RoomId) .Include(c => c.User) .OrderByDescending(c => c.CreatedAt) .Take(filters.Amount) .Select(c => new MessageDto { UserId = c.User.ExternalId, Login = c.User.Login, ChatRoomId = c.RoomId, Content = c.Content, CreatedAt = c.CreatedAt }) .OrderBy(c => c.CreatedAt) .ToListAsync(); return(messages); }