public async Task <IDictionary <int, PageSummary> > ExecuteAsync(GetPageSummariesByIdRangeQuery query, IExecutionContext executionContext)
        {
            var dbResult = await QueryPages(query, executionContext);

            var mappedResult = await _pageSummaryMapper.MapAsync(dbResult, executionContext);

            var dictionary = mappedResult.ToDictionary(d => d.PageId);

            return(dictionary);
        }
        private IQueryable <Page> CreateQuery(GetPageSummariesByIdRangeQuery query)
        {
            var dbQuery = _dbContext
                          .Pages
                          .AsNoTracking()
                          .Include(p => p.Creator)
                          .FilterActive()
                          .Where(p => query.PageIds.Contains(p.PageId));

            return(dbQuery);
        }
        public async Task <IDictionary <int, PageSummary> > ExecuteAsync(GetPageSummariesByIdRangeQuery query, IExecutionContext executionContext)
        {
            var dbResult = await CreateQuery(query).ToListAsync();

            // Finish mapping children
            var mappedResult = await _pageSummaryMapper.MapAsync(dbResult, executionContext);

            var dictionary = mappedResult.ToDictionary(d => d.PageId);

            return(dictionary);
        }
        private Task <List <Page> > QueryPages(GetPageSummariesByIdRangeQuery query, IExecutionContext executionContext)
        {
            var results = _dbContext
                          .PagePublishStatusQueries
                          .AsNoTracking()
                          .Include(p => p.Page)
                          .ThenInclude(p => p.Creator)
                          .FilterByStatus(PublishStatusQuery.Latest, executionContext.ExecutionDate)
                          .FilterActive()
                          .Where(p => query.PageIds.Contains(p.PageId))
                          .Select(p => p.Page)
                          .ToListAsync();

            return(results);
        }
Beispiel #5
0
        public async Task <IActionResult> Get(
            [FromQuery] SearchPageSummariesQuery query,
            [FromQuery] GetPageSummariesByIdRangeQuery rangeQuery
            )
        {
            if (rangeQuery != null && rangeQuery.PageIds != null)
            {
                var rangeResults = await _queryExecutor.ExecuteAsync(rangeQuery);

                return(_apiResponseHelper.SimpleQueryResponse(this, rangeResults.FilterAndOrderByKeys(rangeQuery.PageIds)));
            }

            if (query == null)
            {
                query = new SearchPageSummariesQuery();
            }

            var results = await _queryExecutor.ExecuteAsync(query);

            return(_apiResponseHelper.SimpleQueryResponse(this, results));
        }
Beispiel #6
0
        public async Task <JsonResult> Get(
            [FromQuery] SearchPageSummariesQuery query,
            [FromQuery] GetPageSummariesByIdRangeQuery rangeQuery
            )
        {
            if (rangeQuery != null && rangeQuery.PageIds != null)
            {
                return(await _apiResponseHelper.RunWithResultAsync(async() =>
                {
                    return await _domainRepository
                    .WithQuery(rangeQuery)
                    .FilterAndOrderByKeys(rangeQuery.PageIds)
                    .ExecuteAsync();
                }));
            }

            if (query == null)
            {
                query = new SearchPageSummariesQuery();
            }
            ApiPagingHelper.SetDefaultBounds(query);

            return(await _apiResponseHelper.RunQueryAsync(query));
        }
Beispiel #7
0
        public IDomainRepositoryQueryContext <IDictionary <int, PageSummary> > AsSummaries()
        {
            var query = new GetPageSummariesByIdRangeQuery(_pageIds);

            return(DomainRepositoryQueryContextFactory.Create(query, ExtendableContentRepository));
        }