Пример #1
0
    private string Grabar(string strDatosBasicos, string strFiguras)
    {
        string sResul = "";
        int    nID    = -1;

        string[] aDatosBasicos = null;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            #region Datos Generales
            if (strDatosBasicos != "")//No se ha modificado nada de la pestaña general
            {
                aDatosBasicos = Regex.Split(strDatosBasicos, "##");
                ///aDatosBasicos[0] = ID
                ///aDatosBasicos[1] = Denominacion
                ///aDatosBasicos[2] = IDResponsable
                ///aDatosBasicos[3] = Activo
                ///aDatosBasicos[4] = Orden
                ///aDatosBasicos[5] = IdEstructura

                if (aDatosBasicos[0] == "0") //insert
                {
                    switch (sNivel)
                    {
                    case "0":
                        nID = CDP.Insert(tr,
                                         Utilidades.unescape(aDatosBasicos[1]),
                                         int.Parse(aDatosBasicos[5]),
                                         int.Parse(aDatosBasicos[2]),
                                         (aDatosBasicos[3] == "1") ? true : false,
                                         byte.Parse(aDatosBasicos[4]));
                        break;

                    case "1":
                        nID = CSN1P.Insert(tr,
                                           Utilidades.unescape(aDatosBasicos[1]),
                                           int.Parse(aDatosBasicos[5]),
                                           int.Parse(aDatosBasicos[2]),
                                           (aDatosBasicos[3] == "1") ? true : false,
                                           byte.Parse(aDatosBasicos[4]));
                        break;

                    case "2":
                        nID = CSN2P.Insert(tr,
                                           Utilidades.unescape(aDatosBasicos[1]),
                                           int.Parse(aDatosBasicos[5]),
                                           int.Parse(aDatosBasicos[2]),
                                           (aDatosBasicos[3] == "1") ? true : false,
                                           byte.Parse(aDatosBasicos[4]));
                        break;

                    case "3":
                        nID = CSN3P.Insert(tr,
                                           Utilidades.unescape(aDatosBasicos[1]),
                                           int.Parse(aDatosBasicos[5]),
                                           int.Parse(aDatosBasicos[2]),
                                           (aDatosBasicos[3] == "1") ? true : false,
                                           byte.Parse(aDatosBasicos[4]));
                        break;

                    case "4":
                        nID = CSN4P.Insert(tr,
                                           Utilidades.unescape(aDatosBasicos[1]),
                                           int.Parse(aDatosBasicos[5]),
                                           int.Parse(aDatosBasicos[2]),
                                           (aDatosBasicos[3] == "1") ? true : false,
                                           byte.Parse(aDatosBasicos[4]));
                        break;
                    }
                }
                else //update
                {
                    nID = int.Parse(aDatosBasicos[0]);
                    switch (sNivel)
                    {
                    case "0":
                        CDP.Update(tr,
                                   nID,
                                   Utilidades.unescape(aDatosBasicos[1]),
                                   int.Parse(aDatosBasicos[5]),
                                   int.Parse(aDatosBasicos[2]),
                                   (aDatosBasicos[3] == "1") ? true : false,
                                   byte.Parse(aDatosBasicos[4]));
                        break;

                    case "1":
                        CSN1P.Update(tr,
                                     nID,
                                     Utilidades.unescape(aDatosBasicos[1]),
                                     int.Parse(aDatosBasicos[5]),
                                     int.Parse(aDatosBasicos[2]),
                                     (aDatosBasicos[3] == "1") ? true : false,
                                     byte.Parse(aDatosBasicos[4]));
                        break;

                    case "2":
                        CSN2P.Update(tr,
                                     nID,
                                     Utilidades.unescape(aDatosBasicos[1]),
                                     int.Parse(aDatosBasicos[5]),
                                     int.Parse(aDatosBasicos[2]),
                                     (aDatosBasicos[3] == "1") ? true : false,
                                     byte.Parse(aDatosBasicos[4]));
                        break;

                    case "3":
                        CSN3P.Update(tr,
                                     nID,
                                     Utilidades.unescape(aDatosBasicos[1]),
                                     int.Parse(aDatosBasicos[5]),
                                     int.Parse(aDatosBasicos[2]),
                                     (aDatosBasicos[3] == "1") ? true : false,
                                     byte.Parse(aDatosBasicos[4]));
                        break;

                    case "4":
                        CSN4P.Update(tr,
                                     nID,
                                     Utilidades.unescape(aDatosBasicos[1]),
                                     int.Parse(aDatosBasicos[5]),
                                     int.Parse(aDatosBasicos[2]),
                                     (aDatosBasicos[3] == "1") ? true : false,
                                     byte.Parse(aDatosBasicos[4]));
                        break;
                    }
                }
            }

            #endregion

            #region Datos Figuras
            if (strFiguras != "")//No se ha modificado nada de la pestaña de Figuras
            {
                string[] aUsuarios = Regex.Split(strFiguras, "///");
                foreach (string oUsuario in aUsuarios)
                {
                    if (oUsuario == "")
                    {
                        continue;
                    }
                    string[] aFig = Regex.Split(oUsuario, "##");
                    ///aFig[0] = bd
                    ///aFig[1] = idUsuario
                    ///aFig[2] = Figuras

                    switch (sNivel)
                    {
                    case "0":
                        if (aFig[0] == "D")
                        {
                            FIGURASCDP.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                        }
                        else
                        {
                            string[] aFiguras = Regex.Split(aFig[2], ",");
                            foreach (string oFigura in aFiguras)
                            {
                                if (oFigura == "")
                                {
                                    continue;
                                }
                                //FIGURASCDP.Insert(tr, nID, int.Parse(aFig[1]), oFigura);
                                string[] aFig2 = Regex.Split(oFigura, "@");
                                ///aFig2[0] = bd
                                ///aFig2[1] = Figura
                                if (aFig2[0] == "D")
                                {
                                    FIGURASCDP.Delete(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                                else
                                {
                                    FIGURASCDP.Insert(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                            }
                        }
                        break;

                    case "1":
                        if (aFig[0] == "D")
                        {
                            FIGURASCSN1P.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                        }
                        else
                        {
                            string[] aFiguras = Regex.Split(aFig[2], ",");
                            foreach (string oFigura in aFiguras)
                            {
                                if (oFigura == "")
                                {
                                    continue;
                                }
                                //FIGURASCSN1P.Insert(tr, nID, int.Parse(aFig[1]), oFigura);
                                string[] aFig2 = Regex.Split(oFigura, "@");
                                ///aFig2[0] = bd
                                ///aFig2[1] = Figura
                                if (aFig2[0] == "D")
                                {
                                    FIGURASCSN1P.Delete(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                                else
                                {
                                    FIGURASCSN1P.Insert(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                            }
                        }
                        break;

                    case "2":
                        if (aFig[0] == "D")
                        {
                            FIGURASCSN2P.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                        }
                        else
                        {
                            string[] aFiguras = Regex.Split(aFig[2], ",");
                            foreach (string oFigura in aFiguras)
                            {
                                if (oFigura == "")
                                {
                                    continue;
                                }
                                //FIGURASCSN2P.Insert(tr, nID, int.Parse(aFig[1]), oFigura);
                                string[] aFig2 = Regex.Split(oFigura, "@");
                                ///aFig2[0] = bd
                                ///aFig2[1] = Figura
                                if (aFig2[0] == "D")
                                {
                                    FIGURASCSN2P.Delete(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                                else
                                {
                                    FIGURASCSN2P.Insert(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                            }
                        }
                        break;

                    case "3":
                        if (aFig[0] == "D")
                        {
                            FIGURASCSN3P.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                        }
                        else
                        {
                            string[] aFiguras = Regex.Split(aFig[2], ",");
                            foreach (string oFigura in aFiguras)
                            {
                                if (oFigura == "")
                                {
                                    continue;
                                }
                                //FIGURASCSN3P.Insert(tr, nID, int.Parse(aFig[1]), oFigura);
                                string[] aFig2 = Regex.Split(oFigura, "@");
                                ///aFig2[0] = bd
                                ///aFig2[1] = Figura
                                if (aFig2[0] == "D")
                                {
                                    FIGURASCSN3P.Delete(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                                else
                                {
                                    FIGURASCSN3P.Insert(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                            }
                        }
                        break;

                    case "4":
                        if (aFig[0] == "D")
                        {
                            FIGURASCSN4P.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                        }
                        else
                        {
                            string[] aFiguras = Regex.Split(aFig[2], ",");
                            foreach (string oFigura in aFiguras)
                            {
                                if (oFigura == "")
                                {
                                    continue;
                                }
                                //FIGURASCSN4P.Insert(tr, nID, int.Parse(aFig[1]), oFigura);
                                string[] aFig2 = Regex.Split(oFigura, "@");
                                ///aFig2[0] = bd
                                ///aFig2[1] = Figura
                                if (aFig2[0] == "D")
                                {
                                    FIGURASCSN4P.Delete(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                                else
                                {
                                    FIGURASCSN4P.Insert(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                                }
                            }
                        }
                        break;
                    }
                }
            }

            #endregion

            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@" + nID.ToString("#,###");
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos del cualificador", ex, false);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }