public async static Task ActualizarPropiedadAspecto(string nombreModelo, string nombreAspecto, string nombrePropiedad, PropertiesBodyUpdate propiedadesActualizar)
 {
     AspectosPersonalizadosServicio aspectosPersonalizadosServicio = new AspectosPersonalizadosServicio();
     string propiedadActualizarJson = JsonConvert.SerializeObject(propiedadesActualizar);
     await aspectosPersonalizadosServicio.ActualizarPropiedadAspecto(nombreModelo, nombreAspecto, nombrePropiedad, propiedadActualizarJson);
 }
        private async Task CrearActualizarPropiedad()
        {
            if (btnAceptar.Text == "Crear")
            {
                List <Modelos.CMM.Constraint> constraints = new List <Modelos.CMM.Constraint>();
                cmbxIndexacion.SelectedItem = "Ninguno";
                Property propiedadCrear = new Property();
                propiedadCrear.Name        = txtNombre.Text;
                propiedadCrear.Description = txtDescripcion.Text;
                propiedadCrear.Title       = txtTitulo.Text;
                propiedadCrear.Datatype    = cmbxTipoDato.SelectedItem.ToString();
                propiedadCrear.MultiValued = false;

                string tipoDatoCrear = cmbxTipoDato.SelectedItem.ToString();
                if (tipoDatoCrear == "d:int" || tipoDatoCrear == "d:float" || tipoDatoCrear == "d:double" || tipoDatoCrear == "d:long" || tipoDatoCrear == "d:mltext" || tipoDatoCrear == "d:text")
                {
                    propiedadCrear.DefaultValue = txtValorPredeterminad.Text;    //////
                }
                else if (tipoDatoCrear == "d:boolean")
                {
                    if (cmbxValorPredeterminado.SelectedItem.ToString() == "Verdadero")
                    {
                        propiedadCrear.DefaultValue = "true";
                    }
                    else if (cmbxValorPredeterminado.SelectedItem.ToString() == "Falso")
                    {
                        propiedadCrear.DefaultValue = "false";
                    }
                }
                else if (tipoDato == "date")
                {
                    propiedadCrear.DefaultValue = dtpValorPredeterminado.Value.ToString("yyyy-MM-dd");
                }

                if (cmbxRequerido.SelectedItem.ToString() == "Opcional")
                {
                    propiedadCrear.Mandatory = false;
                }
                else
                {
                    propiedadCrear.Mandatory = true;
                }

                if (cmbxRestriccion.SelectedItem.ToString() == "Ninguno")
                {
                    propiedadCrear.Constraints = null;
                }
                else if (cmbxRestriccion.SelectedItem.ToString() == "Expresión Regular")
                {
                    if (!string.IsNullOrEmpty(txtExpresionRegular.Text))
                    {
                        if (!VerificarExpresioRegular(txtExpresionRegular.Text))
                        {
                            MessageBox.Show("Ingrese una Expresión Regular válida", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            txtExpresionRegular.Clear();
                            return;
                        }
                        else
                        {
                            Modelos.CMM.Constraint constraintRegex = new Modelos.CMM.Constraint("");
                            constraintRegex.Type = "REGEX";
                            List <Parameter> parameters = new List <Parameter>();
                            Parameter        parameter1 = new Parameter();
                            parameter1.Name        = "expression";
                            parameter1.SimpleValue = txtExpresionRegular.Text;
                            parameters.Add(parameter1);

                            Parameter parameter2 = new Parameter();
                            parameter2.Name        = "requiresMatch";
                            parameter2.SimpleValue = "true";
                            parameters.Add(parameter2);
                            constraintRegex.Parameters = parameters;

                            constraints.Add(constraintRegex);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Ingrese una Expresión Regular", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
                else if (cmbxRestriccion.SelectedItem.ToString() == "Longitud Mínima/Máxima")
                {
                    Modelos.CMM.Constraint constraintRegex = new Modelos.CMM.Constraint("");
                    constraintRegex.Type = "LENGTH";
                    List <Parameter> parameters = new List <Parameter>();
                    Parameter        parameter1 = new Parameter();
                    parameter1.Name        = "minLength";
                    parameter1.SimpleValue = txtRestriccionInf.Text;
                    parameters.Add(parameter1);

                    Parameter parameter2 = new Parameter();
                    parameter2.Name        = "maxLength";
                    parameter2.SimpleValue = txtRestriccionSup.Text;
                    parameters.Add(parameter2);
                    constraintRegex.Parameters = parameters;

                    constraints.Add(constraintRegex);
                }
                else if (cmbxRestriccion.SelectedItem.ToString() == "Valor Mínimo/Máximo")
                {
                    if (Int32.Parse(txtValorPredeterminad.Text) >= Int32.Parse(txtRestriccionInf.Text) && Int32.Parse(txtValorPredeterminad.Text) <= Int32.Parse(txtRestriccionSup.Text))
                    {
                        Modelos.CMM.Constraint constraintRegex = new Modelos.CMM.Constraint("");
                        constraintRegex.Type = "MINMAX";
                        List <Parameter> parameters = new List <Parameter>();
                        Parameter        parameter1 = new Parameter();
                        parameter1.Name        = "minValue";
                        parameter1.SimpleValue = txtRestriccionInf.Text;
                        parameters.Add(parameter1);

                        Parameter parameter2 = new Parameter();
                        parameter2.Name        = "maxValue";
                        parameter2.SimpleValue = txtRestriccionSup.Text;
                        parameters.Add(parameter2);
                        constraintRegex.Parameters = parameters;

                        constraints.Add(constraintRegex);
                    }
                    else
                    {
                        MessageBox.Show("Valor predeterminado no corresponde a la restricción Valor Mínimo/Máximo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

                if (cmbxIndexacion.SelectedItem.ToString() == "Ninguno")
                {
                    propiedadCrear.Facetable             = "UNSET";
                    propiedadCrear.IndexTokenisationMode = "TRUE";
                    propiedadCrear.Indexed           = false;
                    propiedadCrear.MandatoryEnforced = false;
                }
                else if (cmbxIndexacion.SelectedItem.ToString() == "Texto libre")
                {
                    propiedadCrear.Facetable             = "FALSE";
                    propiedadCrear.IndexTokenisationMode = "TRUE";
                    propiedadCrear.Indexed           = true;
                    propiedadCrear.MandatoryEnforced = false;
                }

                propiedadCrear.Constraints = constraints;

                List <Property> propiedadesCrear = new List <Property>();
                propiedadesCrear.Add(propiedadCrear);
                PropertiesBodyUpdate propertiesBodyCreate = new PropertiesBodyUpdate(subModelo.Name, propiedadesCrear);
                if (proveniente == "ASPECTOS")
                {
                    await AspectosPersonalizadosStatic.AñadirPropiedadeAspecto(
                        modelo.Name,
                        subModelo.Name,
                        propertiesBodyCreate);

                    MessageBox.Show("Propiedad creada exitosamente");
                }
                if (proveniente == "TIPOS")
                {
                    fgestorModelos.AbrirAspectos(modelo);
                }
                await PoblarDtgv();

                NuevaPlantilla();
            }
            else if (btnAceptar.Text == "Editar")
            {
                if (modelo.Status == "DRAFT")
                {
                    Property propiedadEditar = new Property();
                    propiedadEditar.Name        = txtNombre.Text;
                    propiedadEditar.Description = txtDescripcion.Text;
                    propiedadEditar.Title       = txtTitulo.Text;
                    propiedadEditar.Datatype    = cmbxTipoDato.SelectedItem.ToString();

                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    string tipoDatoEditar = cmbxTipoDato.SelectedItem.ToString();
                    if (tipoDatoEditar == "d:int" || tipoDatoEditar == "d:float" || tipoDatoEditar == "d:double" || tipoDatoEditar == "d:long" || tipoDatoEditar == "d:mltext" || tipoDatoEditar == "d:text")
                    {
                        propiedadEditar.DefaultValue = txtValorPredeterminad.Text;
                    }
                    else if (tipoDato == "d:boolean")
                    {
                        if (cmbxValorPredeterminado.SelectedItem.ToString() == "Verdadero")
                        {
                            propiedadEditar.DefaultValue = "true";
                        }
                        else if (cmbxValorPredeterminado.SelectedItem.ToString() == "Falso")
                        {
                            propiedadEditar.DefaultValue = "false";
                        }
                    }
                    else if (tipoDato == "d:date")
                    {
                        propiedadEditar.DefaultValue = dtpValorPredeterminado.Value.ToString();
                    }

                    if (cmbxRequerido.SelectedItem.ToString() == "Opcional")
                    {
                        propiedadEditar.Mandatory = false;
                    }
                    else
                    {
                        propiedadEditar.Mandatory = true;
                    }
                    if (cmbxRequerido.SelectedItem.ToString() == "Ninguno")
                    {
                        propiedadEditar.Constraints = null;
                    }
                    else
                    {
                    }
                    if (cmbxIndexacion.SelectedItem.ToString() == "Ninguno")
                    {
                        propiedadEditar.Facetable             = "UNSET";
                        propiedadEditar.IndexTokenisationMode = "TRUE";
                        propiedadEditar.Indexed           = false;
                        propiedadEditar.MandatoryEnforced = false;
                    }
                    List <Property> propiedades = new List <Property>();
                    propiedades.Add(propiedadEditar);
                    PropertiesBodyUpdate propertiesBodyUpdate = new PropertiesBodyUpdate(subModelo.Name, propiedades);

                    if (proveniente == "ASPECTOS")
                    {
                        await AspectosPersonalizadosStatic.ActualizarPropiedadAspecto(
                            modelo.Name,
                            subModelo.Name,
                            propiedadEditar.Name,
                            propertiesBodyUpdate);

                        MessageBox.Show("Propiedad actualizada exitosamente");
                    }
                    if (proveniente == "TIPOS")
                    {
                        fgestorModelos.AbrirAspectos(modelo);
                    }

                    await PoblarDtgv();

                    NuevaPlantilla();
                }
                else
                {
                    MessageBox.Show("Para Editar una propiedad el modelo debe estar desactivado");
                }
            }
        }
 public async static Task AñadirPropiedadeAspecto(string nombreModelo, string nombreAspecto, PropertiesBodyUpdate propertiesBodyCreate)
 {
     AspectosPersonalizadosServicio aspectosPersonalizadosServicio = new AspectosPersonalizadosServicio();
     string propertiesBodyUpdateJson = JsonConvert.SerializeObject(propertiesBodyCreate);
     await aspectosPersonalizadosServicio.AñadirPropiedadAspecto(
         nombreModelo,
         nombreAspecto,
         propertiesBodyUpdateJson);
 }