refactor(EnvelopeGenerator.Common): umbenennen in EnvelopeGenerator.CommonService

This commit is contained in:
Developer 02
2025-05-26 11:14:12 +02:00
parent a5261baec5
commit c1d46b446a
120 changed files with 93 additions and 93 deletions

View File

@@ -0,0 +1,14 @@
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Public MustInherit Class BaseModel
Protected Database As MSSQLServer
Protected Logger As Logger
Protected State As State
Public Sub New(pState As State)
Logger = pState.LogConfig.GetLogger()
Database = pState.Database
State = pState
End Sub
End Class

View File

@@ -0,0 +1,51 @@
Imports System.Data.SqlClient
Imports EnvelopeGenerator.Domain.Entities
Public Class CertificateModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Public Function Insert(pEnvelope As Envelope) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_CERTIFICATE] "
oSql += " ([ENVELOPE_ID] "
oSql += " ,[ENVELOPE_UUID]"
oSql += " ,[ENVELOPE_SUBJECT]"
oSql += " ,[CREATOR_ID]"
oSql += " ,[CREATOR_NAME]"
oSql += " ,[CREATOR_EMAIL]"
oSql += " ,[ENVELOPE_STATUS])"
oSql += " VALUES "
oSql += " (@ENVELOPE_ID "
oSql += " ,@ENVELOPE_UUID"
oSql += " ,@ENVELOPE_SUBJECT"
oSql += " ,@CREATOR_ID"
oSql += " ,@CREATOR_NAME"
oSql += " ,@CREATOR_EMAIL"
oSql += " ,@ENVELOPE_STATUS)"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pEnvelope.Id
oCommand.Parameters.Add("ENVELOPE_UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid
oCommand.Parameters.Add("ENVELOPE_SUBJECT", SqlDbType.NVarChar).Value = String.Empty
oCommand.Parameters.Add("CREATOR_ID", SqlDbType.Int).Value = pEnvelope.UserId
oCommand.Parameters.Add("CREATOR_NAME", SqlDbType.NVarChar).Value = pEnvelope.User.FullName
oCommand.Parameters.Add("CREATOR_EMAIL", SqlDbType.NVarChar).Value = pEnvelope.User.Email
oCommand.Parameters.Add("ENVELOPE_STATUS", SqlDbType.Int).Value = pEnvelope.Status
If Database.ExecuteNonQuery(oCommand) Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,28 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Public Class ChartModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Public Function LoadPIEExample() As DataTable
Try
Dim oSQL As String
oSQL = " SELECT 'ALLE' as Argument, 100 as Value"
oSQL += " UNION "
oSQL += " SELECT 'Komplett', 33 "
Dim oTable As DataTable = Database.GetDatatable(oSQL)
Return oTable
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,37 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Public Class ConfigModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Public Function LoadConfiguration() As DbConfig
Try
Dim oSql As String = "SELECT TOP 1 * FROM TBSIG_CONFIG"
Dim oTable As DataTable = Database.GetDatatable(oSql)
Dim oRow As DataRow = oTable.Rows.Item(0)
Return New DbConfig() With {
.DocumentPath = oRow.ItemEx("DOCUMENT_PATH", ""),
.DocumentPathOrigin = oRow.ItemEx("DOCUMENT_PATH", ""),
.ExportPath = oRow.ItemEx("EXPORT_PATH", ""),
.SendingProfile = oRow.ItemEx("SENDING_PROFILE", 0),
.SignatureHost = oRow.ItemEx("SIGNATURE_HOST", ""),
.ExternalProgramName = oRow.ItemEx("EXTERNAL_PROGRAM_NAME", ""),
.Default_TFA_Enabled = oRow.ItemEx("DEF_TFA_ENABLED", False),
.Default_TFA_WithPhone = oRow.ItemEx("DEF_TFA_WITH_PHONE", False)
}
Catch ex As Exception
Logger.Error(ex)
Return New DbConfig()
End Try
End Function
End Class

View File

@@ -0,0 +1,11 @@
Public Class DbConfig
Public Property ExternalProgramName As String = "signFLOW"
Public Property DocumentPathOrigin As String = ""
Public Property DocumentPath As String = ""
Public Property ExportPath As String = ""
Public Property SendingProfile As Integer = 0
Public Property SignatureHost As String = ""
Public Property Default_TFA_Enabled As Boolean = False
Public Property Default_TFA_WithPhone As Boolean = False
End Class

View File

@@ -0,0 +1,137 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Domain.Entities
Public Class DocumentModel
Inherits BaseModel
Private ElementModel As ElementModel
Public Sub New(pState As State)
MyBase.New(pState)
ElementModel = New ElementModel(pState)
End Sub
Private Function ToDocument(pRow As DataRow) As EnvelopeDocument
Return ToDocument(pRow, 0)
End Function
Private Function ToDocument(pRow As DataRow, pReceiverId As Integer) As EnvelopeDocument
Dim oDocumentId = pRow.ItemEx("GUID", 0)
Dim byteDataObj = pRow.Item("BYTE_DATA")
Return New EnvelopeDocument() With {
.Id = oDocumentId,
.EnvelopeId = pRow.ItemEx("ENVELOPE_ID", 0),
.Filename = pRow.ItemEx("FILENAME", ""),
.Filepath = pRow.ItemEx("FILEPATH", ""),
.FileNameOriginal = pRow.ItemEx("FILENAME_ORIGINAL", ""),
.IsTempFile = False,
.Elements = ElementModel.List(oDocumentId, pReceiverId),
.ByteData = If(byteDataObj Is DBNull.Value, Nothing, DirectCast(byteDataObj, Byte()))
}
End Function
Public Function GetById(pDocumentId As Integer) As EnvelopeDocument
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE_DOCUMENT] WHERE GUID = {pDocumentId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(Function(row) ToDocument(row)).
Single()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function List(pEnvelopeId As Integer) As IEnumerable(Of EnvelopeDocument)
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE_DOCUMENT] WHERE ENVELOPE_ID = {pEnvelopeId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(Function(row) ToDocument(row)).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function List(pEnvelopeId As Integer, pReceiverId As Integer) As IEnumerable(Of EnvelopeDocument)
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE_DOCUMENT] WHERE ENVELOPE_ID = {pEnvelopeId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(Function(row) ToDocument(row, pReceiverId)).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function Insert(pEnvelope As Envelope, pDocument As EnvelopeDocument, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_DOCUMENT]
([FILENAME]
,[FILENAME_ORIGINAL]
,[FILEPATH]
,[ENVELOPE_ID]
,[BYTE_DATA])
VALUES
(@FILENAME
,@FILENAME_ORIGINAL
,@FILEPATH
,@ENVELOPE_ID
,@BYTE_DATA)"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("FILENAME", SqlDbType.NVarChar).Value = pDocument.Filename
oCommand.Parameters.Add("FILENAME_ORIGINAL", SqlDbType.NVarChar).Value = pDocument.FileNameOriginal
oCommand.Parameters.Add("FILEPATH", SqlDbType.NVarChar).Value = pDocument.Filepath
oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pEnvelope.Id
oCommand.Parameters.Add(New SqlParameter("@BYTE_DATA", DirectCast(pDocument.ByteData, Object)))
If Database.ExecuteNonQuery(oCommand, pTransaction) Then
pDocument.EnvelopeId = pEnvelope.Id
pDocument.Id = GetDocumentId(pDocument.Filename, pEnvelope, pTransaction)
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Delete(pDocumentId As Integer, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = "DELETE FROM [dbo].[TBSIG_ENVELOPE_DOCUMENT] WHERE GUID = @GUID"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("GUID", SqlDbType.Int).Value = pDocumentId
Return Database.ExecuteNonQuery(oCommand, pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Function GetDocumentId(pFilename As String, pEnvelope As Envelope, pTransaction As SqlTransaction) As Integer
Try
Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_ENVELOPE_DOCUMENT WHERE FILENAME = '{pFilename}' AND ENVELOPE_ID = {pEnvelope.Id}", pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,90 @@
Imports System.Data.SqlClient
Imports EnvelopeGenerator.Domain.Entities
Public Class DocumentStatusModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Public Function InsertOrUpdate(pDocumentStatus As DocumentStatus) As Boolean
If pDocumentStatus.Id = 0 Then
Return Insert(pDocumentStatus)
Else
Return Update(pDocumentStatus)
End If
End Function
Public Function Insert(pDocumentStatus As DocumentStatus) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBSIG_DOCUMENT_STATUS]
([ENVELOPE_ID]
,[RECEIVER_ID]
,[STATUS]
,[STATUS_CHANGED_WHEN]
,[VALUE])
VALUES
(@ENVELOPE_ID
,@RECEIVER_ID
,@STATUS
,@STATUS_CHANGED_WHEN
,@VALUE)"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pDocumentStatus.EnvelopeId
oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.Int).Value = pDocumentStatus.ReceiverId
oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pDocumentStatus.Status
oCommand.Parameters.Add("STATUS_CHANGED_WHEN", SqlDbType.DateTime).Value = Now()
oCommand.Parameters.Add("VALUE", SqlDbType.NVarChar).Value = pDocumentStatus.Value
If Database.ExecuteNonQuery(oCommand) Then
pDocumentStatus.Id = GetElementId(pDocumentStatus)
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Update(pDocumentStatus As DocumentStatus) As Boolean
Try
Dim oSql = "UPDATE [dbo].[TBSIG_DOCUMENT_STATUS]
SET [STATUS] = @STATUS
,[STATUS_CHANGED_WHEN] = @STATUS_CHANGED_WHEN
,[CHANGED_WHEN] = @CHANGED_WHEN
,[VALUE] = @VALUE
WHERE GUID = @GUID"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("GUID", SqlDbType.Int).Value = pDocumentStatus.Id
oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pDocumentStatus.Status
oCommand.Parameters.Add("STATUS_CHANGED_WHEN", SqlDbType.DateTime).Value = Now()
oCommand.Parameters.Add("CHANGED_WHEN", SqlDbType.DateTime).Value = Now()
oCommand.Parameters.Add("VALUE", SqlDbType.NVarChar).Value = pDocumentStatus.Value
If Database.ExecuteNonQuery(oCommand) Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Function GetElementId(pDocument As DocumentStatus) As Integer
Try
Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_DOCUMENT_STATUS
WHERE ENVELOPE_ID = {pDocument.EnvelopeId} AND RECEIVER_ID = {pDocument.ReceiverId}")
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,231 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Domain
Imports EnvelopeGenerator.Domain.Entities
Public Class ElementModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Private Function ToElement(pRow As DataRow) As DocumentReceiverElement
Return New DocumentReceiverElement() With {
.Id = pRow.ItemEx("GUID", 0),
.DocumentId = pRow.ItemEx("DOCUMENT_ID", 0),
.ReceiverId = pRow.ItemEx("RECEIVER_ID", 0),
.ElementType = [Enum].Parse(GetType(Constants.ElementType), pRow.ItemEx("ELEMENT_TYPE", Constants.ElementType.Signature)),
.X = pRow.ItemEx("POSITION_X", 0.0),
.Y = pRow.ItemEx("POSITION_Y", 0.0),
.Width = pRow.ItemEx("WIDTH", 0.0),
.Height = pRow.ItemEx("HEIGHT", 0.0),
.Page = pRow.ItemEx("PAGE", 0)
}
End Function
Private Function ToElements(pTable As DataTable) As List(Of DocumentReceiverElement)
Return pTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToElement).
ToList()
End Function
Public Function ElementsExist(pEnvelopeId As Integer, pReceiverId As Integer) As Boolean
Try
Dim oSql = $"SELECT COUNT(*) FROM [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] T
JOIN TBSIG_ENVELOPE_DOCUMENT T2 ON T.DOCUMENT_ID = T2.GUID
WHERE T.RECEIVER_ID = {pReceiverId} AND T2.ENVELOPE_ID = {pEnvelopeId}"
Dim oElementCount As Integer = Database.GetScalarValue(oSql)
Return oElementCount > 0
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function OneElementPerReceiverExist(pEnvelopeId As Integer) As Boolean
Try
Dim oSql = "SELECT COUNT(*) FROM ("
oSql += " SELECT DISTINCT RECEIVER_ID FROM [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] T"
oSql += " JOIN TBSIG_ENVELOPE_DOCUMENT T2 ON T.DOCUMENT_ID = T2.GUID"
oSql += $" WHERE T2.ENVELOPE_ID = {pEnvelopeId}"
oSql += " ) TMAX"
Dim oElementReceiverCount As Integer = Database.GetScalarValue(oSql)
Dim oSql2 = $"SELECT COUNT(*) FROM TBSIG_ENVELOPE_RECEIVER WHERE ENVELOPE_ID = {pEnvelopeId}"
Dim oEnvelopeReceiverCount As Integer = Database.GetScalarValue(oSql2)
Return oElementReceiverCount = oEnvelopeReceiverCount
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function ElementsExist(pEnvelopeId As Integer) As Boolean
Try
Dim oSql = $"SELECT COUNT(*) FROM [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] T
JOIN TBSIG_ENVELOPE_DOCUMENT T2 ON T.DOCUMENT_ID = T2.GUID
WHERE T2.ENVELOPE_ID = {pEnvelopeId}"
Dim oElementCount As Integer = Database.GetScalarValue(oSql)
Return oElementCount > 0
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function List(pDocumentId As Integer) As List(Of DocumentReceiverElement)
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] WHERE DOCUMENT_ID = {pDocumentId} ORDER BY PAGE ASC"
Dim oTable = Database.GetDatatable(oSql)
Return ToElements(oTable)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function List(pDocumentId As Integer, pReceiverId As Integer) As List(Of DocumentReceiverElement)
Try
Dim oReceiverConstraint = ""
If pReceiverId > 0 Then
oReceiverConstraint = $"AND RECEIVER_ID = {pReceiverId}"
End If
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] WHERE DOCUMENT_ID = {pDocumentId} {oReceiverConstraint} ORDER BY PAGE ASC"
Dim oTable = Database.GetDatatable(oSql)
Return ToElements(oTable)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function Insert(pElement As DocumentReceiverElement) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT]
([DOCUMENT_ID]
,[RECEIVER_ID]
,[ELEMENT_TYPE]
,[POSITION_X]
,[POSITION_Y]
,[WIDTH]
,[HEIGHT]
,[REQUIRED]
,[READ_ONLY]
,[PAGE])
VALUES
(@DOCUMENT_ID
,@RECEIVER_ID
,@ELEMENT_TYPE
,@POSITION_X
,@POSITION_Y
,@WIDTH
,@HEIGHT
,@REQUIRED
,@READ_ONLY
,@PAGE)"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("DOCUMENT_ID", SqlDbType.NVarChar).Value = pElement.DocumentId
oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.NVarChar).Value = pElement.ReceiverId
oCommand.Parameters.Add("ELEMENT_TYPE", SqlDbType.Int).Value = pElement.ElementType
oCommand.Parameters.Add("POSITION_X", SqlDbType.Float).Value = pElement.X
oCommand.Parameters.Add("POSITION_Y", SqlDbType.Float).Value = pElement.Y
oCommand.Parameters.Add("WIDTH", SqlDbType.Float).Value = pElement.Width
oCommand.Parameters.Add("HEIGHT", SqlDbType.Float).Value = pElement.Height
oCommand.Parameters.Add("REQUIRED", SqlDbType.Bit).Value = pElement.Required
oCommand.Parameters.Add("READ_ONLY", SqlDbType.Bit).Value = pElement.ReadOnly
oCommand.Parameters.Add("PAGE", SqlDbType.Int).Value = pElement.Page
If Database.ExecuteNonQuery(oCommand) Then
pElement.Id = GetElementId(pElement)
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Update(pElement As DocumentReceiverElement) As Boolean
Try
Dim oSql = "UPDATE [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT]
SET [POSITION_X] = @POSITION_X
,[POSITION_Y] = @POSITION_Y
,[WIDTH] = @WIDTH
,[HEIGHT] = @HEIGHT
WHERE GUID = @GUID"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("GUID", SqlDbType.NVarChar).Value = pElement.Id
oCommand.Parameters.Add("POSITION_X", SqlDbType.Float).Value = pElement.X
oCommand.Parameters.Add("POSITION_Y", SqlDbType.Float).Value = pElement.Y
oCommand.Parameters.Add("WIDTH", SqlDbType.Float).Value = pElement.Width
oCommand.Parameters.Add("HEIGHT", SqlDbType.Float).Value = pElement.Height
Return Database.ExecuteNonQuery(oCommand)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Function GetElementId(pElement As DocumentReceiverElement) As Integer
Try
Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_DOCUMENT_RECEIVER_ELEMENT
WHERE DOCUMENT_ID = {pElement.DocumentId} AND RECEIVER_ID = {pElement.ReceiverId}")
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function DeleteElement(pElement As DocumentReceiverElement) As Boolean
Try
Dim oSql = $"DELETE FROM TBSIG_DOCUMENT_RECEIVER_ELEMENT WHERE GUID = {pElement.Id}"
Return Database.ExecuteNonQuery(oSql)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function DeleteElements(pReceiverId As Integer, pDocumentId As Integer, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = $"DELETE FROM TBSIG_DOCUMENT_RECEIVER_ELEMENT WHERE RECEIVER_ID = {pReceiverId} AND DOCUMENT_ID = {pDocumentId}"
Return Database.ExecuteNonQuery(oSql, pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function DeleteElements(pDocumentId As Integer, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = $"DELETE FROM TBSIG_DOCUMENT_RECEIVER_ELEMENT WHERE DOCUMENT_ID = {pDocumentId}"
Return Database.ExecuteNonQuery(oSql, pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,13 @@
Imports EnvelopeGenerator.Domain
<Obsolete("Tabelle TBSIG_ELEMENT_STATUS entfernt")>
Public Class ElementStatus
Public Property Id As Integer
Public Property EnvelopeId As Integer
Public Property ElementId As Integer
Public Property ElementValue As String
Public Property Status As Constants.ElementStatus = Constants.ElementStatus.Created
Public Property StatusChangedWhen As Date
End Class

View File

@@ -0,0 +1,85 @@
Imports System.Data.SqlClient
<Obsolete("Tabelle TBSIG_ELEMENT_STATUS entfernt")>
Public Class ElementStatusModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
<Obsolete("Tabelle TBSIG_ELEMENT_STATUS entfernt")>
Public Function Insert(pElementStatus As ElementStatus) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBSIG_ELEMENT_STATUS]
([ENVELOPE_ID]
,[RECEIVER_ELEMENT_ID]
,[STATUS]
,[STATUS_CHANGED_WHEN]
,[VALUE])
VALUES
(@ENVELOPE_ID
,@ELEMENT_ID
,@STATUS
,@STATUS_CHANGED_WHEN
,@VALUE)"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pElementStatus.EnvelopeId
oCommand.Parameters.Add("ELEMENT_ID", SqlDbType.Int).Value = pElementStatus.ElementId
oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pElementStatus.Status
oCommand.Parameters.Add("STATUS_CHANGED_WHEN", SqlDbType.DateTime).Value = Now()
oCommand.Parameters.Add("VALUE", SqlDbType.NVarChar).Value = pElementStatus.ElementValue
If Database.ExecuteNonQuery(oCommand) Then
pElementStatus.Id = GetElementId(pElementStatus)
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
<Obsolete("Tabelle TBSIG_ELEMENT_STATUS entfernt")>
Public Function Update(pElementStatus As ElementStatus) As Boolean
Try
Dim oSql = "UPDATE [dbo].[TBSIG_ELEMENT_STATUS]
SET [STATUS] = @STATUS
,[STATUS_CHANGED_WHEN] = @STATUS_CHANGED_WHEN
,[CHANGED_WHEN] = @CHANGED_WHEN
,[VALUE] = @VALUE
WHERE GUID = @GUID"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("GUID", SqlDbType.Int).Value = pElementStatus.Id
oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pElementStatus.Status
oCommand.Parameters.Add("STATUS_CHANGED_WHEN", SqlDbType.DateTime).Value = Now()
oCommand.Parameters.Add("CHANGED_WHEN", SqlDbType.DateTime).Value = Now()
oCommand.Parameters.Add("VALUE", SqlDbType.NVarChar).Value = pElementStatus.ElementValue
If Database.ExecuteNonQuery(oCommand) Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
<Obsolete("Tabelle TBSIG_ELEMENT_STATUS entfernt")>
Private Function GetElementId(pElement As ElementStatus) As Integer
Try
Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_ELEMENT_STATUS
WHERE ENVELOPE_ID = {pElement.EnvelopeId} AND RECEIVER_ELEMENT_ID = {pElement.ElementId}")
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,82 @@
Imports EnvelopeGenerator.Domain
Imports EnvelopeGenerator.Domain.Entities
Public Class EmailData
Public Property EmailAdress As String = ""
Public Property EmailSubject As String = ""
Public Property EmailBody As String = ""
Public Property EmailType As Constants.EnvelopeStatus = Constants.EnvelopeStatus.Invalid
Public Property ReferenceID As Integer = 0
Public Property ReferenceString As String = ""
Public Property ReceiverAccessCode As String = ""
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 = ""
Public Property EnvelopeTitle As String = ""
Public Property EmailAttachment As String = ""
Public Property ATT1_RELATED_ID As Long
Public Property ATT1_REL_TYPE As String = ""
Public Property ADDED_WHO_PROCESS As String = "DDEnvelopGenerator"
''' <summary>
''' Constructor for sending email to receiver
''' </summary>
''' <param name="pEnvelope"></param>
''' <param name="pReceiver"></param>
''' <param name="pStatus"></param>
Public Sub New(pEnvelope As Entities.Envelope, pReceiver As Receiver, pStatus As Constants.EnvelopeStatus)
EmailAdress = pReceiver.EmailAddress
EmailSubject = String.Empty
EmailType = pStatus
Message = TextToHtml(pEnvelope.Message)
ReferenceID = pEnvelope.Id
ReferenceString = pEnvelope.Uuid
ReceiverName = pReceiver.Name
ReceiverAccessCode = pReceiver.AccessCode
SenderAdress = pEnvelope.User.Email
SenderName = pEnvelope.User.FullName
EnvelopeTitle = pEnvelope.Title
End Sub
Public Function TextToHtml(input As String) As String
If String.IsNullOrEmpty(input) Then Return ""
' HTML-Encodierung der Sonderzeichen
Dim encoded As String = System.Net.WebUtility.HtmlEncode(input)
' Tabs in &nbsp; umwandeln (z.B. 4 non-breaking spaces)
encoded = encoded.Replace(vbTab, "&nbsp;&nbsp;&nbsp;&nbsp;")
' Zeilenumbrüche in <br /> umwandeln
encoded = encoded.Replace(vbCrLf, "<br />") ' Windows
encoded = encoded.Replace(vbCr, "<br />") ' Mac alt
encoded = encoded.Replace(vbLf, "<br />") ' Unix/Linux
Return encoded
End Function
''' <summary>
''' Constructor for sending email to creator
''' </summary>
''' <param name="pEnvelope"></param>
''' <param name="pStatus"></param>
Public Sub New(pEnvelope As Entities.Envelope, pStatus As Constants.EnvelopeStatus)
EmailAdress = pEnvelope.User.Email
EmailSubject = String.Empty
EmailType = pStatus
Message = pEnvelope.Message
ReferenceID = pEnvelope.Id
ReferenceString = pEnvelope.Uuid
ReceiverName = pEnvelope.User.FullName
ReceiverAccessCode = String.Empty
SenderAdress = pEnvelope.User.Email
SenderName = pEnvelope.User.FullName
EnvelopeTitle = pEnvelope.Title
End Sub
End Class

View File

@@ -0,0 +1,42 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Public Class EmailModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Public Function Insert(pEmail As EmailData) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] "
oSql += " (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID,ATT1_RELATED_ID,ATT1_REL_TYPE) "
oSql += " VALUES (@EMAIL_ADRESS, @EMAIL_SUBJ, @EMAIL_BODY, @ADDED_WHO, @SENDING_PROFILE, @REFERENCE_ID, @REFERENCE_STRING, @REMINDER_TYPE_ID, @WF_ID,@ATT1_RELATED_ID,@ATT1_REL_TYPE)"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("EMAIL_ADRESS", SqlDbType.NVarChar).Value = pEmail.EmailAdress
oCommand.Parameters.Add("EMAIL_SUBJ", SqlDbType.NVarChar).Value = pEmail.EmailSubject
oCommand.Parameters.Add("EMAIL_BODY", SqlDbType.NVarChar).Value = pEmail.EmailBody
oCommand.Parameters.Add("ADDED_WHO", SqlDbType.NVarChar).Value = pEmail.ADDED_WHO_PROCESS
oCommand.Parameters.Add("SENDING_PROFILE", SqlDbType.Int).Value = State.DbConfig.SendingProfile
oCommand.Parameters.Add("REFERENCE_ID", SqlDbType.Int).Value = pEmail.ReferenceID
oCommand.Parameters.Add("REFERENCE_STRING", SqlDbType.NVarChar).Value = pEmail.ReferenceString
oCommand.Parameters.Add("REMINDER_TYPE_ID", SqlDbType.Int).Value = 202377
'oCommand.Parameters.Add("EMAIL_ATTMT1", SqlDbType.NVarChar).Value = pEmail.EmailAttachment
oCommand.Parameters.Add("WF_ID", SqlDbType.Int).Value = pEmail.EmailType ' Wegen DB-Trigger MUSS dieser Wert gesetzt werden
oCommand.Parameters.Add("ATT1_RELATED_ID", SqlDbType.Int).Value = pEmail.ATT1_RELATED_ID
oCommand.Parameters.Add("ATT1_REL_TYPE", SqlDbType.NVarChar).Value = pEmail.ATT1_REL_TYPE
If Database.ExecuteNonQuery(oCommand) Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,32 @@
Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Domain.Constants
Imports EnvelopeGenerator.Domain.Entities
Public Class EmailTemplateModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Private Function ToEmailTemplate(pRow As DataRow) As EmailTemplate
Return New EmailTemplate() With {
.Id = pRow.ItemEx("GUID", 0),
.Name = pRow.ItemEx("NAME", ""),
.Body = pRow.ItemEx("BODY", ""),
.Subject = pRow.ItemEx("SUBJECT", "")
}
End Function
Public Function GetById(pEmailTemplateName As EmailTemplateType) As EmailTemplate
Dim oSql As String = $"SELECT * FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = '{pEmailTemplateName}'"
Dim oTable As DataTable = Database.GetDatatable(oSql)
If oTable.Rows.Count = 0 Then
Return Nothing
End If
Dim oRow = oTable.Rows.Item(0)
Return ToEmailTemplate(oRow)
End Function
End Class

View File

@@ -0,0 +1,257 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports EnvelopeGenerator.Domain.Constants
Imports EnvelopeGenerator.Domain.Entities
Public Class EnvelopeModel
Inherits BaseModel
Private ReadOnly UserModel As UserModel
Private ReadOnly ReceiverModel As ReceiverModel
Private ReadOnly HistoryModel As HistoryModel
Private ReadOnly DocumentModel As DocumentModel
Private ReadOnly EnvelopeTypeModel As EnvelopeTypeModel
Public Sub New(pState As State)
MyBase.New(pState)
UserModel = New UserModel(pState)
ReceiverModel = New ReceiverModel(pState)
DocumentModel = New DocumentModel(pState)
HistoryModel = New HistoryModel(pState)
EnvelopeTypeModel = New EnvelopeTypeModel(pState)
End Sub
Private Function ToEnvelope(pRow As DataRow) As Envelope
Dim oEnvelope = New Envelope() With {
.Id = pRow.ItemEx("GUID", 0),
.Title = pRow.ItemEx("TITLE", ""),
.EnvelopeTypeId = pRow.ItemEx("ENVELOPE_TYPE", 0),
.ContractType = pRow.ItemEx("CONTRACT_TYPE", 0),
.Uuid = pRow.ItemEx("ENVELOPE_UUID", ""),
.Message = pRow.ItemEx("MESSAGE", ""),
.UserId = pRow.ItemEx("USER_ID", 0),
.Language = pRow.ItemEx("LANGUAGE", "de-DE"),
.Status = ObjectEx.ToEnum(Of EnvelopeStatus)(pRow.ItemEx("STATUS", EnvelopeStatus.EnvelopeCreated.ToString())),
.AddedWhen = pRow.Item("ADDED_WHEN"),
.ChangedWhen = pRow.ItemEx(Of Date)("CHANGED_WHEN", Nothing),
.CertificationType = ObjectEx.ToEnum(Of CertificationType)(pRow.ItemEx("CERTIFICATION_TYPE", CertificationType.AdvancedElectronicSignature.ToString())),
.User = New User(),
.ExpiresWhen = pRow.ItemEx(Of Date)("EXPIRES_WHEN", Nothing),
.ExpiresWarningWhen = pRow.ItemEx(Of Date)("EXPIRES_WARNING_WHEN", Nothing),
.ExpiresWhenDays = pRow.ItemEx("EXPIRES_WHEN_DAYS", 0),
.ExpiresWarningWhenDays = pRow.ItemEx("EXPIRES_WARNING_WHEN_DAYS", 0),
.SendReminderEmails = pRow.ItemEx("SEND_REMINDER_EMAILS", False),
.FirstReminderDays = pRow.ItemEx("FIRST_REMINDER_DAYS", 0),
.ReminderIntervalDays = pRow.ItemEx("REMINDER_INTERVAL_DAYS", 0),
.UseAccessCode = pRow.ItemEx("USE_ACCESS_CODE", False),
.FinalEmailToCreator = ObjectEx.ToEnum(Of FinalEmailType)(pRow.ItemEx("FINAL_EMAIL_TO_CREATOR", FinalEmailType.No.ToString())),
.FinalEmailToReceivers = ObjectEx.ToEnum(Of FinalEmailType)(pRow.ItemEx("FINAL_EMAIL_TO_RECEIVERS", FinalEmailType.No.ToString())),
.TFA_Enabled = pRow.ItemEx("TFA_Enabled", False)
}
Dim oDOC_RESULT = pRow.Item("DOC_RESULT")
If Not IsDBNull(oDOC_RESULT) Then
Dim oByte As Byte() = DirectCast(pRow.Item("DOC_RESULT"), Byte())
If Not IsNothing(oByte) Then
oEnvelope.DOC_RESULT = oByte
End If
Else
oEnvelope.DOC_RESULT = Nothing
End If
oEnvelope.User = UserModel.SelectUser(oEnvelope.UserId)
oEnvelope.Receivers = ReceiverModel.ListEnvelopeReceivers(oEnvelope.Id)
oEnvelope.Documents = DocumentModel.List(oEnvelope.Id)
oEnvelope.History = HistoryModel.List(oEnvelope.Id)
oEnvelope.EnvelopeType = EnvelopeTypeModel.GetById(oEnvelope.EnvelopeTypeId)
Return oEnvelope
End Function
Private Function ToEnvelope(pTable As DataTable) As Envelope
Return pTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToEnvelope).
Single()
End Function
Public Function GetByUuid(pEnvelopeUuid As String) As Envelope
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE ENVELOPE_UUID = '{pEnvelopeUuid}'"
Dim oTable = Database.GetDatatable(oSql)
Return ToEnvelope(oTable)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function GetById(pEnvelopeId As Integer) As Envelope
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE GUID = {pEnvelopeId}"
Dim oTable = Database.GetDatatable(oSql)
Return ToEnvelope(oTable)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function List() As IEnumerable(Of Envelope)
Try
Dim oSql = $"EXEC [dbo].[PRSIG_GET_ENVELOPES_FOR_USER] {State.UserId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToEnvelope).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function ListCompleted() As IEnumerable(Of Envelope)
Try
Dim oSql = $"EXEC [dbo].[PRSIG_GET_CLOSED_ENVELOPES_FOR_USER] {State.UserId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToEnvelope).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function List(pReceiverId As Integer) As IEnumerable(Of Envelope)
Try
Dim oSql = $"SELECT T.* FROM [dbo].[TBSIG_ENVELOPE] T
JOIN TBSIG_ENVELOPE_RECEIVER T2 ON T.GUID = T2.ENVELOPE_ID
WHERE T2.RECEIVER_ID = {pReceiverId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToEnvelope).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function Insert(pEnvelope As Envelope) As Boolean
Try
Dim oSql = $"INSERT INTO [dbo].[TBSIG_ENVELOPE] (MESSAGE, ENVELOPE_UUID, STATUS, USER_ID)
VALUES('',
'{pEnvelope.Uuid}',
'{CInt([Enum].Parse(GetType(EnvelopeStatus), EnvelopeStatus.EnvelopeCreated))}',
'{pEnvelope.UserId}')"
Dim oCommand As New SqlCommand(oSql)
'oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = String.Empty
'oCommand.Parameters.Add("UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid
'oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = Constants.EnvelopeStatus.EnvelopeCreated
'oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId
If Database.ExecuteNonQuery(oCommand) Then
pEnvelope.Id = GetEnvelopeId(pEnvelope)
SetEnvelopeDate(pEnvelope)
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Update(pEnvelope As Envelope, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = "UPDATE [dbo].[TBSIG_ENVELOPE] SET "
oSql += " [MESSAGE] = @MESSAGE, "
oSql += " [STATUS] = @STATUS, "
oSql += " [TITLE] = @TITLE, "
oSql += " [ENVELOPE_TYPE] = @ENVELOPE_TYPE, "
oSql += " [CONTRACT_TYPE] = @CONTRACT_TYPE, "
oSql += " [LANGUAGE] = @LANGUAGE, "
oSql += " [CERTIFICATION_TYPE] = @CERTIFICATION_TYPE, "
oSql += " [EXPIRES_WHEN_DAYS] = @EXPIRES_WHEN_DAYS, "
oSql += " [EXPIRES_WARNING_WHEN_DAYS] = @EXPIRES_WARNING_WHEN_DAYS, "
oSql += " [FIRST_REMINDER_DAYS] = @FIRST_REMINDER_DAYS, "
oSql += " [FINAL_EMAIL_TO_CREATOR] = @FINAL_EMAIL_TO_CREATOR, "
oSql += " [FINAL_EMAIL_TO_RECEIVERS] = @FINAL_EMAIL_TO_RECEIVERS, "
oSql += " [REMINDER_INTERVAL_DAYS] = @REMINDER_INTERVAL_DAYS, "
oSql += " [SEND_REMINDER_EMAILS] = @SEND_REMINDER_EMAILS, "
oSql += " [USE_ACCESS_CODE] = @USE_ACCESS_CODE, "
oSql += " [CHANGED_WHEN] = GETDATE(), "
oSql += " [TFA_Enabled] = @TFA_Enabled"
oSql += " WHERE GUID = @ID AND USER_ID = @USER_ID"
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("ID", SqlDbType.Int).Value = pEnvelope.Id
oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId
oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = pEnvelope.Message
oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pEnvelope.Status
oCommand.Parameters.Add("TITLE", SqlDbType.NVarChar).Value = pEnvelope.Title
oCommand.Parameters.Add("ENVELOPE_TYPE", SqlDbType.Int).Value = pEnvelope.EnvelopeTypeId
oCommand.Parameters.Add("CONTRACT_TYPE", SqlDbType.Int).Value = pEnvelope.ContractType
If IsNothing(pEnvelope.Language) Then
pEnvelope.Language = "de-DE"
End If
oCommand.Parameters.Add("LANGUAGE", SqlDbType.NVarChar).Value = pEnvelope.Language
oCommand.Parameters.Add("CERTIFICATION_TYPE", SqlDbType.Int).Value = pEnvelope.CertificationType
oCommand.Parameters.Add("EXPIRES_WHEN_DAYS", SqlDbType.Int).Value = pEnvelope.ExpiresWhenDays
oCommand.Parameters.Add("EXPIRES_WARNING_WHEN_DAYS", SqlDbType.Int).Value = pEnvelope.ExpiresWarningWhenDays
oCommand.Parameters.Add("FIRST_REMINDER_DAYS", SqlDbType.Int).Value = pEnvelope.FirstReminderDays
oCommand.Parameters.Add("FINAL_EMAIL_TO_CREATOR", SqlDbType.Int).Value = pEnvelope.FinalEmailToCreator
oCommand.Parameters.Add("FINAL_EMAIL_TO_RECEIVERS", SqlDbType.Int).Value = pEnvelope.FinalEmailToReceivers
oCommand.Parameters.Add("REMINDER_INTERVAL_DAYS", SqlDbType.Int).Value = pEnvelope.ReminderIntervalDays
oCommand.Parameters.Add("SEND_REMINDER_EMAILS", SqlDbType.Bit).Value = pEnvelope.SendReminderEmails
oCommand.Parameters.Add("USE_ACCESS_CODE", SqlDbType.Bit).Value = pEnvelope.UseAccessCode
oCommand.Parameters.Add("TFA_ENABLED", SqlDbType.Bit).Value = pEnvelope.TFA_Enabled
Return Database.ExecuteNonQuery(oCommand, pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Delete(pEnvelope As Envelope, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = $"DELETE FROM [dbo].[TBSIG_ENVELOPE] WHERE GUID = {pEnvelope.Id}"
Return Database.ExecuteNonQuery(oSql, pTransaction)
Catch ex As Exception
Return False
Logger.Error(ex)
End Try
End Function
Private Function GetEnvelopeId(pEnvelope As Envelope) As Integer
Try
Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_ENVELOPE WHERE USER_ID = {pEnvelope.UserId}")
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Private Sub SetEnvelopeDate(pEnvelope As Envelope)
Try
Dim addedWhen As Date = Database.GetScalarValue($"SELECT ADDED_WHEN FROM TBSIG_ENVELOPE WHERE GUID = {pEnvelope.Id}")
pEnvelope.AddedWhen = addedWhen
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
End Class

View File

@@ -0,0 +1,51 @@
Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Domain.Entities
Public Class EnvelopeTypeModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Private Function ToEnvelopeType(pRow As DataRow) As EnvelopeType
Return New EnvelopeType() With {
.Id = pRow.ItemEx("GUID", 0),
.Title = pRow.ItemEx("TITLE", ""),
.UseAccessCode = pRow.ItemEx("USE_ACCESS_CODE", False),
.Language = pRow.ItemEx("LANGUAGE", "de"),
.ExpiresWhenDays = pRow.ItemEx("EXPIRES_DAYS", 0),
.ExpiresWarningWhenDays = pRow.ItemEx("EXPIRES_WARNING_DAYS", 0),
.SendReminderEmails = pRow.ItemEx("SEND_REMINDER_EMAILS", 0),
.FirstReminderDays = pRow.ItemEx("FIRST_REMINDER_DAYS", 0),
.ReminderIntervalDays = pRow.ItemEx("REMINDER_INTERVAL_DAYS", 0),
.FinalEmailToCreator = pRow.ItemEx("FINAL_EMAIL_TO_CREATOR", 0),
.FinalEmailToReceivers = pRow.ItemEx("FINAL_EMAIL_TO_RECEIVERS", 0),
.ContractType = pRow.ItemEx("CONTRACT_TYPE", 0),
.CertificationType = pRow.ItemEx("CERTIFICATION_TYPE", 0),
.TFA_Enabled = pRow.ItemEx("TFA_Enabled", 0)
}
End Function
Public Function GetById(pEnvelopeTypeId As Integer) As EnvelopeType
Dim oSql As String = $"SELECT * FROM TBSIG_ENVELOPE_TYPE WHERE GUID = {pEnvelopeTypeId}"
Dim oTable As DataTable = Database.GetDatatable(oSql)
If oTable.Rows.Count = 0 Then
Return Nothing
End If
Dim oRow = oTable.Rows.Item(0)
Return ToEnvelopeType(oRow)
End Function
Public Function List() As IEnumerable(Of EnvelopeType)
Dim oSql As String = $"SELECT * FROM TBSIG_ENVELOPE_TYPE"
Dim oTable As DataTable = Database.GetDatatable(oSql)
Return oTable.Rows.
Cast(Of DataRow).
Select(AddressOf ToEnvelopeType).
ToList()
End Function
End Class

View File

@@ -0,0 +1,72 @@
Imports System.Data.SqlClient
Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Domain.Entities
Public Class HistoryModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Private Function ToEnvelopeHistoryEntry(pRow As DataRow) As EnvelopeHistory
Return New EnvelopeHistory() With {
.ActionDate = pRow.ItemEx(Of Date)("ACTION_DATE", Nothing),
.EnvelopeId = pRow.Item("ENVELOPE_ID"),
.Status = pRow.Item("STATUS"),
.UserReference = pRow.ItemEx("USER_REFERENCE", "")
}
End Function
Public Function List(pEnvelopeId As Integer) As List(Of EnvelopeHistory)
Dim oSql = $"SELECT * FROM TBSIG_ENVELOPE_HISTORY WHERE ENVELOPE_ID = {pEnvelopeId} AND ACTION_DATE IS NOT NULL ORDER BY GUID DESC"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.
Cast(Of DataRow).
Select(AddressOf ToEnvelopeHistoryEntry).
ToList()
End Function
Public Function HasReceiverSigned(pEnvelopeId As Integer, pReceiverId As Integer) As Boolean
Dim oEnvelopeSigned As Integer = Domain.Constants.EnvelopeStatus.DocumentSigned
Dim oSql = $"SELECT COUNT(T.GUID)
FROM TBSIG_ENVELOPE_HISTORY T
JOIN TBSIG_RECEIVER T2 ON T.USER_REFERENCE = T2.EMAIL_ADDRESS
WHERE T.STATUS = {oEnvelopeSigned} AND
T.ENVELOPE_ID = {pEnvelopeId} AND
T2.GUID = {pReceiverId}"
Dim oRowCount As Integer = Database.GetScalarValue(oSql)
Return oRowCount > 0
End Function
Public Function Insert(pHistory As EnvelopeHistory) As Boolean
Try
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_HISTORY] "
oSql += " ([ENVELOPE_ID] "
oSql += " ,[USER_REFERENCE] "
oSql += " ,[STATUS] "
oSql += " ,[ACTION_DATE]) "
oSql += " VALUES "
oSql += " (@ENVELOPE_ID "
oSql += " ,@USER_REFERENCE "
oSql += " ,@STATUS "
oSql += " ,@ACTION_DATE) "
Dim oCommand As New SqlCommand(oSql)
oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pHistory.EnvelopeId
oCommand.Parameters.Add("USER_REFERENCE", SqlDbType.NVarChar).Value = pHistory.UserReference
oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pHistory.Status
oCommand.Parameters.Add("ACTION_DATE", SqlDbType.DateTime).Value = pHistory.ActionDate
If Database.ExecuteNonQuery(oCommand) Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,330 @@
Imports System.Data.SqlClient
Imports System.Net.Mail
Imports DevExpress.DataProcessing
Imports DigitalData.Modules.Base
Imports EnvelopeGenerator.Domain.Constants
Imports EnvelopeGenerator.Domain.Entities
Public Class ReceiverModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Private Function ToReceiver(pRow As DataRow, pColorIndex As Integer) As Receiver
Dim EmailAdress As String = pRow.ItemEx("EMAIL_ADDRESS", "")
Dim EnvelopeId As Integer = pRow.ItemEx("ENVELOPE_ID", 0)
Dim SignedDate As DateTime = DateTime.MinValue
Dim ReceiverSignedStatus As ReceiverStatus = ReceiverStatus.Unsigned
If String.IsNullOrEmpty(EmailAdress) = False Then
SignedDate = GetSignedDate(EmailAdress, EnvelopeId)
If SignedDate <> DateTime.MinValue Then
ReceiverSignedStatus = ReceiverStatus.Signed
End If
End If
Return New Receiver() With {
.Id = pRow.ItemEx("GUID", 0),
.EmailAddress = pRow.ItemEx("EMAIL_ADDRESS", ""),
.Name = pRow.ItemEx("NAME", ""),
.Sequence = pRow.ItemEx("SEQUENCE", 0),
.Signature = pRow.ItemEx("SIGNATURE", ""),
.Status = ReceiverSignedStatus,
.ColorType = DirectCast(pColorIndex + 1, ColorType),
.AccessCode = pRow.ItemEx("ACCESS_CODE", ""),
.SignedDate = SignedDate,
.PhoneNumber = pRow.ItemEx("PHONE_NUMBER", "")
}
End Function
Private Function ToReceiver(pTable As DataTable) As Receiver
Return pTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToReceiver).
Single()
End Function
Public Function TestReceiverExists(pReceiver As Receiver) As Boolean
Try
Dim oGuid = Database.GetScalarValue($"SELECT COALESCE(GUID, 0) FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = '{pReceiver.EmailAddress}'")
pReceiver.Id = oGuid
Return oGuid > 0
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Insert(pReceiver As Receiver, pTransaction As SqlTransaction) As Boolean
Try
Dim oSignature As String = pReceiver.GetSignature()
Dim oCheck = $"SELECT COUNT(GUID) FROM [dbo].[TBSIG_RECEIVER] WHERE SIGNATURE = '{oSignature}'"
Dim oExists = Database.GetScalarValue(oCheck)
If oExists = 0 Then
Dim oSql As String = $"INSERT INTO [dbo].[TBSIG_RECEIVER]
([EMAIL_ADDRESS]
,[SIGNATURE])
VALUES
('{pReceiver.EmailAddress}'
,'{pReceiver.GetSignature()}')"
Dim oCommand = New SqlCommand(oSql)
Dim oResult = Database.ExecuteNonQuery(oCommand)
If oResult = True Then
pReceiver.Id = GetReceiverIdByEmail(pReceiver.EmailAddress, pTransaction)
Return True
Else
Return False
End If
Else
Logger.Warn($"Receiver [{pReceiver.EmailAddress}] already existing! SignatureID: {oSignature} Check SQL {oCheck}")
Return True
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Update(pReceiver As Receiver, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql As String = $"UPDATE [dbo].[TBSIG_USER_RECEIVER]
SET [NAME] = '{pReceiver.Name}'
,[COMPANY_NAME] = '{pReceiver.Company}'
,[JOB_TITLE] = '{pReceiver.JobTitle}'
WHERE RECEIVER_ID = {pReceiver.Id}"
Dim oCommand = New SqlCommand(oSql)
'oCommand.Parameters.Add("NAME", SqlDbType.NVarChar).Value = pReceiver.Name
'oCommand.Parameters.Add("COMPANY", SqlDbType.NVarChar).Value = pReceiver.Company
'oCommand.Parameters.Add("JOB", SqlDbType.NVarChar).Value = pReceiver.JobTitle
'oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.Int).Value = pReceiver.Id
'oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pReceiver.Id
Return Database.ExecuteNonQuery(oCommand, pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Unassign(pEnvelope As Envelope, pTransaction As SqlTransaction) As Boolean
Try
Return Database.ExecuteNonQuery($"DELETE FROM [dbo].[TBSIG_ENVELOPE_RECEIVER] WHERE [ENVELOPE_ID] = {pEnvelope.Id}", pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Assign(pEnvelope As Envelope, pReceiver As Receiver, pTransaction As SqlTransaction) As Boolean
Dim oSql = $"INSERT INTO [dbo].[TBSIG_ENVELOPE_RECEIVER]
([ENVELOPE_ID]
,[RECEIVER_ID]
,[PRIVATE_MESSAGE]
,[ACCESS_CODE]
,[NAME]
,[JOB_TITLE]
,[COMPANY_NAME]
,[SEQUENCE]
,[PHONE_NUMBER])
VALUES
('{pEnvelope.Id}'
,'{pReceiver.Id}'
,'{pReceiver.PrivateMessage}'
,'{pReceiver.AccessCode}'
,'{pReceiver.Name}'
,'{pReceiver.JobTitle}'
,'{pReceiver.Company}'
,'{pReceiver.Sequence}'
,'{pReceiver.PhoneNumber}')"
Dim oCommand As New SqlCommand(oSql)
'oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.NVarChar).Value = pEnvelope.Id
'oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.NVarChar).Value = pReceiver.Id
'oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = pReceiver.PrivateMessage
'oCommand.Parameters.Add("ACCESS_CODE", SqlDbType.NVarChar).Value = pReceiver.AccessCode
'oCommand.Parameters.Add("NAME", SqlDbType.NVarChar).Value = pReceiver.Name
'oCommand.Parameters.Add("JOB", SqlDbType.NVarChar).Value = pReceiver.JobTitle
'oCommand.Parameters.Add("COMPANY", SqlDbType.NVarChar).Value = pReceiver.Company
'oCommand.Parameters.Add("SEQUENCE", SqlDbType.NVarChar).Value = pReceiver.Sequence
Return Database.ExecuteNonQuery(oCommand, pTransaction)
End Function
Public Function ListEnvelopeReceivers(pEnvelopeId As Integer) As IEnumerable(Of Receiver)
Try
Dim oSql = $"SELECT * FROM [dbo].[VWSIG_ENVELOPE_RECEIVERS] WHERE ENVELOPE_ID = {pEnvelopeId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToReceiver).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function ListAllEnvelopeReceiverAddresses(pUserId As Integer) As IEnumerable(Of String)
Try
Dim oSql = $"SELECT DISTINCT T.EMAIL_ADDRESS FROM TBSIG_RECEIVER T
JOIN TBSIG_ENVELOPE_RECEIVER T2 ON T.GUID = T2.RECEIVER_ID
JOIN TBSIG_ENVELOPE T3 ON T2.ENVELOPE_ID = T3.GUID
WHERE T3.USER_ID = {pUserId}"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(Function(r) r.Item("EMAIL_ADDRESS")).
Cast(Of String).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return New List(Of String)
End Try
End Function
Public Function ListReceivers() As IEnumerable(Of Receiver)
Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_RECEIVER]"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToReceiver).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function ListReceivers(pReceiversFromGrid As List(Of Receiver)) As IEnumerable(Of Receiver)
Try
If pReceiversFromGrid.Count = 0 Then
Return New List(Of Receiver)
End If
Dim oAddresses = pReceiversFromGrid.Select(Function(r) $"'{r.EmailAddress}'").JoinToString(",")
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_RECEIVER] WHERE EMAIL_ADDRESS IN ({oAddresses})"
Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow).
Select(AddressOf ToReceiver).
ToList()
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function Delete(pReceiverId As Integer, pEnvelopeId As Integer, pTransaction As SqlTransaction) As Boolean
Try
Dim oSql = $"DELETE FROM TBSIG_ENVELOPE_RECEIVER WHERE RECEIVER_ID = {pReceiverId} AND ENVELOPE_ID = {pEnvelopeId}"
Return Database.ExecuteNonQuery(oSql, pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function GetById(pReceiverId As Integer) As Receiver
'Try
' Dim oSql = $"SELECT * FROM [dbo].[VWSIG_ENVELOPE_RECEIVERS] WHERE RECEIVER_ID = {pReceiverId}"
' Dim oTable = Database.GetDatatable(oSql)
' Return ToReceiver(oTable)
'Catch ex As Exception
' Logger.Error(ex)
' Return Nothing
'End Try
Return Nothing
End Function
Public Function GetReceiverIdBySignature(pSignature As String) As Integer
Try
Return Database.GetScalarValue($"SELECT GUID FROM TBSIG_RECEIVER WHERE SIGNATURE = '{pSignature}'")
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function GetLastUsedReceiverName(pEmailAddress As String, pUserId As Integer) As String
Try
Dim oSql As String
oSql = "SELECT TOP 1 [NAME] FROM dbo.VWSIG_ENVELOPE_RECEIVERS "
oSql += $" WHERE ENVELOPE_ID IN (SELECT GUID FROM dbo.TBSIG_ENVELOPE WHERE [USER_ID] = {pUserId}) "
oSql += $" AND EMAIL_ADDRESS = '{pEmailAddress}' "
oSql += " AND Len([NAME]) > 0 "
oSql += " ORDER BY [ADDED_WHEN] DESC"
Return Database.GetScalarValue(oSql)
Catch ex As Exception
Logger.Error(ex)
Return String.Empty
End Try
End Function
Public Function GetLastUsedReceiverPhone(pEmailAddress As String, pUserId As Integer) As String
Try
Dim oSql As String
oSql = "SELECT TOP 1 [PHONE_NUMBER] FROM dbo.VWSIG_ENVELOPE_RECEIVERS "
oSql += $" WHERE ENV_USERID_CREATED = {pUserId} "
oSql += $" AND EMAIL_ADDRESS = '{pEmailAddress}' "
oSql += " AND Len([PHONE_NUMBER]) > 0 "
oSql += " ORDER BY [ADDED_WHEN] DESC"
Return Database.GetScalarValue(oSql)
Catch ex As Exception
Logger.Error(ex)
Return String.Empty
End Try
End Function
Private Function GetReceiverIdByEmail(pEmailAddress As String, pTransaction As SqlTransaction) As Integer
Try
Return Database.GetScalarValue($"SELECT GUID FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = '{pEmailAddress}'", pTransaction)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Private Function GetSignedDate(pEmailAddress As String, pEnvelopeId As Integer) As Date
Try
Dim oStatusInt As Integer = EnvelopeStatus.DocumentSigned
Return Database.GetScalarValue($"SELECT ACTION_DATE FROM [DD_ECM].[dbo].[TBSIG_ENVELOPE_HISTORY] WHERE ENVELOPE_ID = {pEnvelopeId}
And USER_REFERENCE = '{pEmailAddress}' AND [STATUS] = {oStatusInt}")
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function AccessCodeAlreadyRequested(pEmailAddress As String, pEnvelopeId As Integer) As Boolean
Try
Dim oStatusInt As Integer = EnvelopeStatus.AccessCodeRequested
Dim oResult As Integer = Database.GetScalarValue($"SELECT COUNT(*) FROM [DD_ECM].[dbo].[TBSIG_ENVELOPE_HISTORY]
WHERE ENVELOPE_ID = {pEnvelopeId} And USER_REFERENCE = '{pEmailAddress}' AND [STATUS] = {oStatusInt}")
Return oResult > 0
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,14 @@
Public Class ReportModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Public Function List(pEnvelopeId As Integer) As DataTable
Dim oSql As String = $"SELECT * FROM VWSIG_ENVELOPE_REPORT WHERE ENVELOPE_ID = {pEnvelopeId}"
Dim oTable As DataTable = Database.GetDatatable(oSql)
Return oTable
End Function
End Class

View File

@@ -0,0 +1,12 @@
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports EnvelopeGenerator.Domain.Entities
Public Class State
Public Property UserId As Integer
Public Property User As User
Public Property Config As Config
Public Property DbConfig As DbConfig
Public Property LogConfig As LogConfig
Public Property Database As MSSQLServer
End Class

View File

@@ -0,0 +1,85 @@
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports EnvelopeGenerator.Domain.Entities
Public Class UserModel
Inherits BaseModel
Public Sub New(pState As State)
MyBase.New(pState)
End Sub
Private Function ToUser(pRow As DataRow) As User
Dim oUser = New User() With {
.Id = pRow.ItemEx("GUID", 0),
.Prename = pRow.ItemEx("PRENAME", ""),
.Name = pRow.ItemEx("NAME", ""),
.Username = pRow.ItemEx("USERNAME", ""),
.Email = pRow.ItemEx("EMAIL", ""),
.Language = pRow.ItemEx("LANGUAGE", "")
}
Return oUser
End Function
Public Function CheckUserLogin(pUser As User) As User
Try
Dim oSql = $"SELECT * FROM [dbo].[FNDD_LOGIN_USER_MODULE] ('{pUser.Username}', 'SIG_ENV_CR', 1)"
Dim oTable As DataTable = Database.GetDatatable(oSql)
If oTable?.Rows.Count = 0 Then
Return pUser
End If
Dim oRow = oTable.Rows.Item(0)
Dim oHasAccess = oRow.ItemEx("MODULE_ACCESS", False)
Dim oIsAdmin = oRow.ItemEx("IS_ADMIN", False)
Dim oGhostmode = oRow.ItemEx("GHOST_MODE_OVERRIDE", False)
pUser.HasAccess = oHasAccess
pUser.IsAdmin = oIsAdmin
pUser.GhostModeActive = oGhostmode
Return pUser
Catch ex As Exception
Logger.Error(ex)
Return pUser
End Try
End Function
Public Function SelectUser() As User
Try
Dim oSql = $"SELECT * FROM [dbo].[TBDD_USER] WHERE GUID = {State.UserId}"
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
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
Public Function SelectUserId(oUserName As String) As Integer
Try
Dim oUserId As Integer = Database.GetScalarValue($"SELECT GUID FROM TBDD_USER WHERE USERNAME = '{oUserName}'")
Return oUserId
Catch ex As Exception
Logger.Error(ex)
Return 0
End Try
End Function
End Class