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)));
        }
Example #2
0
        // 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));
        }