17.07.2023
This commit is contained in:
@@ -1,69 +1,60 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Data.Common
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Runtime.Remoting.Messaging
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports EnvelopeGenerator.Form.My.Resources
|
||||
|
||||
Public Class EnvelopeController
|
||||
Public Class EnvelopeEditorController
|
||||
Inherits BaseClass
|
||||
|
||||
Private ReadOnly Database As MSSQLServer
|
||||
Private Envelope As Envelope = Nothing
|
||||
Private ReadOnly State As State = Nothing
|
||||
Private ReadOnly EnvelopeModel As EnvelopeModel
|
||||
Public ReadOnly Envelope As Envelope = Nothing
|
||||
|
||||
Public Sub New(pState As State)
|
||||
MyBase.New(pState.LogConfig)
|
||||
Database = pState.Database
|
||||
State = pState
|
||||
|
||||
EnvelopeModel = New EnvelopeModel(pState)
|
||||
Envelope = CreateEnvelope()
|
||||
End Sub
|
||||
|
||||
#Region "Public"
|
||||
Public Function CreateEnvelope() As Envelope
|
||||
Dim oEnvelope As New Envelope(State.UserId)
|
||||
If EnvelopeModel.Insert(oEnvelope) Then
|
||||
Return oEnvelope
|
||||
Else
|
||||
Return Nothing
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function SaveEnvelope(pEnvelope As Envelope) As Boolean
|
||||
Dim oConnection = Database.GetConnection()
|
||||
Dim oTransaction = oConnection.BeginTransaction(IsolationLevel.ReadUncommitted)
|
||||
|
||||
Try
|
||||
If pEnvelope.Id > 0 Then
|
||||
pEnvelope.Status = Constants.EnvelopeStatus.Saved
|
||||
If EnvelopeModel.Update(pEnvelope, oTransaction) = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
|
||||
Dim oSql = "UPDATE [dbo].[TBSIG_ENVELOPE] SET [SUBJECT] = @SUBJECT, [MESSAGE] = @MESSAGE, [ENVELOPE_UUID] = @UUID WHERE GUID = @ID AND USER_ID = @USER_ID"
|
||||
Dim oCommand As New SqlCommand(oSql)
|
||||
oCommand.Parameters.Add("SUBJECT", SqlDbType.NVarChar).Value = pEnvelope.Subject
|
||||
oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = pEnvelope.Message
|
||||
oCommand.Parameters.Add("UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid
|
||||
oCommand.Parameters.Add("ID", SqlDbType.Int).Value = pEnvelope.Id
|
||||
oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId
|
||||
If SaveEnvelopeReceivers(pEnvelope, oTransaction) = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
|
||||
Dim oResult = Database.ExecuteNonQueryWithConnectionObject(oCommand, oConnection, MSSQLServer.TransactionMode.ExternalTransaction, oTransaction)
|
||||
If oResult = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
Else
|
||||
|
||||
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE] (SUBJECT, MESSAGE, ENVELOPE_UUID, STATUS, USER_ID) VALUES (@SUBJECT, @MESSAGE, @UUID, @STATUS, @USER_ID)"
|
||||
Dim oCommand As New SqlCommand(oSql)
|
||||
oCommand.Parameters.Add("SUBJECT", SqlDbType.NVarChar).Value = pEnvelope.Subject
|
||||
oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = pEnvelope.Message
|
||||
oCommand.Parameters.Add("UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid
|
||||
oCommand.Parameters.Add("STATUS", SqlDbType.NVarChar).Value = pEnvelope.Status.ToString()
|
||||
oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId
|
||||
|
||||
If Database.ExecuteNonQuery(oCommand, oTransaction) = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
|
||||
pEnvelope.Id = GetEnvelopeId(pEnvelope.UserId, oTransaction)
|
||||
|
||||
If SaveEnvelopeReceivers(pEnvelope, oTransaction) = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
|
||||
If SaveEnvelopeDocuments(pEnvelope, oTransaction) = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
If SaveEnvelopeDocuments(pEnvelope, oTransaction) = False Then
|
||||
Throw New ApplicationException
|
||||
End If
|
||||
|
||||
oTransaction.Commit()
|
||||
|
||||
Envelope = pEnvelope
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
oTransaction.Rollback()
|
||||
@@ -72,11 +63,17 @@ Public Class EnvelopeController
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function DeleteDocument(pDocument As EnvelopeFile) As Boolean
|
||||
If Envelope Is Nothing Then
|
||||
Return False
|
||||
End If
|
||||
Public Function CleanupEnvelope() As Boolean
|
||||
If Envelope.Status = Constants.EnvelopeStatus.Created Then
|
||||
'TODO: Delete Documents and Receivers and elements
|
||||
Return EnvelopeModel.Delete(Envelope)
|
||||
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function DeleteDocument(pDocument As EnvelopeDocument) As Boolean
|
||||
Dim oSql = "DELETE FROM [dbo].[TBSIG_ENVELOPE_DOCUMENT] WHERE FILENAME = @FILENAME AND ENVELOPE_ID = @ENVELOPE_ID"
|
||||
Dim oCommand As New SqlCommand(oSql)
|
||||
oCommand.Parameters.Add("FILENAME", SqlDbType.NVarChar).Value = pDocument.Filename
|
||||
@@ -89,6 +86,7 @@ Public Class EnvelopeController
|
||||
Private Function SaveEnvelopeDocuments(pEnvelope As Envelope, pTransaction As SqlTransaction) As Boolean
|
||||
Try
|
||||
Return pEnvelope.Documents.
|
||||
Where(Function(d) d.Id = 0).
|
||||
Select(Function(d) InsertDocument(pEnvelope, d, pTransaction)).
|
||||
All(Function(pResult) pResult = True)
|
||||
|
||||
@@ -98,7 +96,7 @@ Public Class EnvelopeController
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function InsertDocument(pEnvelope As Envelope, pDocument As EnvelopeFile, pTransaction As SqlTransaction) As Boolean
|
||||
Private Function InsertDocument(pEnvelope As Envelope, pDocument As EnvelopeDocument, pTransaction As SqlTransaction) As Boolean
|
||||
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_DOCUMENT]
|
||||
([FILENAME]
|
||||
,[FILEPATH]
|
||||
@@ -113,9 +111,13 @@ Public Class EnvelopeController
|
||||
oCommand.Parameters.Add("FILEPATH", SqlDbType.NVarChar).Value = pDocument.Filepath
|
||||
oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pEnvelope.Id
|
||||
|
||||
pDocument.EnvelopeId = pEnvelope.Id
|
||||
|
||||
Return Database.ExecuteNonQuery(oCommand, pTransaction)
|
||||
If Database.ExecuteNonQuery(oCommand, pTransaction) Then
|
||||
pDocument.EnvelopeId = pEnvelope.Id
|
||||
pDocument.Id = GetDocumentId(pDocument.Filename, pEnvelope, pTransaction)
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function SaveEnvelopeReceivers(pEnvelope As Envelope, pTransaction As SqlTransaction) As Boolean
|
||||
@@ -139,7 +141,7 @@ Public Class EnvelopeController
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function UpdateReceivers(pReceivers As List(Of Receiver), pTransaction As SqlTransaction) As Boolean
|
||||
Private Function UpdateReceivers(pReceivers As List(Of EnvelopeReceiver), pTransaction As SqlTransaction) As Boolean
|
||||
Try
|
||||
Return pReceivers.
|
||||
Select(Function(r) UpdateReceiver(r, pTransaction)).
|
||||
@@ -162,7 +164,7 @@ Public Class EnvelopeController
|
||||
|
||||
End Function
|
||||
|
||||
Private Function AssignReceiver(pEnvelope As Envelope, pReceiver As Receiver, pTransaction As SqlTransaction) As Boolean
|
||||
Private Function AssignReceiver(pEnvelope As Envelope, pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean
|
||||
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_RECEIVER]
|
||||
([ENVELOPE_ID]
|
||||
,[RECEIVER_ID]
|
||||
@@ -186,7 +188,7 @@ Public Class EnvelopeController
|
||||
Return Database.ExecuteNonQuery(oCommand, pTransaction)
|
||||
End Function
|
||||
|
||||
Private Function UpdateReceiver(pReceiver As Receiver, pTransaction As SqlTransaction) As Boolean
|
||||
Private Function UpdateReceiver(pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean
|
||||
If pReceiver.Id = 0 Then
|
||||
Dim oSql As String = "INSERT INTO [dbo].[TBSIG_RECEIVER]
|
||||
([NAME]
|
||||
@@ -234,16 +236,6 @@ Public Class EnvelopeController
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function GetEnvelopeId(pUserId As Integer, pTransaction As SqlTransaction) As Integer
|
||||
Try
|
||||
Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_ENVELOPE WHERE USER_ID = {pUserId}", pTransaction)
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetReceiverId(pEmailAddress As String, pTransaction As SqlTransaction) As Integer
|
||||
Try
|
||||
Return Database.GetScalarValue($"SELECT GUID FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = '{pEmailAddress}'", pTransaction)
|
||||
@@ -253,4 +245,14 @@ Public Class EnvelopeController
|
||||
Return Nothing
|
||||
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
|
||||
115
EnvelopeGenerator.Form/Controllers/FieldEditorController.vb
Normal file
115
EnvelopeGenerator.Form/Controllers/FieldEditorController.vb
Normal file
@@ -0,0 +1,115 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports DevExpress.Utils.CommonDialogs
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Database
|
||||
|
||||
Public Class FieldEditorController
|
||||
Inherits BaseClass
|
||||
|
||||
Private ReadOnly Database As MSSQLServer
|
||||
Private Envelope As Envelope = Nothing
|
||||
|
||||
Public Sub New(pState As State)
|
||||
MyBase.New(pState.LogConfig)
|
||||
Database = pState.Database
|
||||
End Sub
|
||||
|
||||
Public Function SaveElements(pElements As IEnumerable(Of EnvelopeDocumentElement)) As Boolean
|
||||
Return pElements.
|
||||
Select(AddressOf SaveElement).
|
||||
All(Function(pResult) pResult = True)
|
||||
End Function
|
||||
|
||||
Public Function SaveElement(pElement As EnvelopeDocumentElement) As Boolean
|
||||
Try
|
||||
If pElement.Id > 0 Then
|
||||
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.Int).Value = pElement.X
|
||||
oCommand.Parameters.Add("POSITION_Y", SqlDbType.Int).Value = pElement.Y
|
||||
oCommand.Parameters.Add("WIDTH", SqlDbType.Int).Value = pElement.Width
|
||||
oCommand.Parameters.Add("HEIGHT", SqlDbType.Int).Value = pElement.Height
|
||||
|
||||
Return Database.ExecuteNonQuery(oCommand)
|
||||
|
||||
Else
|
||||
Dim oSql = "INSERT INTO [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT]
|
||||
([DOCUMENT_ID]
|
||||
,[RECEIVER_ID]
|
||||
,[ELEMENT_TYPE]
|
||||
,[POSITION_X]
|
||||
,[POSITION_Y]
|
||||
,[WIDTH]
|
||||
,[HEIGHT]
|
||||
,[REQUIRED]
|
||||
,[READ_ONLY]
|
||||
,[STATUS]
|
||||
,[PAGE])
|
||||
VALUES
|
||||
(@DOCUMENT_ID
|
||||
,@RECEIVER_ID
|
||||
,@ELEMENT_TYPE
|
||||
,@POSITION_X
|
||||
,@POSITION_Y
|
||||
,@WIDTH
|
||||
,@HEIGHT
|
||||
,@REQUIRED
|
||||
,@READ_ONLY
|
||||
,@STATUS
|
||||
,@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.NVarChar).Value = pElement.ElementType
|
||||
oCommand.Parameters.Add("POSITION_X", SqlDbType.Int).Value = pElement.X
|
||||
oCommand.Parameters.Add("POSITION_Y", SqlDbType.Int).Value = pElement.Y
|
||||
oCommand.Parameters.Add("WIDTH", SqlDbType.Int).Value = pElement.Width
|
||||
oCommand.Parameters.Add("HEIGHT", SqlDbType.Int).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("STATUS", SqlDbType.NVarChar).Value = pElement.Status.ToString
|
||||
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
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function DeleteElement(pElement As EnvelopeDocumentElement) 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
|
||||
|
||||
Private Function GetElementId(pElement As EnvelopeDocumentElement) 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
|
||||
End Class
|
||||
Reference in New Issue
Block a user