From 8a30f645f8f022a685ef18e113cf743deffaadf8 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Fri, 28 Jun 2019 14:42:53 +0200 Subject: [PATCH] Add attachment subfolder for success and error directories --- DDZUGFeRDService/ThreadRunner.vb | 4 +++ Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb | 43 ++++++++++++++++++++----- Jobs/EDMI/ZUGFeRD/WorkerArgs.vb | 2 ++ 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/DDZUGFeRDService/ThreadRunner.vb b/DDZUGFeRDService/ThreadRunner.vb index 45dbb8d5..d1ffbe67 100644 --- a/DDZUGFeRDService/ThreadRunner.vb +++ b/DDZUGFeRDService/ThreadRunner.vb @@ -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 diff --git a/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb b/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb index 5c594898..1d3250ad 100644 --- a/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb +++ b/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb @@ -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 = $"

The following file is not ZUGFeRD-compliant: {OriginalFilename}

" diff --git a/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb b/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb index 68c39324..71b3f456 100644 --- a/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb +++ b/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb @@ -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