Exemple #1
0
        public async Task MapAsync(
            PageBlockTypeDisplayModelMapperContext <DirectoryListDataModel> context,
            PageBlockTypeDisplayModelMapperResult <DirectoryListDataModel> result
            )
        {
            foreach (var item in context.Items)
            {
                var query = new SearchPageRenderSummariesQuery();
                query.PageDirectoryId = item.DataModel.PageDirectoryId;
                query.PageSize        = item.DataModel.PageSize;

                // Pass through the workflow status so that we only show published pages
                // when viewing the live site.
                query.PublishStatus = context.PublishStatusQuery;

                var displayModel = new DirectoryListDisplayModel();
                displayModel.Pages = await _contentRepository
                                     .WithExecutionContext(context.ExecutionContext)
                                     .Pages()
                                     .Search()
                                     .AsRenderSummaries(query)
                                     .ExecuteAsync();

                result.Add(item, displayModel);
            }
        }
        private Task <PagedQueryResult <PageVersion> > QueryPagesAsync(SearchPageRenderSummariesQuery query, IExecutionContext executionContext)
        {
            var dbQuery = _dbContext
                          .PagePublishStatusQueries
                          .AsNoTracking()
                          .Include(v => v.PageVersion)
                          .ThenInclude(v => v.OpenGraphImageAsset)
                          .FilterByStatus(query.PublishStatus, executionContext.ExecutionDate)
                          .FilterActive()
            ;

            if (query.LocaleId > 0)
            {
                dbQuery = dbQuery.FilterByLocaleId(query.LocaleId.Value);
            }

            if (query.PageDirectoryId > 0)
            {
                dbQuery = dbQuery.FilterByDirectoryId(query.PageDirectoryId.Value);
            }

            return(dbQuery
                   .SortBy(query.SortBy, query.SortDirection)
                   .Select(p => p.PageVersion)
                   .ToPagedResultAsync(query));
        }
        private IQueryable <PageVersion> CreateQuery(SearchPageRenderSummariesQuery query, IExecutionContext executionContext)
        {
            var dbQuery = _dbContext
                          .PagePublishStatusQueries
                          .AsNoTracking()
                          .Include(v => v.PageVersion)
                          .ThenInclude(v => v.OpenGraphImageAsset)
                          .FilterByStatus(query.PublishStatus, executionContext.ExecutionDate)
                          .FilterActive()
            ;

            // Filter by locale
            if (query.LocaleId > 0)
            {
                dbQuery = dbQuery.FilterByLocaleId(query.LocaleId.Value);
            }

            // Filter by directory
            if (query.PageDirectoryId > 0)
            {
                dbQuery = dbQuery.FilterByDirectoryId(query.PageDirectoryId.Value);
            }

            return(dbQuery
                   .SortBy(query.SortBy, query.SortDirection)
                   .Select(p => p.PageVersion));
        }
        public async Task <PagedQueryResult <PageRenderSummary> > ExecuteAsync(SearchPageRenderSummariesQuery query, IExecutionContext executionContext)
        {
            var dbPagedResult = await QueryPagesAsync(query, executionContext);

            var allPageIds    = dbPagedResult.Items.Select(p => p.PageId);
            var allPageRoutes = await _queryExecutor.ExecuteAsync(new GetPageRoutesByIdRangeQuery(allPageIds));

            var results = new List <PageRenderSummary>(dbPagedResult.Items.Count);

            foreach (var dbResult in dbPagedResult.Items)
            {
                var mappedResult = _pageRenderSummaryMapper.Map <PageRenderSummary>(dbResult, allPageRoutes);
                results.Add(mappedResult);
            }

            return(dbPagedResult.ChangeType(results));
        }
Exemple #5
0
 public IDomainRepositoryQueryContext <PagedQueryResult <PageRenderSummary> > AsRenderSummaries(SearchPageRenderSummariesQuery query)
 {
     return(DomainRepositoryQueryContextFactory.Create(query, ExtendableContentRepository));
 }
 public IEnumerable <IPermissionApplication> GetPermissions(SearchPageRenderSummariesQuery query)
 {
     yield return(new PageReadPermission());
 }