Ejemplo n.º 1
0
        private async Task <IEnumerable <PageVersion> > GetPagesAsync(GetPageRenderDetailsByIdRangeQuery query, IExecutionContext executionContext)
        {
            if (query.PublishStatus == PublishStatusQuery.SpecificVersion)
            {
                throw new InvalidOperationException("PublishStatusQuery.SpecificVersion not supported in GetPageRenderDetailsByIdRangeQuery");
            }

            var dbResults = await _dbContext
                            .PagePublishStatusQueries
                            .AsNoTracking()
                            .Include(v => v.PageVersion)
                            .ThenInclude(v => v.Page)
                            .Include(v => v.PageVersion)
                            .ThenInclude(v => v.OpenGraphImageAsset)
                            .Include(v => v.PageVersion)
                            .ThenInclude(v => v.PageTemplate)
                            .ThenInclude(t => t.PageTemplateRegions)
                            .FilterActive()
                            .FilterByStatus(query.PublishStatus, executionContext.ExecutionDate)
                            .Where(v => query.PageIds.Contains(v.PageId))
                            .ToListAsync();

            return(dbResults
                   .Select(r => r.PageVersion));
        }
Ejemplo n.º 2
0
        public async Task <IDictionary <int, PageRenderDetails> > ExecuteAsync(GetPageRenderDetailsByIdRangeQuery query, IExecutionContext executionContext)
        {
            var dbPages = await GetPagesAsync(query, executionContext);

            var pageRoutesQuery = new GetPageRoutesByIdRangeQuery(GetAllPageIds(dbPages));
            var pageRoutes      = await _queryExecutor.ExecuteAsync(pageRoutesQuery, executionContext);

            var pages = dbPages
                        .Select(p => _pageMapper.Map(p, pageRoutes))
                        .ToList();

            MapPageRoutes(pages, pageRoutes);

            var dbPageBlocks = await QueryPageBlocks(pages).ToListAsync();

            var allBlockTypes = await _queryExecutor.ExecuteAsync(new GetAllPageBlockTypeSummariesQuery(), executionContext);

            await _entityVersionPageBlockMapper.MapRegionsAsync(
                dbPageBlocks,
                pages.SelectMany(p => p.Regions),
                allBlockTypes,
                query.PublishStatus,
                executionContext
                );

            return(pages.ToDictionary(d => d.PageId));
        }
Ejemplo n.º 3
0
        public IDictionary <int, PageRenderDetails> Execute(GetPageRenderDetailsByIdRangeQuery query, IExecutionContext executionContext)
        {
            var dbPages = QueryPages(query).ToList();
            var pages   = Mapper.Map <List <PageRenderDetails> >(dbPages);

            var pageRoutes = _queryExecutor.GetByIdRange <PageRoute>(GetAllPageIds(pages), executionContext);

            MapPageRoutes(pages, pageRoutes);

            var dbModules      = QueryModules(pages).ToList();
            var allModuleTypes = _queryExecutor.GetAll <PageModuleTypeSummary>(executionContext);

            _entityVersionPageModuleMapper.MapSections(dbModules, pages.SelectMany(p => p.Sections), allModuleTypes, query.WorkFlowStatus);

            return(pages.ToDictionary(d => d.PageId));
        }
Ejemplo n.º 4
0
        private IQueryable <PageVersion> QueryPages(GetPageRenderDetailsByIdRangeQuery query)
        {
            if (query.WorkFlowStatus == WorkFlowStatusQuery.SpecificVersion)
            {
                throw new InvalidOperationException("WorkFlowStatusQuery.SpecificVersion not supported in GetPageRenderDetailsByIdRangeQuery");
            }

            IQueryable <PageVersion> dbQuery = _dbContext
                                               .PageVersions
                                               .AsNoTracking()
                                               .Where(v => query.PageIds.Contains(v.PageId) && !v.IsDeleted)
                                               .FilterByWorkFlowStatusQuery(query.WorkFlowStatus)
                                               .Include(v => v.Page)
                                               .Include(v => v.PageTemplate)
                                               .Include(v => v.PageTemplate.PageTemplateSections);

            return(dbQuery);
        }
Ejemplo n.º 5
0
        private IQueryable <PageVersion> QueryPages(GetPageRenderDetailsByIdRangeQuery query, IExecutionContext executionContext)
        {
            if (query.PublishStatus == PublishStatusQuery.SpecificVersion)
            {
                throw new InvalidOperationException("PublishStatusQuery.SpecificVersion not supported in GetPageRenderDetailsByIdRangeQuery");
            }

            var dbQuery = _dbContext
                          .PagePublishStatusQueries
                          .AsNoTracking()
                          .FilterActive()
                          .FilterByStatus(query.PublishStatus, executionContext.ExecutionDate)
                          .Where(v => query.PageIds.Contains(v.PageId))
                          .Select(p => p.PageVersion)
                          .Include(v => v.Page)
                          .Include(v => v.OpenGraphImageAsset)
                          .Include(v => v.PageTemplate)
                          .ThenInclude(t => t.PageTemplateRegions);

            return(dbQuery);
        }
        public Task <IDictionary <int, PageRenderDetails> > AsRenderDetailsAsync(PublishStatusQuery?publishStatus = null)
        {
            var query = new GetPageRenderDetailsByIdRangeQuery(_pageIds, publishStatus);

            return(ExtendableContentRepository.ExecuteQueryAsync(query));
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Gets a range of pages by their ids projected as PageRenderDetails models. A PageRenderDetails contains
 /// the data required to render a page, including template data for all the content-editable regions.
 /// </summary>
 /// <param name="query">Query parameters</param>
 /// <param name="executionContext">Optional execution context to use when executing the query. Useful if you need to temporarily elevate your permission level.</param>
 public Task <IDictionary <int, PageRenderDetails> > GetPageRenderDetailsByIdRangeAsync(GetPageRenderDetailsByIdRangeQuery query, IExecutionContext executionContext = null)
 {
     return(_queryExecutor.ExecuteAsync(query, executionContext));
 }
Ejemplo n.º 8
0
 public IEnumerable <IPermissionApplication> GetPermissions(GetPageRenderDetailsByIdRangeQuery query)
 {
     yield return(new PageReadPermission());
 }
Ejemplo n.º 9
0
        public IContentRepositoryQueryContext <IDictionary <int, PageRenderDetails> > AsRenderDetails(PublishStatusQuery?publishStatus = null)
        {
            var query = new GetPageRenderDetailsByIdRangeQuery(_pageIds, publishStatus);

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