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); } }
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; } }
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"; } }
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(); } }
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)); } } } } }