Jonathan Jenne 52ffcc21cc 11.01.24
2024-01-11 11:20:23 +01:00

174 lines
6.6 KiB
VB.net

Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Public Class EmailTemplate
Private _DocumentReceivedBodyTemplate As List(Of String)
Private _DocumentSignedBodyTemplate As List(Of String)
Private _DocumentCompletedBodyTemplate As List(Of String)
Private _DocumentDeletedBodyTemplate As List(Of String)
Private _DocumentAccessCodeReceivedBodyTemplate As List(Of String)
Private _DocumentReceivedSubjectTemplate As String
Private _DocumentSignedSubjectTemplate As String
Private _DocumentDeletedSubjectTemplate As String
Private _DocumentCompletedSubjectTemplate As String
Private _DocumentAccessCodeReceivedSubjectTemplate As String
Private _replaceDictionary As Dictionary(Of String, String)
Private ReadOnly DbConfig As DbConfig
Private ReadOnly LogConfig As LogConfig
Private ReadOnly Logger As Logger
Public Sub New(pState As State)
InitBodyTemplates()
InitSubjectTemplates()
DbConfig = pState.DbConfig
LogConfig = pState.LogConfig
Logger = LogConfig.GetLogger()
End Sub
Private Sub InitSubjectTemplates()
_DocumentReceivedSubjectTemplate = "Dokument erhalten: '[DOCUMENT_TITLE]'"
_DocumentSignedSubjectTemplate = "Dokument unterschrieben: '[DOCUMENT_TITLE]'"
_DocumentDeletedSubjectTemplate = "Vorgang zurückgezogen: '[DOCUMENT_TITLE]'"
_DocumentCompletedSubjectTemplate = "Vorgang abgeschlossen: '[DOCUMENT_TITLE]'"
_DocumentAccessCodeReceivedSubjectTemplate = "Zugriffscode für Dokument erhalten: '[DOCUMENT_TITLE]'"
End Sub
Private Sub InitBodyTemplates()
_DocumentReceivedBodyTemplate = New List(Of String) From {
"Guten Tag [NAME_RECEIVER],",
"",
"[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.",
"",
"Über den folgenden Link können Sie das Dokument einsehen: <a href=""[LINK_TO_DOCUMENT]"">[LINK_TO_DOCUMENT_TEXT]</a>",
"",
"[MESSAGE]",
"",
"Mit freundlichen Grüßen",
"[NAME_PORTAL]"
}
'_DocumentReceivedBodyTemplate = Common.My.Resources.email_de.Split(vbNewLine).ToList()
'_DocumentAccessCodeReceivedBodyTemplate = Common.My.Resources.
_DocumentSignedBodyTemplate = New List(Of String) From {
"Guten Tag [NAME_RECEIVER]",
"",
"hiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang [DOCUMENT_TITLE].",
"",
"Mit freundlichen Grüßen",
"[NAME_PORTAL]"
}
_DocumentDeletedBodyTemplate = New List(Of String) From {
"Guten Tag [NAME_RECEIVER]",
"",
"Der User [NAME_SENDER] hat den Umschlag [DOCUMENT_TITLE] gelöscht.",
"",
"Mit freundlichen Grüßen",
"[NAME_PORTAL]"
}
_DocumentCompletedBodyTemplate = New List(Of String) From {
"Guten Tag [NAME_RECEIVER]",
"",
"Der Signaturvorgang [DOCUMENT_TITLE] wurde erfolgreich abgeschlossen.",
"Sie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser Email.",
"",
"Vielen Dank für die Nutzung von",
"[NAME_PORTAL]"
}
_DocumentAccessCodeReceivedBodyTemplate = New List(Of String) From {
"Guten Tag [NAME_RECEIVER]",
"",
"[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet. ",
"Verwenden Sie den folgenden Zugriffscode, um das Dokument einzusehen:",
"",
"[DOCUMENT_ACCESS_CODE]",
"",
"Vielen Dank für die Nutzung von",
"[NAME_PORTAL]"
}
End Sub
Private Sub InitDictionary(pEmailData As EmailData)
Logger.Debug("Initializing dictionary..")
_replaceDictionary = New Dictionary(Of String, String) From {
{"[NAME_RECEIVER]", pEmailData.ReceiverName},
{"[NAME_SENDER]", pEmailData.SenderName},
{"[NAME_PORTAL]", DbConfig.ExternalProgramName},
{"[SIGNATURE_TYPE]", "signieren"},
{"[LINK_TO_DOCUMENT]", pEmailData.SignatureLink},
{"[LINK_TO_DOCUMENT_TEXT]", $"{pEmailData.SignatureLink.Truncate(40)}.."},
{"[DOCUMENT_TITLE]", pEmailData.EnvelopeTitle},
{"[MESSAGE]", pEmailData.Message},
{"[DOCUMENT_ACCESS_CODE]", pEmailData.ReceiverAccessCode}
}
End Sub
Public Sub FillDocumentReceivedEmailBody(pEmailData As EmailData)
FillEmailBody(pEmailData, _DocumentReceivedBodyTemplate)
FillEmailSubject(pEmailData, _DocumentReceivedSubjectTemplate)
End Sub
Public Sub FillEnvelopeDeletedEmailBody(pEmailData As EmailData)
FillEmailBody(pEmailData, _DocumentDeletedBodyTemplate)
FillEmailSubject(pEmailData, _DocumentDeletedSubjectTemplate)
End Sub
Public Sub FillDocumentSignedEmailBody(pEmailData As EmailData)
FillEmailBody(pEmailData, _DocumentSignedBodyTemplate)
FillEmailSubject(pEmailData, _DocumentSignedSubjectTemplate)
End Sub
Public Sub FillDocumentCompletedEmailBody(pEmailData As EmailData)
FillEmailBody(pEmailData, _DocumentCompletedBodyTemplate)
FillEmailSubject(pEmailData, _DocumentCompletedSubjectTemplate)
End Sub
Public Sub FillDocumentAccessCodeReceivedEmailBody(pEmailData As EmailData)
FillEmailBody(pEmailData, _DocumentAccessCodeReceivedBodyTemplate)
FillEmailSubject(pEmailData, _DocumentAccessCodeReceivedSubjectTemplate)
End Sub
Private Sub FillEmailSubject(pEmailData As EmailData, pTemplate As String)
InitDictionary(pEmailData)
Dim oSubject As String = pTemplate
For Each dictItem As KeyValuePair(Of String, String) In _replaceDictionary
If oSubject.Contains(dictItem.Key) Then
oSubject = oSubject.Replace(dictItem.Key, dictItem.Value)
End If
Next
pEmailData.EmailSubject = oSubject
End Sub
Private Sub FillEmailBody(pEmailData As EmailData, pTemplate As List(Of String))
InitDictionary(pEmailData)
Dim oBody As String = ""
For Each lineItem As String In pTemplate
Dim oLineValue As String = lineItem
For Each dictItem As KeyValuePair(Of String, String) In _replaceDictionary
If oLineValue.Contains(dictItem.Key) Then
oLineValue = oLineValue.Replace(dictItem.Key, dictItem.Value)
End If
Next
oBody += oLineValue + "<br/>"
Next
pEmailData.EmailBody = oBody
End Sub
End Class