Add attachment subfolder for success and error directories

This commit is contained in:
Jonathan Jenne 2019-06-28 14:42:53 +02:00
parent a57f0c6b9b
commit 8a30f645f8
3 changed files with 41 additions and 8 deletions

View File

@ -20,6 +20,7 @@ Public Class ThreadRunner
Private _successDirectory As String
Private _errorDirectory As String
Private _originalEmailDirectory As String
Private _attachmentDirectory As String
Private _zugferd As ZUGFeRDInterface
Private _jobArguments As WorkerArgs
Private _mssql As MSSQLServer
@ -148,6 +149,9 @@ Public Class ThreadRunner
Case ZUGFERD_REJECTED_EML
args.RejectedEmailDirectory = row.Item("FOLDER_PATH")
Case ZUGFERD_ATTACHMENTS
args.AttachmentsSubDirectory = row.Item("FOLDER_PATH")
End Select
Next

View File

@ -20,6 +20,7 @@ Public Class ImportZUGFeRDFiles
Public Const ZUGFERD_SUCCESS = "ZUGFeRD Success"
Public Const ZUGFERD_EML = "ZUGFeRD Eml"
Public Const ZUGFERD_REJECTED_EML = "ZUGFeRD Eml Rejected"
Public Const ZUGFERD_ATTACHMENTS = "ZUGFeRD Attachments"
Private _logger As Logger
Private _logConfig As LogConfig
@ -226,7 +227,10 @@ Public Class ImportZUGFeRDFiles
Dim oZUGFeRDCount As Integer = 0
' Set the default Move Directory
Dim oMoveDirectory As String = args.SuccessDirectory
' Create file lists
Dim oFileGroupFiles As List(Of FileInfo) = oFileGroup.Value
Dim oFileAttachmentFiles As New List(Of FileInfo)
Dim oFileGroupId As String = oFileGroup.Key
Dim oMissingProperties As New List(Of String)
Dim oMD5CheckSum As String = String.Empty
@ -248,6 +252,7 @@ Public Class ImportZUGFeRDFiles
' Only pdf files are allowed from here on
If Not oFile.Name.EndsWith(".pdf") Then
_logger.Debug("Skipping non-pdf file {0}", oFile.Name)
oFileAttachmentFiles.Add(oFile)
Continue For
End If
@ -257,6 +262,7 @@ Public Class ImportZUGFeRDFiles
oDocument = _zugferd.ExtractZUGFeRDFile(oFile.FullName)
Catch ex As Exception
_logger.Warn("File is not a valid ZUGFeRD document! Skipping.")
oFileAttachmentFiles.Add(oFile)
Continue For
End Try
@ -509,14 +515,16 @@ Public Class ImportZUGFeRDFiles
oConnection.Close()
' Move all files of the current group
For Each oFile In oFileGroupFiles
_filesystem.MoveTo(oFile.FullName, oMoveDirectory)
_logger.Info("Finished processing file {0}", oFile.Name)
_logger.Info("File moved to {0}", oMoveDirectory)
Next
_logger.Info("Finished processing file group {0}", oFileGroupId)
_logger.EndBlock()
Try
MoveFiles(args, oFileGroupFiles, oFileAttachmentFiles, oMoveDirectory)
_logger.Info("Finished processing file group {0}", oFileGroupId)
Catch ex As Exception
_logger.Warn("Could not move files!")
_logger.Error(ex)
Throw ex
Finally
_logger.EndBlock()
End Try
End Try
Next
End If
@ -529,6 +537,25 @@ Public Class ImportZUGFeRDFiles
End Try
End Sub
Private Sub MoveFiles(Args As WorkerArgs, Files As List(Of FileInfo), AttachmentFiles As List(Of FileInfo), MoveDirectory As String)
For Each oFile In Files
Dim oFinalMoveDirectory As String = MoveDirectory
If AttachmentFiles.Contains(oFile) Then
oFinalMoveDirectory = Path.Combine(MoveDirectory, Args.AttachmentsSubDirectory)
If Not Directory.Exists(oFinalMoveDirectory) Then
Directory.CreateDirectory(oFinalMoveDirectory)
End If
End If
_filesystem.MoveTo(oFile.FullName, oFinalMoveDirectory)
_logger.Info("Finished processing file {0}", oFile.Name)
_logger.Info("File moved to {0}", oFinalMoveDirectory)
Next
End Sub
Private Function CreateBodyForMissingProperties(OriginalFilename As String, MissingProperties As List(Of String))
Dim oBody = $"<p>The following file is not ZUGFeRD-compliant: {OriginalFilename}</p>"

View File

@ -6,6 +6,7 @@ Public Class WorkerArgs
Public ErrorDirectory As String
Public OriginalEmailDirectory As String
Public RejectedEmailDirectory As String
Public AttachmentsSubDirectory As String
Public PropertyMap As Dictionary(Of String, XmlItemProperty)
Public InsertIntoSQLServer As Boolean
@ -15,6 +16,7 @@ Public Class WorkerArgs
ErrorDirectory = Nothing
OriginalEmailDirectory = Nothing
RejectedEmailDirectory = Nothing
AttachmentsSubDirectory = Nothing
PropertyMap = New Dictionary(Of String, XmlItemProperty)
InsertIntoSQLServer = False
End Sub