public async Task <IActionResult> GetMessagesForUser(string senderId, [FromQuery] MessageParms messageParms)
        {
            var a = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (senderId != User.FindFirst(ClaimTypes.NameIdentifier).Value)
            {
                return(Unauthorized());
            }

            messageParms.UserId = senderId;
            var messageFromRepo = await _unitofWork.MessageRepository.GetMessagesForUser(messageParms);

            var message = _mapper.Map <IEnumerable <MessageToReturnDTO> >(messageFromRepo);

            return(Ok(message));
        }
        public async Task <IActionResult> GetMessagesForUser(int userId
                                                             , [FromQuery] MessageParms messageParms)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageParms.UserId = userId;

            var messagesFromRepo = await _repo.GetMessagesForUser(messageParms);

            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(MessageParms messageParms)
        {
            var messages = _context.Messages.AsQueryable();

            switch (messageParms.MessageContainer)
            {
            case "Inbox":
                messages = messages.Where(u => u.RecipientId == messageParms.UserId && u.RecipientDeleted == false);
                break;

            case "Outbox":
                messages = messages.Where(u => u.SenderId == messageParms.UserId && u.SenderDeleted == false);
                break;

            default:
                messages = messages.Where(u => u.RecipientId == messageParms.UserId && u.IsRead == false && u.RecipientDeleted == false);
                break;
            }

            messages = messages.OrderByDescending(d => d.MessageSent);

            return(await PagedList <Message> .CreateAsync(messages, messageParms.PageNumber, messageParms.PageSize));
        }
Example #4
0
        public async Task <PagedList <Message> > GetMessagesForUser(MessageParms messageParms)
        {
            var messages = _db.Messages.Include(x => x.Sender).ThenInclude(p => p.Photos)
                           .Include(y => y.Receiver).ThenInclude(p => p.Photos).AsQueryable();

            switch (messageParms.MessageStatus)
            {
            case "Inbox":
                messages = messages.Where(x => x.ReceiverId == messageParms.UserId && x.ReceiverDeleted == false);
                break;

            case "Outbox":
                messages = messages.Where(x => x.SenderId == messageParms.UserId && x.SenderDeleted == false);
                break;

            default:
                messages = messages.Where(x => x.ReceiverId == messageParms.UserId && x.ReceiverDeleted == false && x.IsRead == false);
                break;
            }
            messages = messages.OrderByDescending(x => x.MessageSentTime);

            return(await PagedList <Message> .CreteAsync(messages, messageParms.PageNumber, messageParms.PageSize));
        }