public async Task <PaginatedItemsApiModel <MessageApiModel> > GetMessages(Guid userId, int pageIndex, int pageSize)
        {
            Expression <Func <Message, bool> > criteria = w => w.ReceiverId == userId || w.SenderId == userId;

            var filterPaginatedSpecification = new MessageFilterPaginatedSpecification(pageSize * pageIndex, pageSize, criteria);
            var itemsOnPage = await _repository.ListAsync(filterPaginatedSpecification);

            var filterSpecification = new MessageFilterSpecification(criteria);
            var totalItems          = await _repository.CountAsync(filterSpecification);

            var messages = itemsOnPage?.Select(w => new MessageApiModel()
            {
                Id          = w.Id,
                SenderId    = w.SenderId,
                ReceiverId  = w.ReceiverId,
                MessageText = w.MessageText,
                MessageDate = w.MessageDate,
            }) ?? new List <MessageApiModel>();

            return(new PaginatedItemsApiModel <MessageApiModel>(pageIndex, pageSize, totalItems, messages));
        }
예제 #2
0
 private async Task <bool> MessageExistsAsync(Guid id)
 {
     return(await _repository.CountAsync(id) > 0);
 }