Esempio n. 1
0
        async Task <IActionResult> SaveServiceAction(IServiceDescriptorViewModel viewModel, string serviceJson)
        {
            IServiceDescriptorViewModel originalViewModel = RestoreAndUpdateService(viewModel, serviceJson);
            var service = await _esbModelContext.Services.FindAsync(originalViewModel.ServiceID);

            if (service == null)
            {
                throw new Exception($"视图包含的服务协定所对应的服务本身[ServiceID={originalViewModel.ServiceID}]已经在数据库中不存在");
            }
            if (originalViewModel.UpdateToService(ref service, out var error) == false)
            {
                string serviceViewName;
                if (originalViewModel.ServiceType == ServiceType.SimpleRESTful)
                {
                    TempData[STATE_RESTRETURN_ERROR] = error;
                    serviceViewName = nameof(EditSimpleRestfulService);
                }
                else if (originalViewModel.ServiceType == ServiceType.NCWebService)
                {
                    TempData[STATE_NCRETURN_ERROR] = error;
                    serviceViewName = nameof(EditNCWebService);
                }
                else
                {
                    throw new Exception("not implemented");
                }
                TempData.Put(EDIT_SERVICE_CROSS_ACTION_DATA_KEY, originalViewModel);
                return(RedirectToAction(serviceViewName));
            }
            _esbModelContext.Update(service);
            await _esbModelContext.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 2
0
        /// <summary>
        /// 假定uiViewModel参数是来自用户视图的数据控件绑定模型,
        /// 而当前实例是一个从数据库或视图状态中恢复出来的老模型,
        /// 那么,应当运行本方法完成用户可能发生的输入更改。
        /// 注意:本方法仅更新那些绑定到了视图上的form control的值。
        /// </summary>
        /// <param name="uiViewModel"></param>
        public void UpdateFromUI(IServiceDescriptorViewModel uiViewModel)
        {
            NCDescriptorViewModel viewModel = (NCDescriptorViewModel)uiViewModel;

            this.ActiveStatus  = viewModel.ActiveStatus;
            this.EndPoint      = viewModel.EndPoint;
            this.ServiceName   = viewModel.ServiceName;
            this.WebServiceUrl = viewModel.WebServiceUrl;
        }
Esempio n. 3
0
        /// <summary>
        /// 假定uiViewModel参数是来自用户视图的数据控件绑定模型,
        /// 而当前实例是一个从数据库或视图状态中恢复出来的老模型,
        /// 那么,应当运行本方法完成用户可能发生的输入更改。
        /// 注意:本方法仅更新那些绑定到了视图上的form control的值。
        /// </summary>
        /// <param name="uiViewModel"></param>
        public void UpdateFromUI(IServiceDescriptorViewModel uiViewModel)
        {
            PrimetonDescriptorViewModel viewModel = (PrimetonDescriptorViewModel)uiViewModel;

            this.ActiveStatus   = viewModel.ActiveStatus;
            this.Operation      = viewModel.Operation;
            this.ServiceName    = viewModel.ServiceName;
            this.ServiceAddress = viewModel.ServiceAddress;
            this.Prefix         = viewModel.Prefix;
            this.Namespace      = viewModel.Namespace;
        }
Esempio n. 4
0
        IActionResult DeleteJsonAction(JsonTemplateNames partName, IServiceDescriptorViewModel viewModel, string serviceJson)
        {
            IServiceDescriptorViewModel originalViewModel = RestoreAndUpdateService(viewModel, serviceJson);
            string serviceViewName;

            if (originalViewModel.ServiceType == ServiceType.NCWebService)
            {
                serviceViewName = nameof(EditNCWebService);
            }
            else if (originalViewModel.ServiceType == ServiceType.SimpleRESTful)
            {
                serviceViewName = nameof(EditSimpleRestfulService);
            }
            else if (originalViewModel.ServiceType == ServiceType.PrimetonService)
            {
                serviceViewName = nameof(EditPrimetonService);
            }
            else
            {
                throw new Exception("not implemented");
            }
            if (partName == JsonTemplateNames.NCParameter)
            {
                ((NCDescriptorViewModel)originalViewModel).ParameterBody = null;
            }
            else if (partName == JsonTemplateNames.NCReturn)
            {
                ((NCDescriptorViewModel)originalViewModel).ReturnBody = null;
            }
            else if (partName == JsonTemplateNames.PrimetonParameter)
            {
                ((PrimetonDescriptorViewModel)originalViewModel).InputBody = null;
            }
            else if (partName == JsonTemplateNames.PrimetonReturn)
            {
                ((PrimetonDescriptorViewModel)originalViewModel).ReturnBody = null;
            }
            else if (partName == JsonTemplateNames.RESTParameter)
            {
                ((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate = null;
                ((SimpleRestfulDescriptorViewModel)originalViewModel).SelectedTab      = "nav-json";
            }
            else if (partName == JsonTemplateNames.RESTReturnValue)
            {
                ((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate = null;
            }
            TempData.Put(EDIT_SERVICE_CROSS_ACTION_DATA_KEY, originalViewModel);
            return(RedirectToAction(serviceViewName));
        }
Esempio n. 5
0
        /// <summary>
        /// 假定uiViewModel参数是来自用户视图的数据已绑定模型,
        /// 而当前实例是一个从数据库或视图中恢复出来的老模型,
        /// 那么,应当运行本方法完成用户可能发生的输入更改。
        /// 注意:本方法仅更新那些绑定到了视图上的form control的值。
        /// </summary>
        /// <param name="uiViewModel"></param>
        public void UpdateFromUI(IServiceDescriptorViewModel uiViewModel)
        {
            SimpleRestfulDescriptorViewModel viewModel = (SimpleRestfulDescriptorViewModel)uiViewModel;

            this.BaseApiUrl          = viewModel.BaseApiUrl;
            this.FormBodyTemplate    = viewModel.FormBodyTemplate;
            this.Method              = viewModel.Method;
            this.QueryStringTemplate = viewModel.QueryStringTemplate;
            this.RouteDataTemplate   = viewModel.RouteDataTemplate;
            this.SelectedTab         = viewModel.SelectedTab;
            this.ReturnType          = viewModel.ReturnType;
            this.SuccessRule         = viewModel.SuccessRule;
            this.SuccessPath         = viewModel.SuccessPath;
            this.SuccessRegx         = viewModel.SuccessRegx;
            this.IgnoreCase          = viewModel.IgnoreCase;
        }
Esempio n. 6
0
        IActionResult EditJsonAction(JsonTemplateNames partName, IServiceDescriptorViewModel viewModel, string serviceJson)
        {
            IServiceDescriptorViewModel originalViewModel = RestoreAndUpdateService(viewModel, serviceJson);

            #region 为要编辑的对象设置默认值(初始化JSON模板并设置初始数据类型)
            //string errorKey = "";
            if (partName == JsonTemplateNames.NCParameter)
            {
                //errorKey = STATE_NCPARAMETER_ERROR;
                if (((NCDescriptorViewModel)originalViewModel).ParameterBody == null)
                {
                    ((NCDescriptorViewModel)originalViewModel).ParameterBody           = new JsonTemplate();
                    ((NCDescriptorViewModel)originalViewModel).ParameterBody.ValueType = Models.ValueType.Object;
                }
            }
            else if (partName == JsonTemplateNames.NCReturn)
            {
                //errorKey = STATE_NCRETURN_ERROR;
                if (((NCDescriptorViewModel)originalViewModel).ReturnBody == null)
                {
                    ((NCDescriptorViewModel)originalViewModel).ReturnBody           = new JsonTemplate();
                    ((NCDescriptorViewModel)originalViewModel).ReturnBody.ValueType = Models.ValueType.Object;
                }
            }
            else if (partName == JsonTemplateNames.PrimetonParameter)
            {
                //errorKey = STATE_PRIMETON_PARAMETER_ERROR;
                if (((PrimetonDescriptorViewModel)originalViewModel).InputBody == null)
                {
                    ((PrimetonDescriptorViewModel)originalViewModel).InputBody           = new JsonTemplate();
                    ((PrimetonDescriptorViewModel)originalViewModel).InputBody.ValueType = Models.ValueType.Object;
                }
            }
            else if (partName == JsonTemplateNames.PrimetonReturn)
            {
                //errorKey = STATE_PRIMETON_RETURN_ERROR;
                if (((PrimetonDescriptorViewModel)originalViewModel).ReturnBody == null)
                {
                    ((PrimetonDescriptorViewModel)originalViewModel).ReturnBody           = new JsonTemplate();
                    ((PrimetonDescriptorViewModel)originalViewModel).ReturnBody.ValueType = Models.ValueType.Object;
                }
            }
            else if (partName == JsonTemplateNames.RESTParameter)
            {
                //errorKey = STATE_RESTJSON_ERROR;
                if (((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate == null)
                {
                    ((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate           = new JsonTemplate();
                    ((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate.ValueType = Models.ValueType.Integer;
                }
            }
            else if (partName == JsonTemplateNames.RESTReturnValue)
            {
                //errorKey = STATE_RESTRETURN_ERROR;
                if (((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate == null)
                {
                    ((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate           = new JsonTemplate();
                    ((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate.ValueType = Models.ValueType.Integer;
                }
            }
            #endregion

            EditServiceJson postedJson;
            if (originalViewModel.ServiceType == ServiceType.NCWebService)
            {
                postedJson = Models.EditServiceJson.CreateFrom((NCDescriptorViewModel)originalViewModel, partName);
            }
            else if (originalViewModel.ServiceType == ServiceType.SimpleRESTful)
            {
                postedJson = Models.EditServiceJson.CreateFrom((SimpleRestfulDescriptorViewModel)originalViewModel, partName);
            }
            else if (originalViewModel.ServiceType == ServiceType.PrimetonService)
            {
                postedJson = Models.EditServiceJson.CreateFrom((PrimetonDescriptorViewModel)originalViewModel, partName);
            }
            else
            {
                throw new Exception("not implemented");
            }
            TempData.Put(EDIT_JSON_CROSS_ACTION_DATA_KEY, postedJson);
            return(RedirectToAction(nameof(EditServiceJson)));

            // Exception Catch Block (old)
            // TempData[errorKey] = ex.Message;
            // TempData.Put(EDIT_SERVICE_CROSS_ACTION_DATA_KEY, originalViewModel);
            // if(partName == JsonTemplateNames.RESTParameter)
            // {
            //     ((SimpleRestfulDescriptorViewModel)originalViewModel).SelectedTab = "nav-json";
            // }
            // string serviceViewName;
            // if(originalViewModel.ServiceType == ServiceType.NCWebService)
            // {
            //     serviceViewName = nameof(EditNCWebService);
            // }
            // else if(originalViewModel.ServiceType == ServiceType.SimpleRESTful)
            // {
            //     serviceViewName = nameof(EditSimpleRestfulService);
            // }
            // else
            // {
            //     throw new Exception("not implemented");
            // }
            // return RedirectToAction(serviceViewName);
        }