public async Task ExecuteAsync(Controller controller, PageActionRoutingState state)
        {
            var query = new GetPageRenderDetailsByIdQuery();

            query.PageId = state.PageRoutingInfo.PageRoute.PageId;

            if (state.InputParameters.IsEditingCustomEntity)
            {
                // If we're editing a custom entity, then get the latest version of the page
                query.PublishStatus = PublishStatusQuery.Latest;
            }
            else if (state.InputParameters.VersionId.HasValue)
            {
                query.PublishStatus = PublishStatusQuery.SpecificVersion;
                query.PageVersionId = state.InputParameters.VersionId;
            }
            else
            {
                query.PublishStatus = state.VisualEditorState.GetPublishStatusQuery();
            }

            state.PageData = await _queryExecutor.ExecuteAsync(query);

            // if no data is found there was an issue with creating a draft earlier on.
            if (state.PageData == null && state.VisualEditorState.VisualEditorMode == VisualEditorMode.Edit)
            {
                throw new Exception("Draft version missing for page id " + query.PageId);
            }

            // If we can't find any page data, then return a 404
            if (state.PageData == null)
            {
                state.Result = await _notFoundViewHelper.GetViewAsync(controller);
            }
        }
        public IDomainRepositoryQueryContext <PageRenderDetails> AsRenderDetails(int pageVersionId)
        {
            var query = new GetPageRenderDetailsByIdQuery(_pageId, PublishStatusQuery.SpecificVersion);

            query.PageVersionId = pageVersionId;

            return(DomainRepositoryQueryContextFactory.Create(query, ExtendableContentRepository));
        }
        public IDomainRepositoryQueryContext <PageRenderDetails> AsRenderDetails(PublishStatusQuery publishStatus)
        {
            var query = new GetPageRenderDetailsByIdQuery(_pageId, publishStatus);

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