public async Task <IActionResult> getMessagesForUser(int userId,
                                                             [FromQuery] MessageParamas messageParamas)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))  //check token
            {
                return(Unauthorized());
            }
            messageParamas.UserId = userId;
            var messagesFromRepo = await _repo.GetMessagesForUser(messageParamas);

            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(MessageParamas messageParamas)
        {
            var messages = _context.Messages
                           .Include(u => u.Sender).ThenInclude(p => p.photos)
                           .Include(u => u.Recipient).ThenInclude(p => p.photos)
                           .AsQueryable();

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

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

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

            messages = messages.OrderByDescending(d => d.MessageSent);
            return(await PagedList <Message> .createAsync(messages, messageParamas.PageNumber, messageParamas.PageSize));
        }