public AddUseCaseEditorParameterCommand(UseCaseEditorControlViewModel vm, ParameterDirection direction) { Initialize((input) => { try { var requestModel = new GenericFormModel("Add new parameter"); requestModel.AddAttribute(ActionParameterDefinition.TypeValue.String, Definitions.UseCaseEditorDefinitions.UseCaseModelAttibutes.Type, "Type", "Type of the parameter", DataParameter.GetUseCaseParameterTypesList().ToArray()); requestModel.AddAttribute( ActionParameterDefinition.TypeValue.String, Definitions.UseCaseEditorDefinitions.UseCaseModelAttibutes.Name, "Name", "Name of the parameter"); requestModel.AddAttribute(ActionParameterDefinition.TypeValue.String, Definitions.UseCaseEditorDefinitions.UseCaseModelAttibutes.EnumerableType, "Enumerable type", "If type=Enumerable, this is the type of the enumerable", DataParameter.GetUseCaseParameterTypesList().ToArray()); requestModel.AddAttribute( ActionParameterDefinition.TypeValue.String, Definitions.UseCaseEditorDefinitions.UseCaseModelAttibutes.DictionaryKeyType, "Dictionary key type", "If type=Dictionary, this is the type of the key", DataParameter.GetUseCaseParameterTypesList().ToArray()); requestModel.AddAttribute(ActionParameterDefinition.TypeValue.String, Definitions.UseCaseEditorDefinitions.UseCaseModelAttibutes.DictionaryValueType, "Dictionary value type", "If type=Dictionary, this is the type of the value", DataParameter.GetUseCaseParameterTypesList().ToArray()); vm.GenericFormRequestId = Guid.NewGuid(); if (direction == ParameterDirection.Input) { vm.CurrentFormInputActionType = UseCaseEditorControlViewModel.ActionType.AddInputParameter; } else if (direction == ParameterDirection.Output) { vm.CurrentFormInputActionType = UseCaseEditorControlViewModel.ActionType.AddOutputParameter; } vm.EventManager.RaiseOnGenericFormInputRequestedEvent(vm.GenericFormRequestId, requestModel); vm.RaiseCanExecuteCommandChanged(); } catch (Exception ex) { vm.RaiseError(ex.Message); } }, data => { return(direction == ParameterDirection.Input || (direction == ParameterDirection.Output && vm.UseCase?.OutputParameters.Count == 0)); }); }
public static GenericFormModel ToGenericInputModel(this MethodParameterViewModel parameter, string formDescription, OptionSetValue[] options) { var model = new GenericFormModel(formDescription); model.AddAttribute( GenericFormInputModel.TypeValue.String, nameof(MethodParameterViewModel.Name), nameof(MethodParameterViewModel.Name), nameof(MethodParameterViewModel.Name), true, parameter.Name); var directionAttr = new GenericFormInputModel() { DisplayName = nameof(MethodParameterViewModel.Direction), Key = nameof(MethodParameterViewModel.Direction), Description = nameof(MethodParameterViewModel.Direction), IsMandatory = true, Type = GenericFormInputModel.TypeValue.OptionSet, OptionSetValueOptions = new List <OptionSetValue>() { { new OptionSetValue(MethodParameter.ParameterDirection.Input.ToString(), (int)MethodParameter.ParameterDirection.Input) }, { new OptionSetValue(MethodParameter.ParameterDirection.Output.ToString(), (int)MethodParameter.ParameterDirection.Output) } }.ToArray(), DefaultValue = ((int)parameter.Direction) > 0 ? new OptionSetValue((int)parameter.Direction) : null }; var typeAttr = new GenericFormInputModel() { DisplayName = nameof(MethodParameterViewModel.Type), Key = nameof(MethodParameterViewModel.Type), Description = nameof(MethodParameterViewModel.Type), IsMandatory = true, Type = GenericFormInputModel.TypeValue.OptionSet, OptionSetValueOptions = options, DefaultValue = ((int)parameter.Type) > 0 ? new OptionSetValue((int)parameter.Type) : null }; var enumAttr = new GenericFormInputModel() { DisplayName = nameof(MethodParameterViewModel.EnumerableType), Key = nameof(MethodParameterViewModel.EnumerableType), Description = nameof(MethodParameterViewModel.EnumerableType), IsMandatory = false, Type = GenericFormInputModel.TypeValue.OptionSet, OptionSetValueOptions = options, DefaultValue = ((int)parameter.EnumerableType) > 0 ? new OptionSetValue((int)parameter.EnumerableType) : null }; var dicKeyAttr = new GenericFormInputModel() { DisplayName = nameof(MethodParameterViewModel.DictionaryKeyType), Key = nameof(MethodParameterViewModel.DictionaryKeyType), Description = nameof(MethodParameterViewModel.DictionaryKeyType), IsMandatory = false, Type = GenericFormInputModel.TypeValue.OptionSet, OptionSetValueOptions = options, DefaultValue = ((int)parameter.DictionaryKeyType) > 0 ? new OptionSetValue((int)parameter.DictionaryKeyType) : null }; var dicValueAttr = new GenericFormInputModel() { DisplayName = nameof(MethodParameterViewModel.DictionaryValueType), Key = nameof(MethodParameterViewModel.DictionaryValueType), Description = nameof(MethodParameterViewModel.DictionaryValueType), IsMandatory = false, Type = GenericFormInputModel.TypeValue.OptionSet, OptionSetValueOptions = options, DefaultValue = ((int)parameter.DictionaryValueType) > 0 ? new OptionSetValue((int)parameter.DictionaryValueType) : null }; model.Attributes.Add(directionAttr); model.Attributes.Add(typeAttr); model.Attributes.Add(enumAttr); model.Attributes.Add(dicKeyAttr); model.Attributes.Add(dicValueAttr); return(model); }