コード例 #1
0
ファイル: FrmAprobacion.cs プロジェクト: ahazan/FE21
        /// <summary>
        /// Actualiza el estado de aprobacion del certificado
        /// </summary>
        /// <returns></returns>
        public bool ActualizarAprobacion()
        {
            ManteUdoCertificadoRecibido manteUdoSobreRecibido     = new ManteUdoCertificadoRecibido();
            RespuestaSobre             respuestaSobre             = new RespuestaSobre();
            List <CertificadoRecibido> listaCertificadosRecibidos = new List <CertificadoRecibido>();
            List <ErrorValidarSobre>   listaErrores = new List <ErrorValidarSobre>();
            string estadoAprobacion = "";


            try
            {
                listaCertificadosRecibidos = manteUdoSobreRecibido.ObtenerCertificadoRecibido(DocEntry);
                estadoAprobacion           = ((OptionBtn)Formulario.Items.Item("rbAprob").Specific).Selected ? "Y" : "N";

                if (estadoAprobacion.Equals("Y"))
                {
                    //Sobre validado
                    string idReceptor = respuestaSobre.GenerarACK("AS", listaCertificadosRecibidos[0], listaCertificadosRecibidos[0].CorreoEmisor, null, listaCertificadosRecibidos[0].NombreSobre);

                    foreach (CertificadoRecibido certRecibido in listaCertificadosRecibidos)
                    {
                        certRecibido.IdConsecutio = idReceptor;

                        //Se insertan los datos en la tabla de la BD
                        manteUdoSobreRecibido.ActualizarIdConsecutivo(idReceptor, docEntry);
                    }

                    FTP ftp = new FTP();

                    //Se sube el archivo al servidor FTP
                    ftp.CargarArchivos(listaCertificadosRecibidos[0].NombreSobre, RutasCarpetas.RutaCarpetaBandejaEntrada + listaCertificadosRecibidos[0].NombreSobre, 3);
                }
                else
                {
                    listaErrores = manteUdoSobreRecibido.ObtenerErroresSobre(DocEntry);
                    //Sobre rechazado
                    respuestaSobre.GenerarACK("BS", listaCertificadosRecibidos[0], listaCertificadosRecibidos[0].CorreoEmisor, listaErrores, listaCertificadosRecibidos[0].NombreSobre);
                }
            }
            catch (Exception)
            {
            }

            return(manteUdoSobreRecibido.ActualizarEstado(DocEntry, estadoAprobacion));
        }
コード例 #2
0
        /// <summary>
        /// Metodo que descarga los archivos adjuntos de los correos
        /// no leidos de la cuenta de outlook
        /// </summary>
        public void bandejaEntradaOutlook()
        {
            Microsoft.Office.Interop.Outlook.Application app         = null;
            Microsoft.Office.Interop.Outlook._NameSpace  ns          = null;
            Microsoft.Office.Interop.Outlook.MAPIFolder  inboxFolder = null;
            Microsoft.Office.Interop.Outlook.MailItem    sinLeer;

            int p = 0, t = 0;

            while (!detenerHilo)
            {
                try
                {
                    app = new Microsoft.Office.Interop.Outlook.Application();

                    ns = app.GetNamespace("MAPI");
                    ns.Logon(null, null, false, false);

                    inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.
                                                      OlDefaultFolders.olFolderInbox);

                    ///Se obtiene la bandeja de entrada de la cuenta de correo
                    Microsoft.Office.Interop.Outlook.Items inboxItems = inboxFolder.Items;

                    t = inboxFolder.UnReadItemCount;

                    ///Se obtiene la bandeja de entrada de correos no leidos
                    inboxItems = inboxItems.Restrict("[unread] = true");

                    while (p < t)
                    {
                        if (p == 0)
                        {
                            ///Se obtiene el primer elemento de la bandeja de entrada
                            sinLeer = inboxItems.GetFirst();
                        }
                        else
                        {
                            ///Se obtiene el elemento siguiente de la bandeja de entrada
                            sinLeer = inboxItems.GetNext();
                        }

                        ///Se obtiene los archivos adjuntos del correo
                        Microsoft.Office.Interop.Outlook.Attachments adjuntos = sinLeer.Attachments;

                        foreach (Microsoft.Office.Interop.Outlook.Attachment archivo in adjuntos)
                        {
                            if (ValidarXmlSobre(archivo.FileName))
                            {
                                ///Se marca el correo como no leido
                                sinLeer.UnRead = false;

                                //Se descargar el archivo adjunto del correo
                                archivo.SaveAsFile(RutasCarpetas.RutaCarpetaBandejaEntrada + archivo.FileName);
                                string desde = sinLeer.Sender.ToString();

                                //Se sube el archivo al servidor FTP
                                FTP ftp = new FTP();
                                ftp.CargarArchivos(archivo.FileName, RutasCarpetas.RutaCarpetaBandejaEntrada, 3);

                                //Se guarda en la tabla de sobres Recibidos

                                respuestaSobre.GenerarXML(RutasCarpetas.RutaCarpetaBandejaEntrada, archivo.FileName, desde);
                            }
                            //Se comprueba que sea un ACK
                            else if (ValidarXmlACKSobre(archivo.FileName))
                            {
                                archivo.SaveAsFile(RutasCarpetas.RutaCarpetaBandejaEntrada);
                                sinLeer.UnRead = false;

                                SobreTransito         sobreTransito      = ObtenerSobreTransito(archivo.FileName, sinLeer.Sender.ToString());
                                ManteUdoSobreTransito manteSobreTransito = new ManteUdoSobreTransito();
                                manteSobreTransito.Almacenar(sobreTransito);
                            }
                        }
                        p = p + 1;
                    }
                }
                catch (Exception)
                {
                }
                finally
                {
                    ns          = null;
                    app         = null;
                    inboxFolder = null;

                    Thread.Sleep(60000);
                }
            }
        }