diff --git a/EnvelopeGenerator.Common/DbConfig.vb b/EnvelopeGenerator.Common/DbConfig.vb index 013eb8a5..69515bf0 100644 --- a/EnvelopeGenerator.Common/DbConfig.vb +++ b/EnvelopeGenerator.Common/DbConfig.vb @@ -1,4 +1,5 @@ Public Class DbConfig Public Property DocumentPath As String = "" Public Property SendingProfile As Integer = 0 + Public Property SignatureHost As String = "" End Class diff --git a/EnvelopeGenerator.Common/Entities/EmailData.vb b/EnvelopeGenerator.Common/Entities/EmailData.vb index dc01e725..7603d7f8 100644 --- a/EnvelopeGenerator.Common/Entities/EmailData.vb +++ b/EnvelopeGenerator.Common/Entities/EmailData.vb @@ -2,6 +2,13 @@ Public Property EmailAdress As String Public Property EmailSubject As String Public Property EmailBody As String - 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 diff --git a/EnvelopeGenerator.Common/Entities/EmailTemplate.vb b/EnvelopeGenerator.Common/Entities/EmailTemplate.vb new file mode 100644 index 00000000..9caa4591 --- /dev/null +++ b/EnvelopeGenerator.Common/Entities/EmailTemplate.vb @@ -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, ,", + "", + " hat Ihnen ein Dokument zum gesendet.", + "", + "Über den folgenden Link können Sie das Dokument einsehen: ", + "", + "", + "", + "Mit freundlichen Grüßen", + "" + } + End Sub + + Private Sub InitDictionary(pEmailData As EmailData) + _replaceDictionary = New Dictionary(Of String, String) From { + {"", pEmailData.ReceiverName}, + {"", pEmailData.SenderName}, + {"", ""}, + {"", pEmailData.SignatureLink}, + {"", 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 + "
" + Next + + pEmailData.EmailBody = resultBody + + End Sub +End Class diff --git a/EnvelopeGenerator.Common/Entities/User.vb b/EnvelopeGenerator.Common/Entities/User.vb index 1b7804e5..d7592d4e 100644 --- a/EnvelopeGenerator.Common/Entities/User.vb +++ b/EnvelopeGenerator.Common/Entities/User.vb @@ -6,4 +6,9 @@ Public Property Email As String Public Property Language As String + Public ReadOnly Property FullName() As String + Get + Return Prename + " " + Name + End Get + End Property End Class diff --git a/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj b/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj index 8d44b64f..f204adbf 100644 --- a/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj +++ b/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj @@ -96,6 +96,7 @@ + diff --git a/EnvelopeGenerator.Common/Helpers.vb b/EnvelopeGenerator.Common/Helpers.vb index d81a2721..5beea27b 100644 --- a/EnvelopeGenerator.Common/Helpers.vb +++ b/EnvelopeGenerator.Common/Helpers.vb @@ -10,4 +10,14 @@ 'TODO: Entschlüsseln Return New Tuple(Of String, String)(oSplit(0), oSplit(1)) 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 diff --git a/EnvelopeGenerator.Common/Models/BaseModel.vb b/EnvelopeGenerator.Common/Models/BaseModel.vb index 4a2eb9bf..4651a2c5 100644 --- a/EnvelopeGenerator.Common/Models/BaseModel.vb +++ b/EnvelopeGenerator.Common/Models/BaseModel.vb @@ -1,6 +1,5 @@ Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging -Imports System.Data Public MustInherit Class BaseModel Protected Database As MSSQLServer diff --git a/EnvelopeGenerator.Common/Models/DocumentModel.vb b/EnvelopeGenerator.Common/Models/DocumentModel.vb index f1ed6661..58bfb9d8 100644 --- a/EnvelopeGenerator.Common/Models/DocumentModel.vb +++ b/EnvelopeGenerator.Common/Models/DocumentModel.vb @@ -1,8 +1,5 @@ -Imports System.Data -Imports System.Data.SqlClient -Imports System.Transactions +Imports System.Data.SqlClient Imports DigitalData.Modules.Base -Imports EnvelopeGenerator.Common.My.Resources Public Class DocumentModel Inherits BaseModel diff --git a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb index 12308a59..b25d752a 100644 --- a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb +++ b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb @@ -5,8 +5,12 @@ Imports DigitalData.Modules.Logging Public Class EnvelopeModel Inherits BaseModel + Private UserModel As UserModel + Public Sub New(pState As State) MyBase.New(pState) + + UserModel = New UserModel(pState) End Sub Private Function ToEnvelope(pRow As DataRow) As Envelope @@ -17,12 +21,14 @@ Public Class EnvelopeModel .Uuid = pRow.ItemEx("ENVELOPE_UUID", ""), .Subject = pRow.ItemEx("SUBJECT", ""), .Message = pRow.ItemEx("MESSAGE", ""), - .UserId = State.UserId, + .UserId = pRow.ItemEx("USER_ID", 0), .Status = ObjectEx.ToEnum(Of Constants.EnvelopeStatus)(pRow.ItemEx("STATUS", "Created")), .AddedWhen = pRow.Item("ADDED_WHEN"), .User = New User() } + oEnvelope.User = UserModel.SelectUser(oEnvelope.UserId) + Return oEnvelope End Function diff --git a/EnvelopeGenerator.Common/Models/UserModel.vb b/EnvelopeGenerator.Common/Models/UserModel.vb index 6c3a0c3e..117e8387 100644 --- a/EnvelopeGenerator.Common/Models/UserModel.vb +++ b/EnvelopeGenerator.Common/Models/UserModel.vb @@ -1,7 +1,5 @@ -Imports System.Data.SqlClient -Imports DigitalData.Modules.Base +Imports DigitalData.Modules.Base Imports DigitalData.Modules.Logging -Imports EnvelopeGenerator.Common.My.Resources Public Class UserModel Inherits BaseModel @@ -36,4 +34,17 @@ Public Class UserModel End Try 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 diff --git a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb index bc51c23c..22ea23b2 100644 --- a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb +++ b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb @@ -35,17 +35,23 @@ Public Class EnvelopeEditorController 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 { .EmailAdress = receiverItem.Email, .EmailSubject = Envelope.Subject, - .EmailBody = oEmailBody, - .ReferenceID = Envelope.Id + .Message = Envelope.Message, + .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 Logger.Error("EMail data could not be inserted.") oResult = False diff --git a/EnvelopeGenerator.Form/frmMain.vb b/EnvelopeGenerator.Form/frmMain.vb index a0639faf..427d6888 100644 --- a/EnvelopeGenerator.Form/frmMain.vb +++ b/EnvelopeGenerator.Form/frmMain.vb @@ -72,7 +72,8 @@ Public Class frmMain Return New DbConfig() With { .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 Return New DbConfig()