Esempio n. 1
0
        public async Task <PagedList <MessageDto> > GetMessagesForUser(messageParams messageParams)
        {
            var query = _context.Messages.OrderByDescending(m => m.MessageSent)
                        .ProjectTo <MessageDto>(_mapper.ConfigurationProvider)
                        .AsQueryable();

            query = messageParams.Container switch
            {
                "Inbox" => query.Where(u => u.RecipentUsername == messageParams.Username && u.RecipentDeleted == false),
                "Outbox" => query.Where(u => u.SenderUsername == messageParams.Username && u.SenderDeleted == false),
                _ => query.Where(u => u.RecipentUsername == messageParams.Username &&
                                 u.RecipentDeleted == false && u.DateRead == null) // unread messages
            };

            return(await PagedList <MessageDto> .CreateAsync(query, messageParams.PageNumber, messageParams.PageSize));
        }
Esempio n. 2
0
        public async Task <ActionResult <IEnumerable <MessageDto> > > GetMessagesForUser([FromQuery] messageParams messageParams)
        {
            messageParams.Username = User.GetUsername();
            var messages = await _unitOfWork.MessageRepository.GetMessagesForUser(messageParams);

            Response.AddPaginationHeader(messages.CurrentPage, messages.PageSize, messages.TotalCount, messages.TotalPages);
            return(messages);
        }