public IActionResult Create([FromForm] CreateDynamicModuleViewModel viewModel) { if ( ModelState.IsValid && ( !string.IsNullOrEmpty(viewModel.NameOption) || !string.IsNullOrEmpty(viewModel.Name) ) ) { var dynamicModuleModel = m_mapper.Map <DynamicModuleModel>(viewModel); var moduleInfo = m_dynamicModuleProvider.GetLibraryModuleInfos() .FirstOrDefault(x => x.ModuleGuid == dynamicModuleModel.ModuleGuid); //TODO introduce validating service: unique Name (related to Guid) var result = m_dynamicModuleManager.CreateDynamicModule(dynamicModuleModel, moduleInfo); if (!result.HasError) { return(RedirectToAction(nameof(Edit), new { id = result.Result })); } ModelState.AddModelError(result.Error.Message); } var defaultViewModel = ViewModelBuilder.BuildCreateDynamicModuleViewModel(ModelState, viewModel); return(View("Create", defaultViewModel)); }
public CreateDynamicModuleViewModel BuildCreateDynamicModuleViewModel( ModelStateDictionary modelState, CreateDynamicModuleViewModel viewModel = null ) { var availableDynamicModule = new List <string>(); if (viewModel != null) { availableDynamicModule = m_dynamicModuleProvider.ModuleContexts .Where(x => x.LibModuleInfo.ModuleGuid == viewModel.ModuleGuid && x.DefaultModuleConfiguration?.Name != null ) .Select(x => x.DefaultModuleConfiguration.Name).ToList(); } return(new CreateDynamicModuleViewModel { DynamicModules = m_dynamicModuleProvider.GetLibraryModuleInfos() .GroupBy(x => x.ModuleGuid).Select(o => o.FirstOrDefault()).ToList(), ModuleGuid = viewModel?.ModuleGuid ?? default, AvailableDynamicModule = availableDynamicModule });