/// <summary> /// Simple but less efficient way of getting a page url if you only know /// the id. Use the overload accepting an IPageRoute if possible to save a /// potential db query if the route isn't cached. /// </summary> public async Task <string> PageAsync(int?pageId) { if (!pageId.HasValue) { return(string.Empty); } var query = new GetPageRouteByIdQuery(pageId.Value); var route = await _queryExecutor.ExecuteAsync(query); return(Page(route)); }
public async Task <PageDetails> ExecuteAsync(GetPageDetailsByIdQuery query, IExecutionContext executionContext) { var dbPageVersion = await GetPageById(query.PageId).FirstOrDefaultAsync(); if (dbPageVersion == null) { return(null); } var pageRouteQuery = new GetPageRouteByIdQuery(query.PageId); var pageRoute = await _queryExecutor.ExecuteAsync(pageRouteQuery, executionContext); EntityNotFoundException.ThrowIfNull(pageRoute, query.PageId); var regions = await _queryExecutor.ExecuteAsync(GetRegionsQuery(dbPageVersion), executionContext); return(Map(dbPageVersion, regions, pageRoute)); }
public async Task <PageRenderSummary> ExecuteAsync(GetPageRenderSummaryByIdQuery query, IExecutionContext executionContext) { var pageRouteQuery = new GetPageRouteByIdQuery(query.PageId); var pageRoute = await _queryExecutor.ExecuteAsync(pageRouteQuery, executionContext); if (pageRoute == null) { return(null); } var dbPage = await QueryPageAsync(query, executionContext); if (dbPage == null) { return(null); } var page = _pageRenderSummaryMapper.Map <PageRenderSummary>(dbPage, pageRoute); return(page); }
public async Task <PageRenderDetails> ExecuteAsync(GetPageRenderDetailsByIdQuery query, IExecutionContext executionContext) { var dbPage = await QueryPageAsync(query, executionContext); if (dbPage == null) { return(null); } var page = _pageRenderDetailsMapper.Map(dbPage); var pageRouteQuery = new GetPageRouteByIdQuery(dbPage.PageId); page.PageRoute = await _queryExecutor.ExecuteAsync(pageRouteQuery, executionContext); var dbPageBlocks = await QueryPageBlocks(page).ToListAsync(); var allBlockTypes = await _queryExecutor.ExecuteAsync(new GetAllPageBlockTypeSummariesQuery(), executionContext); await _entityVersionPageBlockMapper.MapRegionsAsync(dbPageBlocks, page.Regions, allBlockTypes, query.PublishStatus); return(page); }
/// <summary> /// Returns page routing data for a single page. The /// PageRoute projection is a small page object focused on providing /// routing data only. Data returned from this query is cached by /// default as it's core to routing and often incorporated in more detailed /// page projections. /// </summary> /// <param name="pageId">Database id of the page to fetch routing data for.</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 <PageRoute> GetPageRouteByIdAsync(int pageId, IExecutionContext executionContext = null) { var query = new GetPageRouteByIdQuery(pageId); return(_queryExecutor.ExecuteAsync(query, executionContext)); }
public Task <PageRoute> AsRouteAsync() { var query = new GetPageRouteByIdQuery(_pageId); return(ExtendableContentRepository.ExecuteQueryAsync(query)); }
public IContentRepositoryQueryContext <PageRoute> AsRoute() { var query = new GetPageRouteByIdQuery(_pageId); return(ContentRepositoryQueryContextFactory.Create(query, ExtendableContentRepository)); }