private string Procesar(string strDatos) { string sResul = ""; int idPSN = 0, responsable_origen = 0, responsable_destino = 0, subnodo_origen = 0, subnodo_destino = 0; try { REASIGNACIONPSN.DeleteAll(null, (int)Session["UsuarioActual"]); string[] aDatos = Regex.Split(strDatos, "///"); foreach (string oProyecto in aDatos) { try { if (oProyecto == "") { continue; } string[] aProyecto = Regex.Split(oProyecto, "##"); ///aProyecto[0] = idPSN ///aProyecto[1] = responsable_origen ///aProyecto[2] = responsable_destino ///aProyecto[3] = subnodo_origen ///aProyecto[4] = subnodo_destino ///aProyecto[5] = procesado idPSN = int.Parse(aProyecto[0]); responsable_origen = int.Parse(aProyecto[1]); responsable_destino = int.Parse(aProyecto[2]); subnodo_origen = int.Parse(aProyecto[3]); subnodo_destino = int.Parse(aProyecto[4]); REASIGNACIONPSN.Insertar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, false, ""); if (aProyecto[5] == "1" || (aProyecto[1] == aProyecto[2] && aProyecto[3] == aProyecto[4])) { REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, true, ""); continue; } #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 PROYECTOSUBNODO oPSN = PROYECTOSUBNODO.Obtener(tr, int.Parse(aProyecto[0])); SUBNODO oSubnodo = SUBNODO.Obtener(tr, int.Parse(aProyecto[4])); if (oPSN.t303_idnodo != oSubnodo.t303_idnodo) { throw (new NullReferenceException("El " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " del proyecto y el " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " del " + Estructura.getDefLarga(Estructura.sTipoElem.SUBNODO) + " destino no coinciden, por lo que no se puede realizar la reasignación.")); } PROYECTOSUBNODO.UpdateReasignacion(tr, idPSN, responsable_destino, subnodo_destino); //update proceso OK REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, true, ""); Conexion.CommitTransaccion(tr); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); //update proceso KO REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, false, ex.Message); sResul = "Error@#@" + Errores.mostrarError("Error al procesar la reasignación.", ex); } finally { Conexion.Cerrar(oConn); } }// fin foreach sResul = "OK"; } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al procesar la reasignación.", ex); } return(sResul); }
private string Procesar(string strDatos) { string sResul = ""; int idPSN = 0, responsable_origen = 0, responsable_destino = 0; try { REASIGNACIONPSN.DeleteReasig(null, (int)Session["UsuarioActual"]); string[] aDatos = Regex.Split(strDatos, "///"); foreach (string oProyecto in aDatos) { try { if (oProyecto == "") { continue; } string[] aProyecto = Regex.Split(oProyecto, "##"); ///aProyecto[0] = idPSN ///aProyecto[1] = responsable_origen ///aProyecto[2] = responsable_destino ///aProyecto[3] = procesado idPSN = int.Parse(aProyecto[0]); responsable_origen = int.Parse(aProyecto[1]); responsable_destino = int.Parse(aProyecto[2]); REASIGNACIONPSN.Insertar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, false, ""); if (aProyecto[3] == "1" || aProyecto[1] == aProyecto[2]) { REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, true, ""); continue; } #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 PROYECTOSUBNODO.UpdateReasignacion(tr, idPSN, responsable_destino); //update proceso OK REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, true, ""); Conexion.CommitTransaccion(tr); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); //update proceso KO REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, false, ex.Message); sResul = "Error@#@" + Errores.mostrarError("Error al procesar la reasignación.", ex); } finally { Conexion.Cerrar(oConn); } }// fin foreach sResul = "OK"; } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al procesar la reasignación.", ex); } return(sResul); }