Imports System.Data 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 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