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); }