public async Task <PagedList <MessageDto> > GetMessagesForUser(messageParams messageParams) { var query = _context.Messages.OrderByDescending(m => m.MessageSent) .ProjectTo <MessageDto>(_mapper.ConfigurationProvider) .AsQueryable(); query = messageParams.Container switch { "Inbox" => query.Where(u => u.RecipentUsername == messageParams.Username && u.RecipentDeleted == false), "Outbox" => query.Where(u => u.SenderUsername == messageParams.Username && u.SenderDeleted == false), _ => query.Where(u => u.RecipentUsername == messageParams.Username && u.RecipentDeleted == false && u.DateRead == null) // unread messages }; return(await PagedList <MessageDto> .CreateAsync(query, messageParams.PageNumber, messageParams.PageSize)); }
public async Task <ActionResult <IEnumerable <MessageDto> > > GetMessagesForUser([FromQuery] messageParams messageParams) { messageParams.Username = User.GetUsername(); var messages = await _unitOfWork.MessageRepository.GetMessagesForUser(messageParams); Response.AddPaginationHeader(messages.CurrentPage, messages.PageSize, messages.TotalCount, messages.TotalPages); return(messages); }