/// <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));
        }
Example #2
0
        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);
        }
Example #5
0
        /// <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));
        }