Imports System.Data.SqlClient Imports DevExpress.Utils.CommonDialogs Imports DigitalData.Modules.Base Imports DigitalData.Modules.Database Public Class FieldEditorController Inherits BaseClass Private ReadOnly Database As MSSQLServer Private Envelope As Envelope = Nothing Public Sub New(pState As State) MyBase.New(pState.LogConfig) Database = pState.Database End Sub Public Function SaveElements(pElements As IEnumerable(Of EnvelopeDocumentElement)) As Boolean Return pElements. Select(AddressOf SaveElement). All(Function(pResult) pResult = True) End Function Public Function SaveElement(pElement As EnvelopeDocumentElement) As Boolean Try If pElement.Id > 0 Then Dim oSql = "UPDATE [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] SET [POSITION_X] = @POSITION_X ,[POSITION_Y] = @POSITION_Y ,[WIDTH] = @WIDTH ,[HEIGHT] = @HEIGHT WHERE GUID = @GUID" Dim oCommand As New SqlCommand(oSql) oCommand.Parameters.Add("GUID", SqlDbType.NVarChar).Value = pElement.Id oCommand.Parameters.Add("POSITION_X", SqlDbType.Int).Value = pElement.X oCommand.Parameters.Add("POSITION_Y", SqlDbType.Int).Value = pElement.Y oCommand.Parameters.Add("WIDTH", SqlDbType.Int).Value = pElement.Width oCommand.Parameters.Add("HEIGHT", SqlDbType.Int).Value = pElement.Height Return Database.ExecuteNonQuery(oCommand) Else Dim oSql = "INSERT INTO [dbo].[TBSIG_DOCUMENT_RECEIVER_ELEMENT] ([DOCUMENT_ID] ,[RECEIVER_ID] ,[ELEMENT_TYPE] ,[POSITION_X] ,[POSITION_Y] ,[WIDTH] ,[HEIGHT] ,[REQUIRED] ,[READ_ONLY] ,[STATUS] ,[PAGE]) VALUES (@DOCUMENT_ID ,@RECEIVER_ID ,@ELEMENT_TYPE ,@POSITION_X ,@POSITION_Y ,@WIDTH ,@HEIGHT ,@REQUIRED ,@READ_ONLY ,@STATUS ,@PAGE)" Dim oCommand As New SqlCommand(oSql) oCommand.Parameters.Add("DOCUMENT_ID", SqlDbType.NVarChar).Value = pElement.DocumentId oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.NVarChar).Value = pElement.ReceiverId oCommand.Parameters.Add("ELEMENT_TYPE", SqlDbType.NVarChar).Value = pElement.ElementType oCommand.Parameters.Add("POSITION_X", SqlDbType.Int).Value = pElement.X oCommand.Parameters.Add("POSITION_Y", SqlDbType.Int).Value = pElement.Y oCommand.Parameters.Add("WIDTH", SqlDbType.Int).Value = pElement.Width oCommand.Parameters.Add("HEIGHT", SqlDbType.Int).Value = pElement.Height oCommand.Parameters.Add("REQUIRED", SqlDbType.Bit).Value = pElement.Required oCommand.Parameters.Add("READ_ONLY", SqlDbType.Bit).Value = pElement.ReadOnly oCommand.Parameters.Add("STATUS", SqlDbType.NVarChar).Value = pElement.Status.ToString oCommand.Parameters.Add("PAGE", SqlDbType.Int).Value = pElement.Page If Database.ExecuteNonQuery(oCommand) Then pElement.Id = GetElementId(pElement) Return True Else Return False End If End If Catch ex As Exception Logger.Error(ex) Return False End Try End Function Public Function DeleteElement(pElement As EnvelopeDocumentElement) As Boolean Try Dim oSql = $"DELETE FROM TBSIG_DOCUMENT_RECEIVER_ELEMENT WHERE GUID = {pElement.Id}" Return Database.ExecuteNonQuery(oSql) Catch ex As Exception Logger.Error(ex) Return False End Try End Function Private Function GetElementId(pElement As EnvelopeDocumentElement) As Integer Try Return Database.GetScalarValue($"SELECT MAX(GUID) FROM TBSIG_DOCUMENT_RECEIVER_ELEMENT WHERE DOCUMENT_ID = {pElement.DocumentId} AND RECEIVER_ID = {pElement.ReceiverId}") Catch ex As Exception Logger.Error(ex) Return Nothing End Try End Function End Class