2023-09-20

This commit is contained in:
PitzM 2023-09-20 13:46:34 +02:00
parent 12556e41e4
commit 510813b06a
12 changed files with 119 additions and 16 deletions

View File

@ -1,4 +1,5 @@
Public Class DbConfig Public Class DbConfig
Public Property DocumentPath As String = "" Public Property DocumentPath As String = ""
Public Property SendingProfile As Integer = 0 Public Property SendingProfile As Integer = 0
Public Property SignatureHost As String = ""
End Class End Class

View File

@ -2,6 +2,13 @@
Public Property EmailAdress As String Public Property EmailAdress As String
Public Property EmailSubject As String Public Property EmailSubject As String
Public Property EmailBody As String Public Property EmailBody As String
Public Property ReferenceID As Integer Public Property ReferenceID As Integer
Public Property ReceiverName As String
Public Property SenderName As String
Public Property SenderAdress As String
Public Property SignatureLink As String
Public Property Message As String
End Class End Class

View File

@ -0,0 +1,59 @@
Public Class EmailTemplate
Inherits BaseModel
Private _firstBodyTemplate As List(Of String)
Private _replaceDictionary As Dictionary(Of String, String)
Public Sub New(pState As State)
MyBase.New(pState)
InitTemplate()
End Sub
Private Sub InitTemplate()
_firstBodyTemplate = 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: <LINK_TO_DOCUMENT>",
"",
"<MESSAGE>",
"",
"Mit freundlichen Grüßen",
"<NAME_SENDER>"
}
End Sub
Private Sub InitDictionary(pEmailData As EmailData)
_replaceDictionary = New Dictionary(Of String, String) From {
{"<NAME_RECEIVER>", pEmailData.ReceiverName},
{"<NAME_SENDER>", pEmailData.SenderName},
{"<SIGNATURE_TYPE>", ""},
{"<LINK_TO_DOCUMENT>", pEmailData.SignatureLink},
{"<MESSAGE>", pEmailData.Message}
}
End Sub
Public Sub SetEmailBody(pEmailData As EmailData)
InitDictionary(pEmailData)
Dim resultBody As String = ""
For Each lineItem As String In _firstBodyTemplate
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
resultBody += oLineValue + "<br/>"
Next
pEmailData.EmailBody = resultBody
End Sub
End Class

View File

@ -6,4 +6,9 @@
Public Property Email As String Public Property Email As String
Public Property Language As String Public Property Language As String
Public ReadOnly Property FullName() As String
Get
Return Prename + " " + Name
End Get
End Property
End Class End Class

View File

@ -96,6 +96,7 @@
<Compile Include="DbConfig.vb" /> <Compile Include="DbConfig.vb" />
<Compile Include="Entities\ElementMetadata.vb" /> <Compile Include="Entities\ElementMetadata.vb" />
<Compile Include="Entities\EmailData.vb" /> <Compile Include="Entities\EmailData.vb" />
<Compile Include="Entities\EmailTemplate.vb" />
<Compile Include="Entities\Envelope.vb" /> <Compile Include="Entities\Envelope.vb" />
<Compile Include="Entities\EnvelopeDocument.vb" /> <Compile Include="Entities\EnvelopeDocument.vb" />
<Compile Include="Entities\EnvelopeDocumentElement.vb" /> <Compile Include="Entities\EnvelopeDocumentElement.vb" />

View File

@ -10,4 +10,14 @@
'TODO: Entschlüsseln 'TODO: Entschlüsseln
Return New Tuple(Of String, String)(oSplit(0), oSplit(1)) Return New Tuple(Of String, String)(oSplit(0), oSplit(1))
End Function End Function
Public Shared Function GetEnvelopeURL(pHost As String, pEnvelopeUuid As String, pReceiverSignature As String) As String
Dim oEnvelopeUserReference As String = EncodeEnvelopeReceiverId(pEnvelopeUuid, pReceiverSignature)
Dim oURL As String = ""
oURL = String.Format("{0}/EnvelopeKey/{1}", pHost.Trim(), oEnvelopeUserReference)
Return oURL
End Function
End Class End Class

View File

@ -1,6 +1,5 @@
Imports DigitalData.Modules.Database Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports System.Data
Public MustInherit Class BaseModel Public MustInherit Class BaseModel
Protected Database As MSSQLServer Protected Database As MSSQLServer

View File

@ -1,8 +1,5 @@
Imports System.Data Imports System.Data.SqlClient
Imports System.Data.SqlClient
Imports System.Transactions
Imports DigitalData.Modules.Base Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Common.My.Resources
Public Class DocumentModel Public Class DocumentModel
Inherits BaseModel Inherits BaseModel

View File

@ -5,8 +5,12 @@ Imports DigitalData.Modules.Logging
Public Class EnvelopeModel Public Class EnvelopeModel
Inherits BaseModel Inherits BaseModel
Private UserModel As UserModel
Public Sub New(pState As State) Public Sub New(pState As State)
MyBase.New(pState) MyBase.New(pState)
UserModel = New UserModel(pState)
End Sub End Sub
Private Function ToEnvelope(pRow As DataRow) As Envelope Private Function ToEnvelope(pRow As DataRow) As Envelope
@ -17,12 +21,14 @@ Public Class EnvelopeModel
.Uuid = pRow.ItemEx("ENVELOPE_UUID", ""), .Uuid = pRow.ItemEx("ENVELOPE_UUID", ""),
.Subject = pRow.ItemEx("SUBJECT", ""), .Subject = pRow.ItemEx("SUBJECT", ""),
.Message = pRow.ItemEx("MESSAGE", ""), .Message = pRow.ItemEx("MESSAGE", ""),
.UserId = State.UserId, .UserId = pRow.ItemEx("USER_ID", 0),
.Status = ObjectEx.ToEnum(Of Constants.EnvelopeStatus)(pRow.ItemEx("STATUS", "Created")), .Status = ObjectEx.ToEnum(Of Constants.EnvelopeStatus)(pRow.ItemEx("STATUS", "Created")),
.AddedWhen = pRow.Item("ADDED_WHEN"), .AddedWhen = pRow.Item("ADDED_WHEN"),
.User = New User() .User = New User()
} }
oEnvelope.User = UserModel.SelectUser(oEnvelope.UserId)
Return oEnvelope Return oEnvelope
End Function End Function

View File

@ -1,7 +1,5 @@
Imports System.Data.SqlClient Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports EnvelopeGenerator.Common.My.Resources
Public Class UserModel Public Class UserModel
Inherits BaseModel Inherits BaseModel
@ -36,4 +34,17 @@ Public Class UserModel
End Try End Try
End Function End Function
Public Function SelectUser(pUserID As Integer) As User
Try
Dim oSql = $"SELECT * FROM [dbo].[TBDD_USER] WHERE GUID = {pUserID}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToUser).First
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
End Class End Class

View File

@ -35,17 +35,23 @@ Public Class EnvelopeEditorController
For Each receiverItem As EnvelopeReceiver In Envelope.Receivers For Each receiverItem As EnvelopeReceiver In Envelope.Receivers
' TODO Email-Template füllen
Dim oEmailBody As String = String.Empty
Dim oEmailData As EmailData = New EmailData With Dim oEmailData As EmailData = New EmailData With
{ {
.EmailAdress = receiverItem.Email, .EmailAdress = receiverItem.Email,
.EmailSubject = Envelope.Subject, .EmailSubject = Envelope.Subject,
.EmailBody = oEmailBody, .Message = Envelope.Message,
.ReferenceID = Envelope.Id .ReferenceID = Envelope.Id,
.ReceiverName = receiverItem.Name,
.SenderAdress = Envelope.User.Email,
.SenderName = Envelope.User.FullName,
.SignatureLink = Helpers.GetEnvelopeURL(State.DbConfig.SignatureHost, Envelope.Uuid, receiverItem.Signature)
} }
' TODO Email-Template füllen
Dim oTemplate As EmailTemplate = New EmailTemplate(State)
oTemplate.SetEmailBody(oEmailData)
If EmailModel.Insert(oEmailData) = False Then If EmailModel.Insert(oEmailData) = False Then
Logger.Error("EMail data could not be inserted.") Logger.Error("EMail data could not be inserted.")
oResult = False oResult = False

View File

@ -72,7 +72,8 @@ Public Class frmMain
Return New DbConfig() With { Return New DbConfig() With {
.DocumentPath = oRow.ItemEx("DOCUMENT_PATH", ""), .DocumentPath = oRow.ItemEx("DOCUMENT_PATH", ""),
.SendingProfile = oRow.ItemEx("SENDING_PROFILE", 0) .SendingProfile = oRow.ItemEx("SENDING_PROFILE", 0),
.SignatureHost = oRow.ItemEx("SIGNATURE_HOST", "")
} }
Catch ex As Exception Catch ex As Exception
Return New DbConfig() Return New DbConfig()