public async Task <IActionResult> getMessagesForUser(int userId, [FromQuery] MessageParamas messageParamas) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) //check token { return(Unauthorized()); } messageParamas.UserId = userId; var messagesFromRepo = await _repo.GetMessagesForUser(messageParamas); var messages = _mapper.Map <IEnumerable <MessageToReturnDto> >(messagesFromRepo); Response.AddPagination(messagesFromRepo.CurrentPage, messagesFromRepo.PageSize, messagesFromRepo.TotalCount, messagesFromRepo.TotalPages); return(Ok(messages)); }
public async Task <PagedList <Message> > GetMessagesForUser(MessageParamas messageParamas) { var messages = _context.Messages .Include(u => u.Sender).ThenInclude(p => p.photos) .Include(u => u.Recipient).ThenInclude(p => p.photos) .AsQueryable(); switch (messageParamas.MessageContainer) { case "Inbox": messages = messages.Where(u => u.RecipientId == messageParamas.UserId && u.RecipientDeleted == false); break; case "Outbox": messages = messages.Where(u => u.SenderId == messageParamas.UserId && u.SenderDeleted == false); break; default: messages = messages.Where(u => u.RecipientId == messageParamas.UserId && u.RecipientDeleted == false && u.IsRead == false); break; } messages = messages.OrderByDescending(d => d.MessageSent); return(await PagedList <Message> .createAsync(messages, messageParamas.PageNumber, messageParamas.PageSize)); }