From 797a01245a125d8cc19672bb1062ea1b42369a8c Mon Sep 17 00:00:00 2001 From: SchreiberM Date: Tue, 25 Jun 2024 11:23:13 +0200 Subject: [PATCH] V 1.7 Test ByteData --- Services.EmailService/DDEmailService.vbproj | 1 + Services.EmailService/EmailService.vb | 81 +++++++++++++++++-- .../My Project/AssemblyInfo.vb | 2 +- Services.EmailService/TempFiles.vb | 60 ++++++++++++++ 4 files changed, 138 insertions(+), 6 deletions(-) create mode 100644 Services.EmailService/TempFiles.vb diff --git a/Services.EmailService/DDEmailService.vbproj b/Services.EmailService/DDEmailService.vbproj index 78887ceb..b9c19b05 100644 --- a/Services.EmailService/DDEmailService.vbproj +++ b/Services.EmailService/DDEmailService.vbproj @@ -135,6 +135,7 @@ Settings.settings True + diff --git a/Services.EmailService/EmailService.vb b/Services.EmailService/EmailService.vb index 4fb608b4..3a40e59b 100644 --- a/Services.EmailService/EmailService.vb +++ b/Services.EmailService/EmailService.vb @@ -19,11 +19,14 @@ Public Class EmailService Private _Encryption As EncryptionLegacy Private _EmailQueue As BackgroundWorker Private _QueueTimer As Timer + Private _TempFiles As TempFiles Private _AnyDatabaseInitialized As Boolean = False Private _limilab As Limilab Private _MailSender As Mail.MailSender + Private _AttachmentByteData As Byte() Private ReadOnly _messageSend As Boolean = False + Private Enum DatabaseType Firebird MSSQL @@ -77,7 +80,8 @@ Public Class EmailService End If _AnyDatabaseInitialized = _Firebird?._DBInitialized Or _MSSQL?.DBInitialized Or _MSSQL_Test?.DBInitialized - + _TempFiles = New TempFiles(_LogConfig) + _TempFiles.Create() ' === Initialize Email === _Logger.Debug("Inititalize Email") @@ -372,6 +376,8 @@ Public Class EmailService Dim oSubject = String.Empty Dim oBody = String.Empty Dim oAddedWhen = Now + Dim ATT1_RELATED_ID = String.Empty + Dim ATT1_REL_TYPE = String.Empty Select Case Database Case DatabaseType.Firebird @@ -409,16 +415,32 @@ Public Class EmailService oAddedWhen = oRow.ItemEx("ADDED_WHEN", Now) oAttachment = oRow.ItemEx("EMAIL_ATTMT1", String.Empty) + ATT1_RELATED_ID = oRow.ItemEx("ATT1_RELATED_ID", String.Empty) + ATT1_REL_TYPE = oRow.ItemEx("ATT1_REL_TYPE", String.Empty) End Select - + If ATT1_RELATED_ID <> String.Empty And ATT1_REL_TYPE <> String.Empty Then + _Logger.Info($"Attachment via byte/ID [{ATT1_RELATED_ID}]...") + If ATT1_REL_TYPE = "EnvelopeResult" Then + GetEnvelope_Result_FileStreamByte(ATT1_RELATED_ID, MSSQLInstance) + End If + If IsNothing(_AttachmentByteData) = False Then + Dim oTempFolder = _TempFiles.TempPath + Dim oTempFilename = String.Concat(oTempFolder, "\", $"SigningReport_{ATT1_RELATED_ID}.pdf") + Dim oFileFromByteData = CreateTempFileFromByte(oTempFilename) + If Not IsNothing(oFileFromByteData) Then + _Logger.Info($"Attachment is [{oFileFromByteData}]!") + oAttachment = oFileFromByteData + End If + End If + End If If oAttachment <> String.Empty Then If oAttachment.ToString.Contains("\") Then If File.Exists(oAttachment) = False Then - _Logger.Warn($"Email Attachment [{oAttachment}] not existing!") - oComment = $"Email Attachment [{oAttachment}] not existing!" + _Logger.Warn($"Email Attachment [{oAttachment}] Not existing!") + oComment = $"Email Attachment [{oAttachment}] Not existing!" oAttachment = String.Empty Else - _Logger.Debug("Email Attachment is: {0}", oAttachment) + _Logger.Debug("Email Attachment Is: {0}", oAttachment) End If End If @@ -505,12 +527,61 @@ Public Class EmailService Return False End Try End Function + Private Sub GetEnvelope_Result_FileStreamByte(ByVal pEnvID As Long, pMSSQL As MSSQLServer) + + Dim strSql As String + 'For Document + Try + 'Get image data from gridview column. + strSql = "Select [DOC_RESULT] from [TBSIG_ENVELOPE] WHERE GUID = " & pEnvID + Dim obyteDB = pMSSQL.GetScalarValue(strSql) + If Not IsDBNull(obyteDB) Then + 'Get image data from DB + Dim fileData As Byte() = DirectCast(obyteDB, Byte()) + If Not fileData Is Nothing Then + _AttachmentByteData = fileData + Else + _AttachmentByteData = Nothing + End If + Else + _AttachmentByteData = Nothing + End If + + Catch ex As Exception + _Logger.Warn($"Error in GetEnvelope_Result_FileStreamByte [{ex.Message}]") + _Logger.Error(ex) + _AttachmentByteData = Nothing + End Try + End Sub + Private Function CreateTempFileFromByte(ByVal sFileName As String) As String + Try + If Not _AttachmentByteData Is Nothing Then + 'Read image data into a file stream + Using fs As New FileStream(sFileName, FileMode.OpenOrCreate, FileAccess.Write) + fs.Write(_AttachmentByteData, 0, _AttachmentByteData.Length) + 'Set image variable value using memory stream. + fs.Flush() + fs.Close() + End Using + 'Open File + Return sFileName + Else + _Logger.Warn($"Error in CreateTempFileFromByte - _AttachmentByteData is nothing!") + Return Nothing + End If + Catch ex As Exception + _Logger.Warn($"Error in CreateTempFileFromByte [{ex.Message}]") + _Logger.Error(ex) + Return Nothing + End Try + End Function Protected Overrides Sub OnStop() Try _Logger.Warn("Service {0} was stopped.", ServiceName) + _TempFiles.CleanUp() Catch ex As Exception _Logger.Warn("Error while stopping service!") _Logger.Error(ex) diff --git a/Services.EmailService/My Project/AssemblyInfo.vb b/Services.EmailService/My Project/AssemblyInfo.vb index 00425d4c..e568bb1c 100644 --- a/Services.EmailService/My Project/AssemblyInfo.vb +++ b/Services.EmailService/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/Services.EmailService/TempFiles.vb b/Services.EmailService/TempFiles.vb new file mode 100644 index 00000000..3ae0eff7 --- /dev/null +++ b/Services.EmailService/TempFiles.vb @@ -0,0 +1,60 @@ +Imports System.IO +Imports DigitalData.Modules.Base +Imports DigitalData.Modules.Logging + +Public Class TempFiles + Inherits BaseClass + + Public Property TempPath As String + + Public Sub New(pLogConfig As LogConfig) + MyBase.New(pLogConfig) + + Dim oTempDirectoryPath = Path.GetTempPath() + TempPath = Path.Combine(oTempDirectoryPath, "EnvelopeGenerator") + End Sub + + Public Function Create() As Boolean + Try + If Directory.Exists(TempPath) = False Then + Directory.CreateDirectory(TempPath) + Else + CleanUpFiles() + End If + Return True + + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + + End Function + + Private Function CleanUpFiles() As Boolean + Try + For Each fileItem As String In Directory.GetFiles(TempPath) + Logger.Debug("Deleting tempPath-file: {0} ...", fileItem) + File.Delete(fileItem) + Next + + Return True + + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function + + Public Function CleanUp() As Boolean + Try + Logger.Debug("Deleting tempPath-Data: {0} ...", TempPath) + Directory.Delete(TempPath, True) + Return True + + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function + +End Class