Пример #1
0
        public static void ProcesaCopiaArchivoProcesadoAFinalizado(fnExpedienteDigitalFinalizadoPendiente_Result archivoFinalizadoPendiente, ExpedienteDigitalArchivo expedienteDigitalArchivo /*, CLLASausageContext db*/)
        {
            if (expedienteDigitalArchivo == null)
            {
                throw new Exception("Existe un problema de integridad en la base de datos");
            }

            if (File.Exists(archivoFinalizadoPendiente.RutaCompletaOrigen))
            {
                //Crear directorio destino si no existe
                try
                {
                    Directory.CreateDirectory(archivoFinalizadoPendiente.RutaCompletaDestino.Substring(0, archivoFinalizadoPendiente.RutaCompletaDestino.LastIndexOf(@"\")));
                }
                catch (Exception ex)
                {
                    Logs.EscribirLog("No se puede copiar archivo a finalizado" + Excepciones.ObtenerMensajesExcepcionEnCadenaSencilla(ex));
                }

                if (!File.Exists(archivoFinalizadoPendiente.RutaCompletaDestino))
                {
                    File.Copy(archivoFinalizadoPendiente.RutaCompletaOrigen, archivoFinalizadoPendiente.RutaCompletaDestino);
                }

                string rutaRaiz = archivoFinalizadoPendiente.RutaCompletaDestino.Substring(0, archivoFinalizadoPendiente.RutaCompletaDestino.LastIndexOf(@"\") + 1);
                string nombreArchivoCompleto = archivoFinalizadoPendiente.RutaCompletaDestino.Substring(archivoFinalizadoPendiente.RutaCompletaDestino.LastIndexOf(@"\") + 1);
                string nombreArchivo         = nombreArchivoCompleto.Substring(0, nombreArchivoCompleto.LastIndexOf("."));
                string extensionArchivo      = nombreArchivoCompleto.Substring(nombreArchivoCompleto.LastIndexOf(".") + 1);

                expedienteDigitalArchivo.Finalizado = DateTime.Now;
                expedienteDigitalArchivo.Ruta       = rutaRaiz;
                expedienteDigitalArchivo.Nombre     = nombreArchivo;
                expedienteDigitalArchivo.Extension  = extensionArchivo;
                expedienteDigitalArchivo.Visible    = true;
            }
            else
            {
                Logs.EscribirLog("No existe archivo en origen : " + archivoFinalizadoPendiente.RutaCompletaOrigen);
            }
        }
Пример #2
0
        public static void ProcesaArchivo(ExpedienteDigitalProcesamientoArchivo archivoPendiente, string rutaOrigenAlterna /*, CLLASausageContext db*/)
        {
            if (string.IsNullOrEmpty(rutaOrigenAlterna))
            {
                rutaOrigenAlterna = archivoPendiente.ArchivoRutaCompletaOrigen;
            }

            if (File.Exists(rutaOrigenAlterna))
            {
                //Crear directorio destino si no existe
                try
                {
                    Directory.CreateDirectory(archivoPendiente.ArchivoRutaCompletaDestino.Substring(0, archivoPendiente.ArchivoRutaCompletaDestino.LastIndexOf(@"\")));
                }
                catch (Exception ex)
                {
                    archivoPendiente.Error = DateTime.Now;
                    archivoPendiente.ErrorObservaciones             = Excepciones.ObtenerMensajesExcepcionEnCadenaSencilla(ex);
                    archivoPendiente.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.NO_ES_POSIBLE_CREAR_DIRECTORIO_DESTINO;
                }

                if (!File.Exists(archivoPendiente.ArchivoRutaCompletaDestino))
                {
                    File.Copy(rutaOrigenAlterna, archivoPendiente.ArchivoRutaCompletaDestino);
                }


                archivoPendiente.Procesado = DateTime.Now;
            }
            else
            {
                archivoPendiente.Error = DateTime.Now;
                archivoPendiente.ErrorObservaciones             = "FALTA ARCHIVO EN ORIGEN";
                archivoPendiente.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.FALTA_ARCHIVO_ORIGEN;
            }
        }
Пример #3
0
        public static void ProcesaArchivoBitacoraExportacionSysExpert(ExpedienteDigitalBitacoraExportacion archivo)
        {
            archivo.RutaCompletaExportado = archivo.RutaCompletaExportado.Replace("NAS-EXPDIGITAL", "10.1.45.252");
            archivo.RutaRaiz = archivo.RutaRaiz.Replace("NAS-EXPDIGITAL", "10.1.45.252");

            if (File.Exists(archivo.RutaOrigen))
            {
                if (Directory.Exists(archivo.RutaRaiz))
                {
                    try
                    {
                        if (!File.Exists(archivo.RutaCompletaExportado))
                        {
                            File.Copy(archivo.RutaOrigen, archivo.RutaCompletaExportado, true);
                        }

                        archivo.Exportado = DateTime.Now;
                    }
                    catch (Exception ex)
                    {
                        archivo.Error = DateTime.Now;
                        archivo.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.NO_ES_POSIBLE_COPIAR_ARCHIVO_DE_ORIGEN_A_DESTINO;
                        archivo.ErrorObservaciones             = "No se puede copiar archivo de Sausage a SysExpert " + Excepciones.ObtenerMensajesExcepcionEnCadenaSencilla(ex);
                    }
                }
                else
                {
                    archivo.Error = DateTime.Now;
                    archivo.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.DIRECTORIO_DESTINO_NO_EXISTE;
                    archivo.ErrorObservaciones             = "Expediente de SysExpert no existe";
                }
            }
            else
            {
                archivo.Error = DateTime.Now;
                archivo.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.FALTA_ARCHIVO_ORIGEN;
                archivo.ErrorObservaciones             = "Archivo en finalizado Sausage no existe";
            }
        }
Пример #4
0
        public static void CargaArchivosBitacoraExportacionClienteSFTP(CLLASausageContext db)
        {
            var arhivosBitacoraExportacionCliente = db.ExpedienteDigitalBitacoraExportacionCliente.Where(w => w.RutaCompletaExportado != null && w.Exportado == null && DateTime.Now >= w.Programacion && w.IdExpedienteDigitalTipoExportacion == 3).ToList();

            foreach (var archivo in arhivosBitacoraExportacionCliente)
            {
                if (File.Exists(archivo.RutaOrigen))
                {
                    try
                    {
                        SessionOptions sessionOptions = new SessionOptions();
                        sessionOptions.HostName   = archivo.Servidor;
                        sessionOptions.PortNumber = Convert.ToInt32(archivo.Puerto);
                        sessionOptions.UserName   = archivo.Usuario;
                        sessionOptions.Password   = archivo.Contrasenia;
                        sessionOptions.Protocol   = Protocol.Sftp;
                        sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;

                        Session session = new Session();
                        session.Open(sessionOptions);

                        string rutaRaizFormateada = archivo.RutaRaiz.Substring(1).Replace(@"\", "/");

                        if (!session.FileExists(rutaRaizFormateada))
                        {
                            var directorios = rutaRaizFormateada.Split('/').Where(w => w.Length > 0).ToList();

                            string ruta = string.Empty;
                            foreach (var directorio in directorios)
                            {
                                ruta = ruta + "/" + directorio;

                                if (!session.FileExists(ruta))
                                {
                                    session.CreateDirectory(ruta);
                                }
                            }
                        }

                        session.PutFileToDirectory(archivo.RutaOrigen, archivo.RutaRaiz.Substring(1).Replace(@"\", "/"), false, new TransferOptions {
                            OverwriteMode = OverwriteMode.Overwrite
                        });

                        session.Close();

                        archivo.Exportado = DateTime.Now;
                    }
                    catch (Exception ex)
                    {
                        archivo.Error = DateTime.Now;
                        archivo.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.FALTA_ARCHIVO_ORIGEN;
                        archivo.ErrorObservaciones             = Excepciones.ObtenerMensajesExcepcionEnCadenaSencilla(ex);
                    }
                }
                else
                {
                    archivo.Error = DateTime.Now;
                    archivo.ErrorIdExpedienteDigitalEvento = (int)Modelos.Enumerados.ExpedienteDigitalEventoBitacora.FALTA_ARCHIVO_ORIGEN;
                    archivo.ErrorObservaciones             = "FALTA ARCHIVO EN ORIGEN";
                }

                db.SaveChanges();
            }
        }
Пример #5
0
        public static void ProcesaGastosComprobados(CLLASausageContext db)
        {
            var archivosXML = Directory.GetFiles(configuracionSistema.GastosComprobadosRutaOrigen, "*.xml");

            string rutaCompletaArchivoXML   = string.Empty;
            string directorioRaizArchivoXML = string.Empty;
            string nombreCompletoArhivoXML  = string.Empty;
            string nombreArchivoXML         = string.Empty;
            string rutaCompletaArchivoPDF   = string.Empty;

            foreach (var archivoXML in archivosXML)
            {
                rutaCompletaArchivoXML   = archivoXML;
                directorioRaizArchivoXML = archivoXML.Substring(0, archivoXML.LastIndexOf("\\") + 1);
                nombreCompletoArhivoXML  = archivoXML.Substring(archivoXML.LastIndexOf(@"\") + 1);
                nombreArchivoXML         = nombreCompletoArhivoXML.Substring(0, nombreCompletoArhivoXML.LastIndexOf("."));

                rutaCompletaArchivoPDF = directorioRaizArchivoXML + nombreArchivoXML + ".pdf";

                ExpedienteDigitalGastoComprobado gastoComprobado = new ExpedienteDigitalGastoComprobado();

                try
                {
                    using (FileStream fileStream = new FileStream(archivoXML, FileMode.Open))
                    {
                        XmlSerializer serializer  = new XmlSerializer(typeof(Comprobante));
                        Comprobante   comprobante = (Comprobante)serializer.Deserialize(fileStream);

                        //Datos del CFDI
                        gastoComprobado.EmisorNombre = comprobante.Emisor.Nombre;
                        gastoComprobado.EmisorRFC    = comprobante.Emisor.Rfc;
                        gastoComprobado.Fecha        = comprobante.Fecha;
                        gastoComprobado.Folio        = comprobante.Folio;
                        gastoComprobado.SubTotal     = comprobante.SubTotal;
                        gastoComprobado.Total        = comprobante.Total;

                        gastoComprobado.RutaArchivoXMLOrigen  = archivoXML;
                        gastoComprobado.RutaArchivoXMLDestino = configuracionSistema.GastosComprobadosRutaDestino + gastoComprobado.Fecha.Substring(0, 4) + "\\" + gastoComprobado.Fecha.Substring(5, 2) + "\\" + nombreCompletoArhivoXML;
                        gastoComprobado.RutaArchivoPDFOrigen  = configuracionSistema.GastosComprobadosRutaOrigen + nombreArchivoXML + ".pdf";
                        gastoComprobado.RutaArchivoPDFDestino = configuracionSistema.GastosComprobadosRutaDestino + gastoComprobado.Fecha.Substring(0, 4).ToString() + "\\" + gastoComprobado.Fecha.Substring(5, 2) + "\\" + nombreArchivoXML + ".pdf";
                    }

                    Directory.CreateDirectory(gastoComprobado.RutaArchivoXMLDestino.Substring(0, gastoComprobado.RutaArchivoXMLDestino.LastIndexOf("\\")));
                    File.Move(gastoComprobado.RutaArchivoXMLOrigen, gastoComprobado.RutaArchivoXMLDestino);
                    File.Move(gastoComprobado.RutaArchivoPDFOrigen, gastoComprobado.RutaArchivoPDFDestino);


                    db.ExpedienteDigitalGastoComprobado.Add(gastoComprobado);
                    db.SaveChanges();
                }
                catch (IOException exYaExiste) when((exYaExiste.HResult & 0x0000FFFF) == 183)  //El archivo ya existe en destino (ERROR_ALREADY_EXISTS)
                {
                    string rutaErrorYaExiste = directorioRaizArchivoXML + "ProcesadoSausage\\Error\\YaExistente\\";

                    Directory.CreateDirectory(rutaErrorYaExiste);

                    string rutaCompletaErrorXML = rutaErrorYaExiste + nombreCompletoArhivoXML;
                    string rutaCompletaErrorPDF = rutaErrorYaExiste + nombreArchivoXML + ".pdf";

                    try
                    {
                        if (File.Exists(rutaCompletaErrorXML))
                        {
                            File.Delete(rutaCompletaArchivoXML);
                        }
                        else
                        {
                            File.Move(rutaCompletaArchivoXML, rutaCompletaErrorXML);
                        }

                        if (File.Exists(rutaCompletaErrorPDF))
                        {
                            File.Delete(rutaCompletaArchivoPDF);
                        }
                        else
                        {
                            File.Move(rutaCompletaArchivoPDF, rutaCompletaErrorPDF);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logs.EscribirLog("Error al mover XML (Error lectura XML): " + Excepciones.ObtenerMensajesExcepcionEnCadenaSencilla(ex));
                    }
                }
                catch (Exception ex)
                {
                    if (
                        Excepciones.ObtenerNombreExcepcion(ex) == "XmlException" ||
                        (Excepciones.ObtenerNombreExcepcion(ex) == "InvalidOperationException" && Excepciones.ObtenerMensajeExepcion(ex) == "No se esperaba <Acuse xmlns=''>.")
                        )
                    {
                        string rutaErrorXML = directorioRaizArchivoXML + "ProcesadoSausage\\Error\\LecturaXML\\";
                        Directory.CreateDirectory(rutaErrorXML);

                        string rutaCompletaErrorXML = rutaErrorXML + nombreCompletoArhivoXML;
                        string rutaCompletaErrorPDF = rutaErrorXML + nombreArchivoXML + ".pdf";

                        try
                        {
                            File.Move(rutaCompletaArchivoXML, rutaCompletaErrorXML);
                            File.Move(rutaCompletaArchivoPDF, rutaCompletaErrorPDF);
                        }
                        catch (Exception exXML)
                        {
                            Logs.EscribirLog("Error al mover XML (Error lectura XML): " + Excepciones.ObtenerMensajesExcepcionEnCadenaSencilla(exXML));
                        }
                    }
                }
            }
        }