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));
        }
Пример #2
0
        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
            });