コード例 #1
0
    private void enviarPackExpress(string extension)
    {
        System.Text.StringBuilder strb = new System.Text.StringBuilder();
        string sTexto = "";

        svcSendPack.SendPackClient oPaq = null;

        try
        {
            string   strMensaje           = "";
            string   strCabecera          = "";
            string   strDatos             = "";
            string   strAsunto            = "";
            string   strTO                = "";
            string[] aNombreProfesionales = Regex.Split(strNombreProfesionales, @"/");

            strAsunto   = "Pedido CVT (Localizador: " + trackingId + ")";
            strMensaje  = "El pedido que has realizado para obtener los curriculums de los profesionales que se muestran al final de este correo, ha generado un documento que excede el tamaño máximo para ser enviado por correo (10Mb), por lo que se te enviará en breve a través de PAQEXPRESS.<br><br>";
            strMensaje += "Lozalizador asignado: " + trackingId;

            strDatos = "<br><br><table id='tblTitulo' width='100%' class='texto' border='0' cellspacing='0' cellpadding='0'>";
            //for (int i = aNombreProfesionales.Length - 1; i >= 0; i--)
            for (int i = 0; i < aNombreProfesionales.Length; i++)
            {
                if (aNombreProfesionales[i] == "")
                {
                    continue;
                }
                strDatos += "<tr>";
                strDatos += "<td width='100%'>" + aNombreProfesionales[i].ToString() + "</td>";
                strDatos += "</tr>";
            }
            strDatos += "</table>";

            ArrayList aListCorreo = new ArrayList();

            string[] aDestinatarios = Regex.Split(strDestinatarios, @",");

            for (int i = 0; i < aDestinatarios.Length; i++)
            {
                try
                {
                    strMensaje += strCabecera + strDatos;
                    strTO       = aDestinatarios[i].ToString();

                    string[] aMail = { strAsunto, strMensaje, strTO, "" };
                    aListCorreo.Add(aMail);
                }
                catch (System.Exception objError)
                {
                    enviarCorreoErrorEDA("Error al enviar el mail.", objError);
                    enviarCorreoErrorUsuario();
                }
            }

            if (aDestinatarios.Length != 0)
            {
                SUPER.Capa_Negocio.Correo.EnviarCorreosCVT(aListCorreo);
            }

            /********** Inicio de envío a PaqExpress **************/
            oPaq = new svcSendPack.SendPackClient();

            DateTime dtIni = DateTime.Now;
            sTexto = dtIni.ToString() + "\r\n";

            strb.Append("<Pack>");
            strb.Append("<User>PAQEXPRESS</User>");
            strb.Append("<Clave>XRJ001-WCF-SUPER-CV.</Clave>");
            strb.Append("<IdFicepi>" + strDestinatariosIdFicepi + "</IdFicepi>");
            strb.Append("<FPedido>" + DateTime.Now.ToString() + "</FPedido>");
            strb.Append("<Profesionales>" + strNombreProfesionales.Replace("/", ";") + "</Profesionales>");
            strb.Append("<Ref>" + trackingId + "</Ref>");//Nº de referencia para tracking
            strb.Append("</Pack>");

            //oPaq.CrearPaqueteCV(new FileInfo(nombreDoc + extension).Name, strb.ToString(), File.OpenRead(pathDirectory + trackingId + @"\" + nombreDoc + extension));
            oPaq.CrearPaqueteCV(new FileInfo(sFileName).Name, strb.ToString(), File.OpenRead(sFileName));
            /********** Fin de envío a PaqExpress **************/
        }
        catch (FaultException <svcSendPack.PackException> cex)
        {
            string sError = "Error: Código:" + cex.Detail.ErrorCode + ". Descripción: " + cex.Detail.Message;// +" " + cex.Detail.InnerMessage;

            if (cex.Detail.InnerMessage != "")
            {
                sError += "\r\nInnerMessage: " + cex.Detail.InnerMessage;
            }
            sTexto += sError + "\r\n";
            enviarCorreoErrorEDA(sTexto, cex);
            enviarCorreoErrorUsuario();
        }
        catch (Exception ex)
        {
            enviarCorreoErrorEDA(ex.Message + "\r\n", ex);
            enviarCorreoErrorUsuario();
        }
        finally
        {
            //Cierre del canal
            if (oPaq != null && oPaq.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (oPaq.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    oPaq.Close();
                }
                else if (oPaq.State != System.ServiceModel.CommunicationState.Closed)
                {
                    oPaq.Abort();
                }
            }
        }
    }
コード例 #2
0
    private string Procesar(int nAnomes, string strDatos)
    {
        string        sRes = "OK", sIdFicepi = Session["IDFICEPI_ENTRADA"].ToString(), sNomArchivoZip = "";
        StringBuilder strb = new StringBuilder();

        try
        {
            DataSet ds = NODO.FicherosIAP(null, nAnomes, strDatos);

            #region Crear directorio
            //string path = @"D:\cursos\ficheros";

            //if (!impersonateValidUser("aplicacion_super", @"ibdatdo\aplicacion_super", "@pL1suP3r!"))
            //    return "Error@#@Error en la impersonación";
            //string path = ConfigurationManager.AppSettings["pathFicherosIAP"].ToString();
            string path = Request.PhysicalApplicationPath + "TempImagesGraficos\\FicheroIAP\\" + Session["IDRED"];

            //SUPER.DAL.Log.Insertar("Verificar si el path existe");

            if (Directory.Exists(path))
            {
                Directory.Delete(path, true);
            }
            Directory.CreateDirectory(path);
            #endregion

            #region creacion de ficheros
            StringBuilder result = new StringBuilder();
            foreach (DataRow oProyecto in ds.Tables[0].Rows)//Recorro tabla de proyectos
            {
                for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                {
                    result.Append(oProyecto[i].ToString());
                    result.Append(i == ds.Tables[0].Columns.Count - 1 ? "\r\n" : "\t");
                }
                //result.AppendLine();
            }

            StreamWriter swProyecto = new StreamWriter(path + @"\proyecto.txt", false);
            swProyecto.WriteLine(result.ToString());
            swProyecto.Close();
            //SUPER.DAL.Log.Insertar("Fin tabla Proyectos");

            result.Length = 0;

            foreach (DataRow oTarea in ds.Tables[1].Rows)//Recorro tabla de tarea
            {
                for (int i = 0; i < ds.Tables[1].Columns.Count; i++)
                {
                    result.Append(oTarea[i].ToString());
                    result.Append(i == ds.Tables[1].Columns.Count - 1 ? "\r\n" : "\t");
                }
            }
            StreamWriter swTarea = new StreamWriter(path + @"\tarea.txt", false);
            swTarea.WriteLine(result.ToString());
            swTarea.Close();

            result.Length = 0;

            foreach (DataRow oAtributo in ds.Tables[2].Rows)//Recorro tabla de Atributo
            {
                for (int i = 0; i < ds.Tables[2].Columns.Count; i++)
                {
                    result.Append(oAtributo[i].ToString());
                    result.Append(i == ds.Tables[2].Columns.Count - 1 ? "\r\n" : "\t");
                }
            }

            StreamWriter swAtributo = new StreamWriter(path + @"\atributo.txt", false);
            swAtributo.WriteLine(result.ToString());
            swAtributo.Close();

            result.Length = 0;

            foreach (DataRow oConsumo in ds.Tables[3].Rows)//Recorro tabla de Consumo
            {
                for (int i = 0; i < ds.Tables[3].Columns.Count; i++)
                {
                    result.Append(oConsumo[i].ToString());
                    result.Append(i == ds.Tables[3].Columns.Count - 1 ? "\r\n" : "\t");
                }
            }

            StreamWriter swConsumo = new StreamWriter(path + @"\consumo.txt", false);
            swConsumo.WriteLine(result.ToString());
            swConsumo.Close();

            result.Length = 0;

            foreach (DataRow oCliente in ds.Tables[4].Rows)//Recorro tabla de Cliente
            {
                for (int i = 0; i < ds.Tables[4].Columns.Count; i++)
                {
                    result.Append(oCliente[i].ToString());
                    result.Append(i == ds.Tables[4].Columns.Count - 1 ? "\r\n" : "\t");
                }
            }

            StreamWriter swCliente = new StreamWriter(path + @"\cliente.txt", false);
            swCliente.WriteLine(result.ToString());
            swCliente.Close();

            result.Length = 0;

            foreach (DataRow oEmpleado in ds.Tables[5].Rows)//Recorro tabla de Empleado
            {
                for (int i = 0; i < ds.Tables[5].Columns.Count; i++)
                {
                    result.Append(oEmpleado[i].ToString());
                    result.Append(i == ds.Tables[5].Columns.Count - 1 ? "\r\n" : "\t");
                }
            }

            StreamWriter swEmpleado = new StreamWriter(path + @"\empleado.txt", false);
            swEmpleado.WriteLine(result.ToString());
            swEmpleado.Close();

            result.Length = 0;

            foreach (DataRow oOrdenFact in ds.Tables[6].Rows)//Recorro tabla de Ordenes de facturación
            {
                for (int i = 0; i < ds.Tables[6].Columns.Count; i++)
                {
                    result.Append(oOrdenFact[i].ToString());
                    result.Append(i == ds.Tables[6].Columns.Count - 1 ? "\r\n" : "\t");
                }
            }

            StreamWriter swOrdenFact = new StreamWriter(path + @"\ordenesFacturacion.txt", false);
            swOrdenFact.WriteLine(result.ToString());
            swOrdenFact.Close();
            #endregion

            #region Genero un zip con todos los archivos de la carpeta
            sNomArchivoZip = CompressFile(path);
            FileInfo fInfo = new FileInfo(sNomArchivoZip);
            long     lTamFich = fInfo.Length;
            long     iTamEnBytes = fInfo.Length, TamMaxPermitido = 104857600;//100Mb
            string   sTamMax = ConfigurationManager.AppSettings["TamMaxPack"];
            if (sTamMax != "")
            {
                TamMaxPermitido = long.Parse(sTamMax) * 1024 * 1024;//Paso de Mb a bytes
            }
            if (iTamEnBytes > TamMaxPermitido)
            {
                return("TAMANO_EXCEDIDO@#@" + iTamEnBytes.ToString());
            }
            #endregion

            #region Envío los ficheros al usuario
            //Si el fichero < 10Mb -> envío por correo sino por PaqExpress
            #region Establezco el tamaño del archivo
            double     dTamMax     = 10;
            bool       bPaqExpress = false;
            FileStream fsFichero   = System.IO.File.OpenRead(sNomArchivoZip);
            if ((fsFichero.Length / 1048576) > dTamMax)
            {//Si el resultado es > 10Mb enviarlo por PaqExpress
                bPaqExpress = true;
            }
            #endregion

            if (bPaqExpress)
            {
                #region Envío por PaqExpress
                svcSendPack.SendPackClient oPaq = new svcSendPack.SendPackClient();
                try
                {
                    strb.Append("<Pack>");
                    strb.Append("<User>PAQEXPRESS</User>");
                    strb.Append("<Clave>XRJ001-WCF-SUPER-CV.</Clave>");
                    strb.Append("<IdFicepi>" + sIdFicepi + "</IdFicepi>");
                    strb.Append("<FPedido>" + DateTime.Now.ToString() + "</FPedido>");
                    strb.Append("<Profesionales></Profesionales>");
                    strb.Append("<Obs>Paquete de ficheros para IAP</Obs>");
                    strb.Append("<Ref></Ref>");//Nº de referencia para tracking
                    strb.Append("</Pack>");
                    //oPaq.CrearPaqueteCV(new FileInfo(nombreDoc + extension).Name, strb.ToString(), File.OpenRead(pathDirectory + trackingId + @"\" + nombreDoc + extension));
                    FileStream fAux     = File.OpenRead(sNomArchivoZip);
                    string     sAuxName = new FileInfo(sNomArchivoZip).Name;
                    oPaq.CrearPaqueteCV(sAuxName, strb.ToString(), fAux);
                }
                catch (FaultException <svcSendPack.PackException> cex)
                {
                    string sError = "Error: Código:" + cex.Detail.ErrorCode + ". Descripción: " + cex.Detail.Message;// +" " + cex.Detail.InnerMessage;
                    if (cex.Detail.InnerMessage != "")
                    {
                        sError += "\r\nInnerMessage: " + cex.Detail.InnerMessage;
                    }
                    sRes = sError + "\r\n";
                }
                catch (Exception ex)
                {
                    sRes = ex.Message;
                }
                finally
                {
                    //Cierre del canal
                    if (oPaq != null && oPaq.State != System.ServiceModel.CommunicationState.Closed)
                    {
                        if (oPaq.State != System.ServiceModel.CommunicationState.Faulted)
                        {
                            oPaq.Close();
                        }
                        else if (oPaq.State != System.ServiceModel.CommunicationState.Closed)
                        {
                            oPaq.Abort();
                        }
                    }
                }
                #endregion
            }
            else
            {
                #region Envío por correo
                string    strAsunto     = "Ficheros generados para IAP";
                string    strMensaje    = "Se adjunta archivo comprimido que contiene los archivos generados para IAP";
                string    sDestinatario = Session["IDRED"].ToString();
                string[]  aMail         = { strAsunto, strMensaje, sDestinatario, sNomArchivoZip };
                ArrayList aListCorreo   = new ArrayList();
                aListCorreo.Add(aMail);
                SUPER.Capa_Negocio.Correo.EnviarCorreosCita(aListCorreo);
                #endregion
            }
            #endregion

            return(sRes + "@#@" + path);
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los datos.", ex));
        }
    }