public async Task <PageList <Message> > GetMessagesForUser(MessagesParam messagesParam) { var messages = _context.Messages .Include(u => u.Sender) .ThenInclude(p => p.Photos) .Include(u => u.Recipient) .ThenInclude(p => p.Photos).AsQueryable(); switch (messagesParam.MessageContainer) { case "Inbox": messages = messages.Where(m => m.RecipientId == messagesParam.UserId && m.RecipientDelete == false); break; case "Outbox": messages = messages.Where(m => m.SenderId == messagesParam.UserId && m.SenderDelete == false); break; default: messages = messages.Where(m => m.RecipientId == messagesParam.UserId && m.IsRead == false && m.RecipientDelete == false); break; } messages = messages.OrderByDescending(i => i.MessageSent); return(await PageList <Message> .CreateAsync(messages, messagesParam.PageNumber, messagesParam.PageSize)); }
public async Task <PagedList <Message> > GetMessageForUser(MessagesParam messagesParam) { var messages = _context.Messages // .Include(u => u.Sender) // Due to the Lazy Loadiing We can remove Include Statement which produce a warning // .ThenInclude(p => p.Photos) // Which is related to paging With Include Statement if we perform Count function then // .Include(u => u.Recipient) // the Include statement code is unreachable and unesscary which produre warning // .ThenInclude(p => p.Photos) .AsQueryable(); switch (messagesParam.MessageContainer) { case "Inbox": messages = messages.Where(q => q.RecipientId == messagesParam.UserID && q.RecipientDeleted == false); break; case "Outbox": messages = messages.Where(q => q.SenderId == messagesParam.UserID && q.SenderDeleted == false); break; default: messages = messages.Where(q => q.RecipientId == messagesParam.UserID && q.RecipientDeleted == false && q.IsRead == false); break; } messages = messages.OrderByDescending(q => q.MessageSent); return(await PagedList <Message> .CreateAsync(messages, messagesParam.PageNumber, messagesParam.pageSize)); }
public async Task <IActionResult> GetMessages(int UserId, [FromQuery] MessagesParam messagesParam) { if (UserId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messagesParam.UserID = UserId; var messages = await _repo.GetMessageForUser(messagesParam); var MessagesToReturn = _mapper.Map <IEnumerable <MessageToReturnDto> >(messages); Response.AddPaginationHeader(messages.CurrentPage, messages.PageSize, messages.TotalCount, messages.TotalPages); return(Ok(MessagesToReturn)); }
public async Task <IActionResult> GetMessages(int userId, [FromQuery] MessagesParam messagesParam) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messagesParam.UserId = userId; var messageFromRepos = await _repos.GetMessagesForUser(messagesParam); if (messagesParam == null) { return(BadRequest("no message found")); } var messageToReturn = _mapper.Map <IEnumerable <MessageToReturnDto> >(messageFromRepos); Response.AddPagination(messageFromRepos.CurrentPage, messageFromRepos.PageSize, messageFromRepos.TotalItems, messageFromRepos.TotalPages); return(Ok(messageToReturn)); }
public async Task <IActionResult> GetMessagesForUser(int userId, [FromQuery] MessagesParam messagesParam) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messagesParam.UserId = userId; var messagesFromRepo = await datingRepository.GetMessagesForUser(messagesParam); var messages = mapper.Map <IEnumerable <MessageToReturnDto> >(messagesFromRepo); Response.AddPagination(messagesParam.PageNumber, messagesParam.PageSize, messagesFromRepo.TotalCount, messagesFromRepo.TotalPages); return(Ok(messages)); }