Ejemplo n.º 1
0
    private void ObtenerDatos()
    {
        bool bCorreoActivado = ACCESOAPLI.CorreoActivado(null, 14);

        if (bCorreoActivado)
        {
            this.hdnEstadoCorreo.Value = "A";
        }
        else
        {
            this.hdnEstadoCorreo.Value = "D";
        }
    }
Ejemplo n.º 2
0
    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);
    }