private void ObtenerDatos() { bool bCorreoActivado = ACCESOAPLI.CorreoActivado(null, 14); if (bCorreoActivado) { this.hdnEstadoCorreo.Value = "A"; } else { this.hdnEstadoCorreo.Value = "D"; } }
private string Procesar(string sPorDeadLockTimeout, string strDatos) { string sResul = ""; int nUsuario = 0, nNodoOrigen = 0, nNodoDestino = 0, nAnomesValor = 0; DataSet dsCB211 = null, dsCB212 = null, dsCB213 = null, dsCB223 = null, dsCB232 = null, dsCB24 = null; //dsConsumosBorrados aListCorreo = new ArrayList(); bool bErrorDeadLockTimeout = false; try { string[] aDatos = Regex.Split(strDatos, "///"); bool bEstadoCorreo = ACCESOAPLI.CorreoActivado(null, 14); CAMBIOESTRUCTURAUSUARIO_AUX.DeleteMyAll(null, (int)Session["IDFICEPI_ENTRADA"]); #region Aparca en tabla auxiliar los datos a procesar foreach (string oUsuario in aDatos) { if (oUsuario == "") { continue; } string[] aUsuario = Regex.Split(oUsuario, "##"); ///aUsuario[0] = idUsuario ///aUsuario[1] = idNodo_origen ///aUsuario[2] = idNodo_destino ///aUsuario[3] = Mes valor ///aUsuario[4] = procesado ///aUsuario[5] = codigo_excepcion bool?bProcesado = null; if (aUsuario[4] != "") { bProcesado = (aUsuario[4] == "1") ? true : false; } CAMBIOESTRUCTURAUSUARIO_AUX.Insertar(null, int.Parse(aUsuario[0]), (aUsuario[2] == "")? null: (int?)int.Parse(aUsuario[2]), int.Parse(aUsuario[3]), bProcesado, (int)Session["IDFICEPI_ENTRADA"]); } #endregion #region Procesa los datos foreach (string oUsuario in aDatos) { #region Grabación de cada usuario try { if (oUsuario == "") { continue; } string[] aUsuario = Regex.Split(oUsuario, "##"); ///aUsuario[0] = idUsuario ///aUsuario[1] = idNodo_origen ///aUsuario[2] = idNodo_destino ///aUsuario[3] = Mes valor ///aUsuario[4] = procesado //1->verde, 0->rojo, ""->no procesado anteriormente ///aUsuario[5] = codigo_excepcion nUsuario = int.Parse(aUsuario[0]); nNodoOrigen = int.Parse(aUsuario[1]); nNodoDestino = int.Parse(aUsuario[2]); nAnomesValor = int.Parse(aUsuario[3]); //bProcesado = false; if (aUsuario[4] == "1" || aUsuario[1] == aUsuario[2]) { CAMBIOESTRUCTURAUSUARIO_AUX.Modificar(null, nUsuario, nNodoDestino, nAnomesValor, true, "", (int)Session["IDFICEPI_ENTRADA"], null); continue; } if (sPorDeadLockTimeout == "1" && aUsuario[4] == "0" && aUsuario[5] != "1505" && aUsuario[5] != "-2") { 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 if (CAMBIOESTRUCTURAUSUARIO.HayConsumosMesesAbiertos(tr, nUsuario, nNodoOrigen, nAnomesValor)) { CAMBIOESTRUCTURAUSUARIO_AUX.Modificar(tr, nUsuario, nNodoDestino, nAnomesValor, false, "Existen consumos en meses abiertos anteriores al mes valor.", (int)Session["IDFICEPI_ENTRADA"], null); Conexion.CommitTransaccion(tr); continue; } USUARIO.UpdateNodo(tr, nUsuario, nNodoDestino, nAnomesValor); dsCB211 = CAMBIOESTRUCTURAUSUARIO.Caso_2_1_1(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); dsCB212 = CAMBIOESTRUCTURAUSUARIO.Caso_2_1_2(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); dsCB213 = CAMBIOESTRUCTURAUSUARIO.Caso_2_1_3(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); CAMBIOESTRUCTURAUSUARIO.Caso_2_2_1(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); CAMBIOESTRUCTURAUSUARIO.Caso_2_2_2(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); dsCB223 = CAMBIOESTRUCTURAUSUARIO.Caso_2_2_3(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); CAMBIOESTRUCTURAUSUARIO.Caso_2_3_1(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); dsCB232 = CAMBIOESTRUCTURAUSUARIO.Caso_2_3_2(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); dsCB24 = CAMBIOESTRUCTURAUSUARIO.Caso_2_4(tr, nUsuario, nNodoOrigen, nNodoDestino, nAnomesValor); CAMBIOESTRUCTURAUSUARIO.Caso_2_5(tr, nUsuario, nNodoOrigen); CAMBIOESTRUCTURAUSUARIO.Caso_2_6(tr, nUsuario, nNodoOrigen); CAMBIOESTRUCTURAUSUARIO.Caso_2_7(tr, nUsuario, nAnomesValor); //update proceso OK CAMBIOESTRUCTURAUSUARIO_AUX.Modificar(tr, nUsuario, nNodoDestino, nAnomesValor, true, "", (int)Session["IDFICEPI_ENTRADA"], null); Conexion.CommitTransaccion(tr); if (bEstadoCorreo) { GenerarCorreoConsumosBorrados(dsCB211); } dsCB211.Dispose(); if (bEstadoCorreo) { GenerarCorreoConsumosBorrados(dsCB212); } dsCB212.Dispose(); if (bEstadoCorreo) { GenerarCorreoConsumosBorrados(dsCB213); } dsCB213.Dispose(); if (bEstadoCorreo) { GenerarCorreoConsumosBorrados(dsCB223); } dsCB223.Dispose(); if (bEstadoCorreo) { GenerarCorreoConsumosBorrados(dsCB232); } if (bEstadoCorreo) { GenerarCorreoProduccionProfesionalBorrada(dsCB232); } dsCB223.Dispose(); if (bEstadoCorreo) { GenerarCorreoConsumosBorrados(dsCB24); } dsCB24.Dispose(); if (aListCorreo.Count > 0) { Correo.EnviarCorreos(aListCorreo); aListCorreo.Clear(); //hay que borrar los elementos enviados, porque la lista se utiliza para el siguiente usuario. } } catch (Exception ex) { Conexion.CerrarTransaccion(tr); dsCB211 = null; dsCB212 = null; dsCB213 = null; dsCB223 = null; dsCB24 = null; //update proceso KO int?nError = null; if (ex.GetType().ToString() == "System.Data.SqlClient.SqlException") { nError = ((System.Data.SqlClient.SqlException)ex).Number; if (nError == 1505 || nError == -2) //DeadLock o Timeout { bErrorDeadLockTimeout = true; } } CAMBIOESTRUCTURAUSUARIO_AUX.Modificar(null, nUsuario, nNodoDestino, nAnomesValor, false, ex.Message, (int)Session["IDFICEPI_ENTRADA"], nError); if (bErrorDeadLockTimeout) { sResul = "OK@#@"; } else { sResul = "Error@#@" + Errores.mostrarError("Error al realizar el cambio de estructura de usuario.", ex); } if (ex.Message.IndexOf("servicio de mensajería") != -1) //Si se ha producido un error a la hora de enviar algún correo de consumos borrados. { aListCorreo.Clear(); //hay que borrar los elementos enviados, porque la lista se utiliza para el siguiente usuario. } } finally { Conexion.Cerrar(oConn); } #endregion } #endregion #region Recupera de la tabla auxiliar los datos procesados StringBuilder sb = new StringBuilder(); SqlDataReader dr = CAMBIOESTRUCTURAUSUARIO_AUX.CatalogoDestino(null, (int)Session["IDFICEPI_ENTRADA"]); sb.Append("<table id='tblDatos2' class='texto MM' style='width: 560px;'>"); sb.Append("<colgroup><col style='width:20px;' /><col style='width:240px;' /><col style='width:180px;' /><col style='width:100px; text-align:center;' /><col style='width:20px;' /></colgroup>"); sb.Append("<tbody>"); while (dr.Read()) { sb.Append("<tr id='" + dr["t314_idusuario"].ToString() + "' "); sb.Append("baja='" + dr["baja"].ToString() + "' "); sb.Append("sexo='" + dr["t001_sexo"].ToString() + "' "); sb.Append("nodo_origen='" + dr["t303_idnodo_origen"].ToString() + "' "); sb.Append("nodo_destino='" + dr["t303_idnodo_destino"].ToString() + "' "); if (dr["t776_procesado"].ToString() == "") { sb.Append("procesado='' "); } else if ((bool)dr["t776_procesado"]) { sb.Append("procesado='1' "); } else { sb.Append("procesado='0' "); } sb.Append("excepcion=\"" + Utilidades.escape(dr["t776_excepcion"].ToString()) + "\" "); sb.Append("codigo_excepcion='" + dr["t776_codigoexcepcion"].ToString() + "' "); sb.Append("onclick='mm(event)' onmousedown='DD(event)' "); sb.Append("style='height:20px' >"); sb.Append("<td></td>"); //sb.Append("<td><nobr class='NBR W220' style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../images/info.gif' style='vertical-align:middle' /> Información] body=[<label style='width:60px;'>Usuario:</label>" + int.Parse(dr["t314_idusuario"].ToString()).ToString("#,###") + " - " + dr["Profesional"].ToString().Replace((char)34, (char)39) + "<br><label style='width:60px;'>Empresa:</label>" + dr["t313_denominacion"].ToString().Replace((char)34, (char)39) + "] hideselects=[off]\">" + dr["Profesional"].ToString() + "</nobr></td>"); sb.Append("<td style='padding-left:3px;'><nobr class='NBR W220' style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../images/info.gif' style='vertical-align:middle' /> Información] body=[<label style='width:60px;'>Usuario:</label>" + int.Parse(dr["t314_idusuario"].ToString()).ToString("#,###") + " - " + dr["Profesional"].ToString().Replace((char)34, (char)39) + "] hideselects=[off]\">" + dr["Profesional"].ToString() + "</nobr></td>"); sb.Append("<td><nobr class='NBR W180' style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../images/info.gif' style='vertical-align:middle' /> Información] body=[<label style='width:60px;'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label>" + dr["t303_denominacion"].ToString().Replace((char)34, (char)39) + "] hideselects=[off]\">" + dr["t303_denominacion"].ToString() + "</nobr></td>"); sb.Append("<td>" + dr["t776_anomes"].ToString() + "</td>"); sb.Append("<td></td></tr>"); } dr.Close(); dr.Dispose(); sb.Append("</tbody>"); sb.Append("</table>"); #endregion sResul = "OK@#@" + sb.ToString() + "@#@" + ((bErrorDeadLockTimeout)?"1":"0"); } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al realizar el cambio de estructura de usuario.", ex); } return(sResul); }