private void PdfSigner_SignedFileEvent(object sender, SignedFileEventArgs e) { var a = ArchivosParaFirmar.Where(ar => ar.File.FullName == e.File.FullName).First(); if (e.HasError) { a.Estado = EstadoFirmaArchivo.GetError(); a.Estado.Descripcion = e.Message; logger.Error("Ha ocurrido un error firmando el archivo {archivo} del lote {lote} con el siguiente mensaje: {mensaje}", e.File.Name, a.Lote, e.Message); } else { try { File.WriteAllBytes(System.IO.Path.Combine(carpetaDestino, e.File.Name), e.SignedContent); } catch (Exception es) { logger.Error("No se pudo guardar el archivo {directorio} .", a.File.FullName); a.Estado = EstadoFirmaArchivo.GetError(); a.Estado.Descripcion = $"No se pudo guardar el archivo.\n{es.Message}"; return; } a.Estado = EstadoFirmaArchivo.GetFirmado(); logger.Information("El archivo {archivo} del lote {lote} ha sido firmado.", a.File.Name, a.Lote); try { a.File.Delete(); logger.Information("El archivo {archivo} del lote {lote} ha sido eliminado de la carpeta origen.", a.File.Name, a.Lote); if (a.File.Directory.GetFiles().Count() == 0) { try { a.File.Directory.Delete(); logger.Information("Se borró el directorio {directorio} de la carpeta origen.", a.File.Directory.Name); } catch (Exception eD) { logger.Error(eD, "No se pudo borrar el directorio {directorio} de la carpeta origen.", a.File.Directory.Name); a.Estado = EstadoFirmaArchivo.GetAtencion(); a.Estado.Descripcion = $"El archivo se firmó y se eliminó.\nEra el último archivo del lote pero no se pudo borrar el directorio.\n{eD.Message}"; } } } catch (Exception exx) { logger.Error(exx, "No se pudo borrar archivo {archivo} del lote {lote} de la carpeta origen.", a.File.Name, a.Lote); a.Estado = EstadoFirmaArchivo.GetAtencion(); a.Estado.Descripcion = $"El archivo se firmó pero no se pudo eliminar.\n{exx.Message}"; } } }
public bool LoadFiles() { var dirOrigen = new DirectoryInfo(CarpetaOrigen); var files = dirOrigen.GetFiles("*.pdf", SearchOption.AllDirectories); if (files.Count() == 0) { return(false); } foreach (var f in files) { ArchivosParaFirmar.Add(new FileProcessing() { File = f, Estado = EstadoFirmaArchivo.GetPendiente(), Lote = f.Directory.Name, }); } return(true); }