Imports System.Data.Common Imports System.Data.SqlClient Imports System.Runtime.Remoting.Messaging Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging Imports EnvelopeGenerator.Form.My.Resources Public Class EnvelopeModel Private Database As MSSQLServer Private Logger As Logger Public Sub New(pState As State) Logger = pState.LogConfig.GetLogger() Database = pState.Database End Sub Public Function Insert(pEnvelope As Envelope) As Boolean Try Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE] (SUBJECT, MESSAGE, ENVELOPE_UUID, STATUS, USER_ID) VALUES (@SUBJECT, @MESSAGE, @UUID, @STATUS, @USER_ID)" 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 oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId If Database.ExecuteNonQuery(oCommand) Then pEnvelope.Id = GetEnvelopeId(pEnvelope) 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 [SUBJECT] = @SUBJECT, [MESSAGE] = @MESSAGE, [STATUS] = @STATUS 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("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) As Boolean Try Dim oSql = $"DELETE FROM [dbo].[TBSIG_ENVELOPE] WHERE GUID = {pEnvelope.Id}" Return Database.ExecuteNonQuery(oSql) 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 End Class