Imports System.Data.SqlClient Imports DigitalData.Modules.Base 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 EnvelopeHistory Return New EnvelopeHistory() 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 EnvelopeHistory) 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 = Domain.Constants.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 EnvelopeHistory) 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