Exemplo n.º 1
0
        public async Task <PagedResult <ResultPreviewDto> > GetPagedAsync(QueryRequest queryRequest,
                                                                          CancellationToken cancellationToken)
        {
            if (queryRequest == null)
            {
                throw new ArgumentNullException(nameof(queryRequest));
            }

            var expressionBuilder = new QueryExpressionBuilder(ResultProjectionExpressions);

            var result = await _resultsRepository.GetPagedPreviewsAsync(
                queryRequest.PageRequest.Next,
                queryRequest.PageRequest.Count,
                queryRequest.Descending,
                expressionBuilder.GetOrderBy <ResultProjection>(queryRequest),
                expressionBuilder.Build <ResultProjection>(queryRequest.Filters),
                queryRequest.PageRequest.TotalCount == 0,
                cancellationToken);

            queryRequest.PageRequest.TotalCount = result.TotalCount;

            return(new PagedResult <ResultPreviewDto>(result.Items.Select(m => m.ToDto()).ToList(),
                                                      queryRequest.PageRequest));
        }