private async Task <IEditablePageViewModel> GenericBuildCustomEntityModelAsync <TDisplayModel>( CustomEntityDetailsPageViewModelBuilderParameters mappingParameters ) where TDisplayModel : ICustomEntityDetailsDisplayViewModel { var result = await _pageViewModelBuilder.BuildCustomEntityModelAsync <TDisplayModel>(mappingParameters); return(result); }
/// <summary> /// Creates and maps data to a view model for a custom entity details page. /// </summary> /// <param name="displayModelType">The type information of the display model to apply to the generic view model.</param> /// <param name="mappingParameters">The data passed through to map to the view model.</param> public virtual Task <ICustomEntityDetailsPageViewModel <TDisplayModel> > BuildCustomEntityModelAsync <TDisplayModel>( CustomEntityDetailsPageViewModelBuilderParameters mappingParameters ) where TDisplayModel : ICustomEntityDetailsDisplayViewModel { var viewModel = _pageViewModelFactory.CreateCustomEntityDetailsPageViewModel <TDisplayModel>(); _pageViewModelMapper.MapCustomEntityViewModel(viewModel, mappingParameters); return(Task.FromResult(viewModel)); }
private async Task <IEditablePageViewModel> BuildCustomEntityViewModelAsync( Type displayModelType, CustomEntityDetailsPageViewModelBuilderParameters mappingParameters ) { var task = (Task <IEditablePageViewModel>)_methodInfo_GenericBuildCustomEntityModelAsync .MakeGenericMethod(displayModelType) .Invoke(this, new object[] { mappingParameters }); return(await task); }
private async Task <ActionResult> GetPageViewResult(Controller controller, PageActionRoutingState state) { IEditablePageViewModel vm; var pageRoutingInfo = state.PageRoutingInfo; // Some page types have thier own specific view models which custom data switch (pageRoutingInfo.PageRoute.PageType) { case PageType.NotFound: controller.Response.StatusCode = (int)HttpStatusCode.NotFound; // Not sure why we're not using a NotFoundViewModel here, but this is old // and untested functionality. Content managable not found pages will need to be looked at at a later date var notFoundPageParams = new PageViewModelBuilderParameters(state.PageData, state.VisualEditorMode); vm = await _pageViewModelBuilder.BuildPageViewModelAsync(notFoundPageParams); break; case PageType.CustomEntityDetails: var model = await GetCustomEntityModel(state); var customEntityParams = new CustomEntityDetailsPageViewModelBuilderParameters(state.PageData, state.VisualEditorMode, model); vm = await BuildCustomEntityViewModelAsync(state.PageData.Template.CustomEntityModelType, customEntityParams); break; //case PageType.Error: // Response.StatusCode = (int)HttpStatusCode.InternalServerError; // vm = _pageViewModelMapper.MapPage(page, siteViewerMode); // break; default: var pageParams = new PageViewModelBuilderParameters(state.PageData, state.VisualEditorMode); vm = await _pageViewModelBuilder.BuildPageViewModelAsync(pageParams); break; } // set cache SetCache(vm, state); var result = new ViewResult() { ViewData = new ViewDataDictionary(vm), ViewName = state.PageData.Template.FullPath }; return(result); }
/// <summary> /// Maps data to an empty view model for a custom entity details page. /// </summary> /// <param name="displayModelType">The type information of the display model to apply to the generic view model.</param> /// <param name="viewModel">The view model to map data to.</param> /// <param name="mappingParameters">The data passed through to map to the view model.</param> public virtual void MapCustomEntityViewModel <TDisplayModel>( ICustomEntityDetailsPageViewModel <TDisplayModel> viewModel, CustomEntityDetailsPageViewModelBuilderParameters mappingParameters ) where TDisplayModel : ICustomEntityDetailsDisplayViewModel { Map(viewModel, mappingParameters); Condition.Requires(mappingParameters.CustomEntityModel).IsNotNull(); var customEntityRenderDetails = mappingParameters.CustomEntityModel; var customModel = new CustomEntityRenderDetailsViewModel <TDisplayModel>(); customModel.CustomEntityId = customEntityRenderDetails.CustomEntityId; customModel.CustomEntityVersionId = customEntityRenderDetails.CustomEntityVersionId; customModel.Locale = customEntityRenderDetails.Locale; customModel.Sections = customEntityRenderDetails.Sections; customModel.Title = customEntityRenderDetails.Title; customModel.UrlSlug = customEntityRenderDetails.UrlSlug; customModel.WorkFlowStatus = customEntityRenderDetails.WorkFlowStatus; customModel.Model = _customEntityDisplayModelMapper.MapDetails <TDisplayModel>(customEntityRenderDetails); viewModel.CustomEntity = customModel; }