Zugferd: fix
This commit is contained in:
@@ -5,7 +5,6 @@ Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Interfaces
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports Microsoft.VisualBasic.FileIO
|
||||
|
||||
Namespace ZUGFeRD
|
||||
Public Class FileFunctions
|
||||
@@ -13,29 +12,31 @@ Namespace ZUGFeRD
|
||||
Private ReadOnly _logger As Logger
|
||||
Private ReadOnly _mssql As MSSQLServer
|
||||
Private ReadOnly _filesystem As FilesystemEx
|
||||
Private ReadOnly _email As ZUGFeRD.EmailFunctions
|
||||
|
||||
Public Sub New(LogConfig As LogConfig, MSSQL As MSSQLServer)
|
||||
_logConfig = LogConfig
|
||||
Public Sub New(pLogConfig As LogConfig, pMSSQL As MSSQLServer)
|
||||
_logConfig = pLogConfig
|
||||
_logger = _logConfig.GetLogger()
|
||||
_mssql = MSSQL
|
||||
_filesystem = New FilesystemEx(LogConfig)
|
||||
_mssql = pMSSQL
|
||||
_email = New EmailFunctions(pLogConfig, pMSSQL)
|
||||
_filesystem = New FilesystemEx(pLogConfig)
|
||||
End Sub
|
||||
|
||||
Public Sub MoveFiles(
|
||||
Args As WorkerArgs,
|
||||
MessageId As String,
|
||||
Files As List(Of FileInfo),
|
||||
AttachmentFiles As List(Of FileInfo),
|
||||
EmbeddedAttachments As List(Of PDFEmbeds.EmbeddedFile),
|
||||
MoveDirectory As String,
|
||||
IsSuccess As Boolean)
|
||||
pArgs As WorkerArgs,
|
||||
pMessageId As String,
|
||||
pFiles As List(Of FileInfo),
|
||||
pAttachmentFiles As List(Of FileInfo),
|
||||
pEmbeddedAttachments As List(Of PDFEmbeds.EmbeddedFile),
|
||||
pMoveDirectory As String,
|
||||
pIsSuccess As Boolean)
|
||||
|
||||
Dim oFinalMoveDirectory As String = MoveDirectory
|
||||
Dim oFinalMoveDirectory As String = pMoveDirectory
|
||||
Dim oDateSubDirectoryName As String = Now.ToString("yyyy\\MM\\dd")
|
||||
Dim oAttachmentDirectory As String = Path.Combine(oFinalMoveDirectory, Args.AttachmentsSubDirectory, oDateSubDirectoryName)
|
||||
Dim oAttachmentDirectory As String = Path.Combine(oFinalMoveDirectory, pArgs.AttachmentsSubDirectory, oDateSubDirectoryName)
|
||||
|
||||
' Files will be moved to a subfolder for the current day if they are rejected
|
||||
If Not IsSuccess Then
|
||||
If Not pIsSuccess Then
|
||||
oFinalMoveDirectory = Path.Combine(oFinalMoveDirectory, oDateSubDirectoryName)
|
||||
End If
|
||||
|
||||
@@ -48,7 +49,7 @@ Namespace ZUGFeRD
|
||||
End Try
|
||||
End If
|
||||
|
||||
If Not Directory.Exists(oAttachmentDirectory) And AttachmentFiles.Count > 0 Then
|
||||
If Not Directory.Exists(oAttachmentDirectory) And pAttachmentFiles.Count > 0 Then
|
||||
Try
|
||||
Directory.CreateDirectory(oAttachmentDirectory)
|
||||
Catch ex As Exception
|
||||
@@ -57,7 +58,7 @@ Namespace ZUGFeRD
|
||||
End If
|
||||
|
||||
' Filter out Attachments from `Files`
|
||||
Dim oInvoiceFiles As List(Of FileInfo) = Files.Except(AttachmentFiles).ToList()
|
||||
Dim oInvoiceFiles As List(Of FileInfo) = pFiles.Except(pAttachmentFiles).ToList()
|
||||
|
||||
' Move PDF/A Files
|
||||
For Each oFile In oInvoiceFiles
|
||||
@@ -74,7 +75,7 @@ Namespace ZUGFeRD
|
||||
Next
|
||||
|
||||
' Move non-PDF/A Email Attachments/Files
|
||||
For Each oFile In AttachmentFiles
|
||||
For Each oFile In pAttachmentFiles
|
||||
Try
|
||||
Dim oFilePath = _filesystem.GetVersionedFilename(Path.Combine(oAttachmentDirectory, oFile.Name))
|
||||
|
||||
@@ -87,9 +88,9 @@ Namespace ZUGFeRD
|
||||
Next
|
||||
|
||||
' Write Embedded Files to disk
|
||||
For Each oResult In EmbeddedAttachments
|
||||
For Each oResult In pEmbeddedAttachments
|
||||
Try
|
||||
Dim oFileName As String = $"{MessageId}~{oResult.FileName}"
|
||||
Dim oFileName As String = $"{pMessageId}~{oResult.FileName}"
|
||||
Dim oFilePath As String = Path.Combine(oAttachmentDirectory, oFileName)
|
||||
|
||||
If Not File.Exists(oAttachmentDirectory) Then
|
||||
@@ -108,6 +109,72 @@ Namespace ZUGFeRD
|
||||
|
||||
_logger.Info("Finished moving files")
|
||||
End Sub
|
||||
|
||||
Public Function MoveAndRenameEmailToRejected(pArgs As WorkerArgs, pMessageId As String) As EmailData
|
||||
_logger.Info("Moving Mail with MessageId [{0}] to Rejected folder", pMessageId)
|
||||
_logger.Debug("Fetching Email Data")
|
||||
|
||||
Dim oEmailData = _email.GetEmailDataForMessageId(pMessageId)
|
||||
_logger.Debug("Email Data fetched!")
|
||||
|
||||
Dim oSource = _email.GetOriginalEmailPath(pArgs.OriginalEmailDirectory, pMessageId)
|
||||
_logger.Debug("Original email path: [{0}]", oSource)
|
||||
|
||||
Dim oDateSubDirectoryName As String = Now.ToString("yyyy-MM-dd")
|
||||
Dim oDestination As String
|
||||
|
||||
Dim oRejectedDirectory As String = Path.Combine(pArgs.RejectedEmailDirectory, oDateSubDirectoryName)
|
||||
|
||||
' Create the destination directory if it does not exist
|
||||
_logger.Debug("Creating destination directory [{0}]", oRejectedDirectory)
|
||||
If Not Directory.Exists(oRejectedDirectory) Then
|
||||
Try
|
||||
Directory.CreateDirectory(oRejectedDirectory)
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End If
|
||||
|
||||
If oSource = String.Empty Then
|
||||
_logger.Warn("Original Email for [{0}] could not be found. Exiting.", pMessageId)
|
||||
Return New EmailData()
|
||||
End If
|
||||
|
||||
' If oEmailData is Nothing, TBEDM_EMAIL_PROFILER_HISTORY for MessageId was not found.
|
||||
' This only should happen when testing and db-tables are deleted frequently
|
||||
If oEmailData Is Nothing Then
|
||||
oDestination = _email.GetEmailPathWithSubjectAsName(oRejectedDirectory, pMessageId)
|
||||
Else
|
||||
oDestination = _email.GetEmailPathWithSubjectAsName(oRejectedDirectory, StringEx.ConvertTextToSlug(oEmailData.Subject))
|
||||
End If
|
||||
|
||||
_logger.Debug("Destination for eml file is {0}", oDestination)
|
||||
|
||||
Dim oFinalFileName = _filesystem.GetVersionedFilename(oDestination)
|
||||
|
||||
_logger.Debug("Versioned filename for eml file is {0}", oFinalFileName)
|
||||
|
||||
If oEmailData Is Nothing Then
|
||||
_logger.Warn("Could not get Email Data from Database. File {0} will not be moved!", oSource)
|
||||
Return New EmailData()
|
||||
End If
|
||||
|
||||
'---------------------------
|
||||
|
||||
Try
|
||||
_logger.Info("Moving email from {0} to {1}", oSource, oFinalFileName)
|
||||
File.Move(oSource, oFinalFileName)
|
||||
oEmailData.Attachment = oFinalFileName
|
||||
Catch ex As Exception
|
||||
_logger.Warn("File {0} could not be moved! Original Filename will be used!", oSource)
|
||||
_logger.Error(ex)
|
||||
oEmailData.Attachment = oSource
|
||||
End Try
|
||||
|
||||
_logger.Info("Email [{0}] moved to rejected folder!", pMessageId)
|
||||
|
||||
Return oEmailData
|
||||
End Function
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
|
||||
Reference in New Issue
Block a user