// uses usermessageParams public async Task <PagedList <Message> > GetMessagesForUser(UserMessageParams userMessageParams) { var messages = _context.Messages.Include(u => u.Sender).ThenInclude(p => p.Photos) .Include(u => u.Recipient).ThenInclude(p => p.Photos).AsQueryable(); // Looking for what container it is in, checking the boolean as well switch (userMessageParams.MessageContainer) { case "Inbox": messages = messages.Where(u => u.RecipientId == userMessageParams.UserId && u.RecipientDeleted == false); break; case "Outbox": messages = messages.Where(u => u.SenderId == userMessageParams.UserId && u.SenderDeleted == false); break; default: messages = messages.Where(u => u.RecipientId == userMessageParams.UserId && u.RecipientDeleted == false && u.isRead == false); break; } messages = messages.OrderByDescending(d => d.DateSent); return(await PagedList <Message> .CreateAsync(messages, userMessageParams.PageNumber, userMessageParams.PageSize)); // throw new System.NotImplementedException(); }
public async Task <IActionResult> GetMessagesForUser(int userId, UserMessageParams usermessageParams) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } var messageFromRepo = await _repo.GetMessagesForUser(usermessageParams); var messages = _mapper.Map <IEnumerable <UserMessageToReturnDto> >(messageFromRepo); Response.AddPagination(messageFromRepo.CurrentPage, messageFromRepo.PageSize, messageFromRepo.TotalCount, messageFromRepo.TotalPages ); return(Ok(messages)); }