Ejemplo n.º 1
0
    protected string Grabar(string strDatos, string strDatosVAE, string sNodo, string sAmbito)//string sIdAE,
    {
        string sResul = "", sNuevosAEs = "";
        //int ID = int.Parse(sIdAE);
        int idAE;

        #region conexion
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccion(oConn);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            #region AE
            bool bEstado = false;
            bool bObligatorio = false;
            int? nCliente = null, idNuevoAE;

            string[] aAE = Regex.Split(strDatos, "///");
            foreach (string oAE in aAE)
            {
                if (oAE == "")
                {
                    continue;
                }
                string[] aValores = Regex.Split(oAE, "##");
                //0. Opcion BD. "I", "U", "D"
                //1. ID AE
                //2. Denominación
                //3. Estado
                //4. Obligatorio
                //5. Nodo
                //6. Cliente
                //7. Orden
                //8. Ambito (E-> económico, T-> técnico)
                bEstado = false;
                if (aValores[3] == "1")
                {
                    bEstado = true;
                }
                bObligatorio = false;
                if (aValores[4] == "1")
                {
                    bObligatorio = true;
                }
                nCliente = null;
                if (aValores[6] != "")
                {
                    nCliente = int.Parse(aValores[6]);
                }

                switch (aValores[0])
                {
                case "D":
                    AE.Delete(tr, int.Parse(aValores[1]));
                    break;

                case "I":
                    idNuevoAE = AE.Insert(tr, Utilidades.unescape(aValores[2]), bEstado, int.Parse(aValores[7]), bObligatorio,
                                          int.Parse(aValores[5]), nCliente, aValores[8]);
                    sNuevosAEs += aValores[1] + "##" + idNuevoAE.ToString() + "@@";
                    break;

                case "U":
                    //AE.UpdateOrden(tr, int.Parse(aValores[1]), int.Parse(aValores[2]));
                    AE.Update(tr, int.Parse(aValores[1]), Utilidades.unescape(aValores[2]), bEstado, int.Parse(aValores[7]), bObligatorio,
                              int.Parse(aValores[5]), nCliente);
                    break;
                }
            }
            #endregion

            #region VAE

            string[] aVAE = Regex.Split(strDatosVAE, "///");

            foreach (string oVAE in aVAE)
            {
                if (oVAE == "")
                {
                    break;
                }
                string[] aKeysAE     = Regex.Split(sNuevosAEs, "@@");
                string[] aValoresVAE = Regex.Split(oVAE, "##");
                ///aValoresVAE[0] = opcionBD;
                ///aValoresVAE[1] = idAE;
                ///aValoresVAE[2] = idVAE;
                ///aValoresVAE[3] = Valor;
                ///aValoresVAE[4] = Orden;
                ///aValoresVAE[5] = Activo;
                idAE = int.Parse(aValoresVAE[1]);
                if (idAE < 0)
                {
                    idAE = flBuscarKeyAE(aValoresVAE[1], aKeysAE);
                }

                bool bEstadoVAE = false;
                if (aValoresVAE[5] == "1")
                {
                    bEstadoVAE = true;
                }

                switch (aValoresVAE[0])
                {
                case "I":
                    //VAE.Insert(tr, Utilidades.unescape(aValoresVAE[3]), bEstadoVAE, int.Parse(aValoresVAE[1]), byte.Parse(aValoresVAE[4]));
                    VAE.Insert(tr, Utilidades.unescape(aValoresVAE[3]), bEstadoVAE, idAE, int.Parse(aValoresVAE[4]));
                    break;

                case "U":
                    //VAE.Update(tr, int.Parse(aValoresVAE[2]), Utilidades.unescape(aValoresVAE[3]), bEstadoVAE, int.Parse(aValoresVAE[1]), byte.Parse(aValoresVAE[4]));
                    VAE.Update(tr, int.Parse(aValoresVAE[2]), Utilidades.unescape(aValoresVAE[3]), bEstadoVAE, idAE, int.Parse(aValoresVAE[4]));
                    break;

                case "D":
                    VAE.Delete(tr, int.Parse(aValoresVAE[2]));
                    break;
                }
            }
            #endregion

            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@" + sNuevosAEs + "@#@" + ObtenerValoresAtributosEstadisticos(sNodo, sAmbito);
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar los criterios estadísticos.", ex);// +"@#@" + sDesc;
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }