コード例 #1
0
        public async Task <IActionResult> GetMessagesForUser(int userId, [FromQuery] MesageParams messageParams)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageParams.userId = userId;

            var messagesFromRepo = await _repo.GetMessagesForUser(messageParams);

            var messages = _mapper.Map <IEnumerable <MessageToReturnDto> >(messagesFromRepo);

            Response.AddPagination(messagesFromRepo.CurrentPage, messagesFromRepo.PageSize,
                                   messagesFromRepo.TotalCount, messagesFromRepo.TotalPage);

            return(Ok(messages));
        }
コード例 #2
0
        public async Task <PagedList <Message> > GetMessagesForUser(MesageParams messageParams)
        {
            var messages = _context.Messages.AsQueryable();

            switch (messageParams.MessageContainer)
            {
            case "Inbox":
                messages = messages.Where(x => x.RecipientId == messageParams.userId && x.RecipientDeleted == false);
                break;

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

            default:
                messages = messages.Where(x => x.RecipientId == messageParams.userId && x.IsRead == false &&
                                          x.RecipientDeleted == false);
                break;
            }

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

            return(await PagedList <Message> .CreateAsync(messages, messageParams.PageNumber, messageParams.PageSize));
        }