Updated references from `Constants` to direct usage of `EnvelopeStatus` and `EmailTemplateType` enums. This change enhances code readability and reduces dependency on the `Constants` class. Modified properties and parameters across command classes, DTOs, repositories, and services to use the enums directly. Updated `ModifyDocStatusCommandBase`, `EnvelopeHistoryDto`, and `ResetEmailTemplateCommand` for improved clarity. Consistent updates across multiple files indicate a systematic refactoring aimed at streamlining the codebase and improving maintainability. Comments and documentation have also been revised to reflect these changes.
253 lines
11 KiB
VB.net
253 lines
11 KiB
VB.net
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", ""),
|
|
.Comment = pRow.ItemEx("COMMENT", ""),
|
|
.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 FormUser(),
|
|
.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())),
|
|
.TfaEnabled = 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.DocResult = oByte
|
|
End If
|
|
Else
|
|
oEnvelope.DocResult = 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.Type = 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
|
|
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE ENVELOPE_UUID = '{pEnvelopeUuid}'"
|
|
Dim oTable = Database.GetDatatable(oSql)
|
|
Return ToEnvelope(oTable)
|
|
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 = 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 += " [TfaEnabled] = @TfaEnabled"
|
|
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.TfaEnabled
|
|
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
|