Imports DigitalData.Modules.Base Imports DigitalData.Modules.Logging Imports EnvelopeGenerator.Domain.Constants Public Class TemplateService Inherits BaseService Private _replaceDictionary As Dictionary(Of String, String) Private ReadOnly DbConfig As DbConfig Private ReadOnly EmailHtmlTemplateModel As EmailTemplateModel Public Sub New(pState As State) MyBase.New(pState) DbConfig = pState.DbConfig EmailHtmlTemplateModel = New EmailTemplateModel(pState) End Sub Private Sub InitDictionary(pEmailData As EmailData, Optional pReason As String = "") 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}, {"[REASON]", pReason} } End Sub Public Sub FillDocumentReceivedEmailBody(pEmailData As EmailData) InitDictionary(pEmailData) Dim oTemplate = EmailHtmlTemplateModel.GetById(EmailTemplateType.DocumentReceived) pEmailData.EmailBody = FillTemplate(oTemplate.Body) pEmailData.EmailSubject = FillTemplate(oTemplate.Subject) End Sub Public Sub FillEnvelopeDeletedEmailBody(pEmailData As EmailData, pReason As String) InitDictionary(pEmailData, pReason) Dim oTemplate = EmailHtmlTemplateModel.GetById(EmailTemplateType.DocumentDeleted) pEmailData.EmailBody = FillTemplate(oTemplate.Body, pReason) pEmailData.EmailSubject = FillTemplate(oTemplate.Subject) End Sub Public Sub FillDocumentSignedEmailBody(pEmailData As EmailData) InitDictionary(pEmailData) Dim oTemplate = EmailHtmlTemplateModel.GetById(EmailTemplateType.DocumentSigned) pEmailData.EmailBody = FillTemplate(oTemplate.Body) pEmailData.EmailSubject = FillTemplate(oTemplate.Subject) End Sub Public Sub FillDocumentCompletedEmailBody(pEmailData As EmailData) InitDictionary(pEmailData) Dim oTemplate = EmailHtmlTemplateModel.GetById(EmailTemplateType.DocumentCompleted) pEmailData.EmailBody = FillTemplate(oTemplate.Body) pEmailData.EmailSubject = FillTemplate(oTemplate.Subject) End Sub Public Sub FillDocumentAccessCodeReceivedEmailBody(pEmailData As EmailData) InitDictionary(pEmailData) Dim oTemplate = EmailHtmlTemplateModel.GetById(EmailTemplateType.DocumentAccessCodeReceived) pEmailData.EmailBody = FillTemplate(oTemplate.Body) pEmailData.EmailSubject = FillTemplate(oTemplate.Subject) End Sub Private Function FillTemplate(pTemplate As String, Optional pReason As String = "") As String Dim oText As String = pTemplate For Each dictItem As KeyValuePair(Of String, String) In _replaceDictionary If oText.Contains(dictItem.Key) Then oText = oText.Replace(dictItem.Key, dictItem.Value) End If Next Return oText End Function End Class