Imports System.Data.Common Imports System.Data.SqlClient Imports DigitalData.Modules.Base Public Class ReceiverModel Inherits BaseModel Public Sub New(pState As State) MyBase.New(pState) End Sub Private Function ToReceiver(pRow As DataRow) As EnvelopeReceiver Return New EnvelopeReceiver() With { .Id = pRow.ItemEx("GUID", 0), .Email = pRow.ItemEx("EMAIL_ADDRESS", ""), .Name = pRow.ItemEx("NAME", ""), .Sequence = pRow.ItemEx("SEQUENCE", 0) } End Function Public Function TestReceiverExists(pReceiver As EnvelopeReceiver) As Boolean Try Dim oGuid = Database.GetScalarValue($"SELECT COALESCE(GUID, 0) FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = '{pReceiver.Email}'") pReceiver.Id = oGuid Return oGuid > 0 Catch ex As Exception Logger.Error(ex) Return False End Try End Function Public Function Insert(pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean Try Dim oSql As String = "INSERT INTO [dbo].[TBSIG_RECEIVER] ([EMAIL_ADDRESS] ,[SIGNATURE]) VALUES (@EMAIL ,@SIGNATURE)" Dim oCommand = New SqlCommand(oSql) oCommand.Parameters.Add("EMAIL", SqlDbType.NVarChar).Value = pReceiver.Email oCommand.Parameters.Add("SIGNATURE", SqlDbType.NVarChar).Value = pReceiver.Signature Dim oResult = Database.ExecuteNonQuery(oCommand, pTransaction) If oResult = True Then pReceiver.Id = GetReceiverId(pReceiver.Email, pTransaction) Else Return False End If Return True Catch ex As Exception Logger.Error(ex) Return False End Try End Function Public Function Update(pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean Try ' TODO: Update ENVELOPE_RECEIVER instead Dim oSql As String = "UPDATE [dbo].[TBSIG_USER_RECEIVER] SET [NAME] = @NAME ,[COMPANY_NAME] = @COMPANY ,[JOB_TITLE] = @JOB WHERE RECEIVER_ID = @RECEIVER_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 EnvelopeReceiver, 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]) VALUES (@ENVELOPE_ID ,@RECEIVER_ID ,@MESSAGE ,@ACCESS_CODE ,@NAME ,@JOB ,@COMPANY ,@SEQUENCE)" 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 List(pEnvelopeId As Integer) As IEnumerable(Of EnvelopeReceiver) 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 Delete(pReceiverId As Integer, pDocumentId As Integer) As Boolean Try Dim oSql = $"DELETE FROM TBSIG_DOCUMENT_RECEIVER WHERE RECEIVER_ID = {pReceiverId} AND DOCUMENT_ID = {pDocumentId}" Return Database.ExecuteNonQuery(oSql) Catch ex As Exception Logger.Error(ex) Return False 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) Catch ex As Exception Logger.Error(ex) Return Nothing End Try End Function End Class