public async Task <IActionResult> GetMessagesForUser(int userId, [FromQuery] MesageParams messageParams) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageParams.userId = userId; var messagesFromRepo = await _repo.GetMessagesForUser(messageParams); var messages = _mapper.Map <IEnumerable <MessageToReturnDto> >(messagesFromRepo); Response.AddPagination(messagesFromRepo.CurrentPage, messagesFromRepo.PageSize, messagesFromRepo.TotalCount, messagesFromRepo.TotalPage); return(Ok(messages)); }
public async Task <PagedList <Message> > GetMessagesForUser(MesageParams messageParams) { var messages = _context.Messages.AsQueryable(); switch (messageParams.MessageContainer) { case "Inbox": messages = messages.Where(x => x.RecipientId == messageParams.userId && x.RecipientDeleted == false); break; case "Outbox": messages = messages.Where(x => x.SenderId == messageParams.userId && x.SenderDeleted == false); break; default: messages = messages.Where(x => x.RecipientId == messageParams.userId && x.IsRead == false && x.RecipientDeleted == false); break; } messages = messages.OrderByDescending(x => x.MessageSent); return(await PagedList <Message> .CreateAsync(messages, messageParams.PageNumber, messageParams.PageSize)); }