コード例 #1
0
        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}";
                }
            }
        }
コード例 #2
0
        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);
        }