Exemplo n.º 1
0
        // 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();
        }
Exemplo n.º 2
0
        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));
        }