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)); }
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)); }
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)); }
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); }
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)); }
/// <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)); }
public IEnumerable <IPermissionApplication> GetPermissions(GetPageRenderDetailsByIdRangeQuery query) { yield return(new PageReadPermission()); }
public IContentRepositoryQueryContext <IDictionary <int, PageRenderDetails> > AsRenderDetails(PublishStatusQuery?publishStatus = null) { var query = new GetPageRenderDetailsByIdRangeQuery(_pageIds, publishStatus); return(ContentRepositoryQueryContextFactory.Create(query, ExtendableContentRepository)); }