public async Task <IActionResult> GetMessageThread(int recipientId, [FromQuery] MessageThreadParams msgThreadParams) { msgThreadParams.UserId = User.Id; msgThreadParams.RecipientId = recipientId; var messages = await _messageService.GetMessageThread(msgThreadParams); Response.AddPagination(messages.CurrentPage, messages.PageSize, messages.TotalCount, messages.TotalPages); return(Ok(_mapper.Map <IEnumerable <NewMessageResponse> >(messages))); }
// Get messages of a thread (paginated) public async Task <PagedList <Message> > GetMessageThread(MessageThreadParams msgThreadparams) { var messages = _context.Messages .Include(u => u.Sender).ThenInclude(p => p.Photos) .Include(u => u.Recipient).ThenInclude(p => p.Photos) .Where(m => ( m.RecipientId == msgThreadparams.UserId && m.RecipientDeleted == false && m.SenderId == msgThreadparams.RecipientId ) || ( m.RecipientId == msgThreadparams.RecipientId && m.SenderDeleted == false && m.SenderId == msgThreadparams.UserId ) ).AsQueryable().OrderByDescending(m => m.MessageSent); return(await PagedList <Message> .CreateAsync(messages, msgThreadparams.PageNumber, msgThreadparams.PageSize)); }