196 lines
7.5 KiB
VB.net
196 lines
7.5 KiB
VB.net
Imports System.Data.SqlClient
|
|
Imports System.Web.UI.WebControls
|
|
Imports DigitalData.Modules.Base
|
|
Imports DigitalData.Modules.Logging
|
|
|
|
Public Class EnvelopeModel
|
|
Inherits BaseModel
|
|
|
|
Private ReadOnly UserModel As UserModel
|
|
Private ReadOnly ReceiverModel As ReceiverModel
|
|
Private ReadOnly DocumentModel As DocumentModel
|
|
|
|
Public Sub New(pState As State)
|
|
MyBase.New(pState)
|
|
|
|
UserModel = New UserModel(pState)
|
|
ReceiverModel = New ReceiverModel(pState)
|
|
DocumentModel = New DocumentModel(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", ""),
|
|
.ContractType = ObjectEx.ToEnum(Of Constants.ContractType)(pRow.ItemEx("CONTRACT_TYPE", "Contract")),
|
|
.Uuid = pRow.ItemEx("ENVELOPE_UUID", ""),
|
|
.Subject = pRow.ItemEx("SUBJECT", ""),
|
|
.Message = pRow.ItemEx("MESSAGE", ""),
|
|
.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)
|
|
oEnvelope.Receivers = ReceiverModel.ListEnvelopeReceivers(oEnvelope.Id)
|
|
oEnvelope.Documents = DocumentModel.List(oEnvelope.Id)
|
|
|
|
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 List() As IEnumerable(Of Envelope)
|
|
Try
|
|
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE USER_ID = {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 Send(pEnvelope As Envelope) As Boolean
|
|
Try
|
|
Dim oSql = "UPDATE [dbo].[TBSIG_ENVELOPE] SET STATUS = @STATUS, SENT_WHEN = GETDATE() WHERE GUID = @GUID"
|
|
Dim oCommand As New SqlCommand(oSql)
|
|
oCommand.Parameters.Add("GUID", SqlDbType.Int).Value = pEnvelope.Id
|
|
oCommand.Parameters.Add("STATUS", SqlDbType.NVarChar).Value = Constants.EnvelopeStatus.Sent
|
|
|
|
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
|
|
|
|
Public Function Insert(pEnvelope As Envelope) As Boolean
|
|
Try
|
|
Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE] (SUBJECT, MESSAGE, ENVELOPE_UUID, STATUS, USER_ID, TITLE, CONTRACT_TYPE) "
|
|
oSql += " VALUES (@SUBJECT, @MESSAGE, @UUID, @STATUS, @USER_ID, @TITLE, @CONTRACT_TYPE)"
|
|
Dim oCommand As New SqlCommand(oSql)
|
|
oCommand.Parameters.Add("SUBJECT", SqlDbType.NVarChar).Value = String.Empty
|
|
oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = String.Empty
|
|
oCommand.Parameters.Add("UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid
|
|
oCommand.Parameters.Add("STATUS", SqlDbType.NVarChar).Value = Constants.EnvelopeStatus.Created.ToString()
|
|
oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId
|
|
oCommand.Parameters.Add("TITLE", SqlDbType.NVarChar).Value = pEnvelope.Title
|
|
oCommand.Parameters.Add("CONTRACT_TYPE", SqlDbType.NVarChar).Value = pEnvelope.ContractType.ToString()
|
|
|
|
If Database.ExecuteNonQuery(oCommand) Then
|
|
pEnvelope.Id = GetEnvelopeId(pEnvelope)
|
|
SetEnvelopeDate(pEnvelope) 'TODO JJ fragen
|
|
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 += " [SUBJECT] = @SUBJECT, "
|
|
oSql += " [MESSAGE] = @MESSAGE, "
|
|
oSql += " [STATUS] = @STATUS, "
|
|
oSql += " [TITLE] = @TITLE, "
|
|
oSql += " [CONTRACT_TYPE] = @CONTRACT_TYPE, "
|
|
oSql += " [CHANGED_WHEN] = GETDATE() "
|
|
oSql += " 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("STATUS", SqlDbType.NVarChar).Value = pEnvelope.Status
|
|
oCommand.Parameters.Add("TITLE", SqlDbType.NVarChar).Value = pEnvelope.Title
|
|
oCommand.Parameters.Add("CONTRACT_TYPE", SqlDbType.NVarChar).Value = pEnvelope.ContractType.ToString()
|
|
|
|
oCommand.Parameters.Add("ID", SqlDbType.Int).Value = pEnvelope.Id
|
|
oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId
|
|
|
|
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
|