Imports System.Data.SqlClient Imports DigitalData.Modules.Base Imports EnvelopeGenerator.Domain.Constants Imports EnvelopeGenerator.Domain.Entities Public Class HistoryModel Inherits BaseModel Public Sub New(pState As State) MyBase.New(pState) End Sub Private Function ToEnvelopeHistoryEntry(pRow As DataRow) As History Return New History() With { .ActionDate = pRow.ItemEx(Of Date)("ACTION_DATE", Nothing), .EnvelopeId = pRow.Item("ENVELOPE_ID"), .Status = pRow.Item("STATUS"), .UserReference = pRow.ItemEx("USER_REFERENCE", "") } End Function Public Function List(pEnvelopeId As Integer) As List(Of History) Dim oSql = $"SELECT * FROM TBSIG_ENVELOPE_HISTORY WHERE ENVELOPE_ID = {pEnvelopeId} AND ACTION_DATE IS NOT NULL ORDER BY GUID DESC" Dim oTable = Database.GetDatatable(oSql) Return oTable?.Rows. Cast(Of DataRow). Select(AddressOf ToEnvelopeHistoryEntry). ToList() End Function Public Function HasReceiverSigned(pEnvelopeId As Integer, pReceiverId As Integer) As Boolean Dim oEnvelopeSigned As Integer = EnvelopeStatus.DocumentSigned Dim oSql = $"SELECT COUNT(T.GUID) FROM TBSIG_ENVELOPE_HISTORY T JOIN TBSIG_RECEIVER T2 ON T.USER_REFERENCE = T2.EMAIL_ADDRESS WHERE T.STATUS = {oEnvelopeSigned} AND T.ENVELOPE_ID = {pEnvelopeId} AND T2.GUID = {pReceiverId}" Dim oRowCount As Integer = Database.GetScalarValue(oSql) Return oRowCount > 0 End Function Public Function Insert(pHistory As History) As Boolean Try Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_HISTORY] " oSql += " ([ENVELOPE_ID] " oSql += " ,[USER_REFERENCE] " oSql += " ,[STATUS] " oSql += " ,[ACTION_DATE]) " oSql += " VALUES " oSql += " (@ENVELOPE_ID " oSql += " ,@USER_REFERENCE " oSql += " ,@STATUS " oSql += " ,@ACTION_DATE) " Dim oCommand As New SqlCommand(oSql) oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.Int).Value = pHistory.EnvelopeId oCommand.Parameters.Add("USER_REFERENCE", SqlDbType.NVarChar).Value = pHistory.UserReference oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = pHistory.Status oCommand.Parameters.Add("ACTION_DATE", SqlDbType.DateTime).Value = pHistory.ActionDate 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 End Class