示例#1
0
        public async Task <PagedResult <Message> > GetMessages(int userId, MessageForFilterDto filter)
        {
            var query = _context.Messages
                        .Include(u => u.Sender).ThenInclude(p => p.Photos)
                        .Include(u => u.Recipient).ThenInclude(p => p.Photos)
                        .AsQueryable();

            switch (filter.Container?.ToLower())
            {
            case "inbox":
                query = query.Where(u => u.RecipientId == userId &&
                                    u.RecipientDeleted == false);
                break;

            case "outbox":
                query = query.Where(u => u.SenderId == userId &&
                                    u.SenderDeleted == false);
                break;

            default:
                query = query.Where(u => u.RecipientId == userId &&
                                    u.RecipientDeleted == false && u.IsRead == false);
                break;
            }

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

            return(await this.PagedFilterAsync(query, filter.PageNumber, filter.PageSize));
        }
示例#2
0
        public async Task <IActionResult> GetMessageForUser([FromQuery] MessageForFilterDto filterDto)
        {
            var messages = await _service.GetMessages(base.GetUserIdFromToken(), filterDto);

            Response.AddPagination(
                messages.CurrentPage,
                messages.PageSize,
                messages.TotalCount,
                messages.TotalPages
                );

            return(Ok(_mapper.To <IEnumerable <MessageToReturnDto> >(messages)));
        }
示例#3
0
 public Task <PagedResult <Message> > GetMessages(int userId, MessageForFilterDto filter) =>
 _unitOfWork.Messages.GetMessages(userId, filter);