public async Task <PagedResult <Message> > GetMessages(int userId, MessageForFilterDto filter) { var query = _context.Messages .Include(u => u.Sender).ThenInclude(p => p.Photos) .Include(u => u.Recipient).ThenInclude(p => p.Photos) .AsQueryable(); switch (filter.Container?.ToLower()) { case "inbox": query = query.Where(u => u.RecipientId == userId && u.RecipientDeleted == false); break; case "outbox": query = query.Where(u => u.SenderId == userId && u.SenderDeleted == false); break; default: query = query.Where(u => u.RecipientId == userId && u.RecipientDeleted == false && u.IsRead == false); break; } query = query.OrderByDescending(d => d.MessageSent); return(await this.PagedFilterAsync(query, filter.PageNumber, filter.PageSize)); }
public async Task <IActionResult> GetMessageForUser([FromQuery] MessageForFilterDto filterDto) { var messages = await _service.GetMessages(base.GetUserIdFromToken(), filterDto); Response.AddPagination( messages.CurrentPage, messages.PageSize, messages.TotalCount, messages.TotalPages ); return(Ok(_mapper.To <IEnumerable <MessageToReturnDto> >(messages))); }
public Task <PagedResult <Message> > GetMessages(int userId, MessageForFilterDto filter) => _unitOfWork.Messages.GetMessages(userId, filter);