Imports System.Data.SqlClient Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging Imports Microsoft.VisualBasic.FileIO Namespace ZUGFeRD Public Class HistoryFunctions Private ReadOnly _logConfig As LogConfig Private ReadOnly _logger As Logger Private ReadOnly _mssql As MSSQLServer Public Sub New(LogConfig As LogConfig, MSSQL As MSSQLServer) _logConfig = LogConfig _logger = _logConfig.GetLogger() _mssql = MSSQL End Sub Public Function Create_HistoryEntry(MessageId As String, MD5Checksum As String, Message As String, Transaction As SqlTransaction) As Boolean Try _logger.Info("Creating History Entry for MessageId [{0}] with comment [{1}]", MessageId, Message) Dim oSQL = $"INSERT INTO TBEMLP_HISTORY (COMMENT, MD5HASH, EMAIL_MSGID) VALUES ('{Message}', '{MD5Checksum}', '{MessageId}')" Using oConnection = _mssql.GetConnection() ' 09.07.2021: This can't be in the transaction since the history ' Entry needs to be accessed by MoveAndRenameEmailToRejected shortly after _mssql.ExecuteNonQueryWithConnectionObject(oSQL, oConnection) If Message.Contains("REJECTED") Then oSQL = $"UPDATE TBEMLP_HISTORY SET STATUS = 'REJECTED', COMMENT = '{Message}', CUST_REJECTED = 1,CUST_REJECTED_WHEN = GETDATE() WHERE EMAIL_MSGID = '{MessageId}'" _mssql.ExecuteNonQueryWithConnectionObject(oSQL, oConnection) End If _logger.Debug("History Entry created!") End Using Return True Catch ex As Exception _logger.Warn("History Entry count not be created for message id [{0}] and md5 [{1}]", MessageId, MD5Checksum) _logger.Error(ex) Return False End Try End Function Public Function Update_HistoryEntry(MessageId As String, MD5Checksum As String, Message As String, Transaction As SqlTransaction) As Boolean Try _logger.Info("Updating History Entry for MessageId [{0}] with comment [{1}]", MessageId, Message) ' Only look for history entry by MessageId since the MD5 Hash might not be generated yet Using oConnection = _mssql.GetConnection() ' 09.07.2021: This can't be in the transaction since the history ' Entry needs to be accessed by MoveAndRenameEmailToRejected shortly after Dim oSQL = $"UPDATE TBEMLP_HISTORY SET COMMENT = '{Message}' WHERE EMAIL_MSGID = '{MessageId}'" _mssql.ExecuteNonQueryWithConnectionObject(oSQL, oConnection) End Using _logger.Debug("History Entry created!") Return True Catch ex As Exception _logger.Warn("History Entry count not be updated for message id [{0}] and md5 [{1}]", MessageId, MD5Checksum) _logger.Error(ex) Return False End Try End Function End Class End Namespace