From b24fbf58fcce4041b01a7c20e887263b5f6a54e4 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 31 Jul 2023 09:52:49 +0200 Subject: [PATCH] 19.07.2023 --- .../Controllers/EnvelopeEditorController.vb | 23 ++++++- .../Controllers/EnvelopeListController.vb | 21 +++++++ .../Controllers/FieldEditorController.vb | 62 ++++++++++++++----- .../Entities/ElementMetadata.vb | 4 ++ EnvelopeGenerator.Form/Entities/Envelope.vb | 4 -- .../Entities/EnvelopeDocumentElement.vb | 9 +-- .../EnvelopeGenerator.Form.vbproj | 11 +++- EnvelopeGenerator.Form/MailLicense.xml | 23 +++++++ EnvelopeGenerator.Form/Models/BaseModel.vb | 14 +++++ .../Models/DocumentModel.vb | 31 ++++++++++ .../Models/EnvelopeModel.vb | 40 +++++++++--- .../Models/ReceiverModel.vb | 32 ++++++++++ .../frmEnvelopeEditor.Designer.vb | 16 ++--- EnvelopeGenerator.Form/frmEnvelopeEditor.vb | 20 +++++- EnvelopeGenerator.Form/frmFieldEditor.vb | 59 +++++++----------- EnvelopeGenerator.Form/frmMain.Designer.vb | 56 +++++++++++++---- EnvelopeGenerator.Form/frmMain.resx | 18 ++++++ EnvelopeGenerator.Form/frmMain.vb | 40 ++++++++---- 18 files changed, 379 insertions(+), 104 deletions(-) create mode 100644 EnvelopeGenerator.Form/Controllers/EnvelopeListController.vb create mode 100644 EnvelopeGenerator.Form/Entities/ElementMetadata.vb create mode 100644 EnvelopeGenerator.Form/MailLicense.xml create mode 100644 EnvelopeGenerator.Form/Models/BaseModel.vb create mode 100644 EnvelopeGenerator.Form/Models/DocumentModel.vb create mode 100644 EnvelopeGenerator.Form/Models/ReceiverModel.vb diff --git a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb index 60913d64..a82b87cb 100644 --- a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb +++ b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb @@ -11,21 +11,42 @@ Public Class EnvelopeEditorController Private ReadOnly Database As MSSQLServer Private ReadOnly State As State = Nothing + Private ReadOnly EnvelopeModel As EnvelopeModel + Private ReadOnly DocumentModel As DocumentModel + Private ReadOnly ReceiverModel As ReceiverModel + Public ReadOnly Envelope As Envelope = Nothing Public Sub New(pState As State) MyBase.New(pState.LogConfig) + Database = pState.Database State = pState EnvelopeModel = New EnvelopeModel(pState) + Envelope = CreateEnvelope() End Sub + Public Sub New(pState As State, pEnvelope As Envelope) + MyBase.New(pState.LogConfig) + + Database = pState.Database + State = pState + + EnvelopeModel = New EnvelopeModel(pState) + DocumentModel = New DocumentModel(pState) + ReceiverModel = New ReceiverModel(pState) + + Envelope = pEnvelope + Envelope.Documents = DocumentModel.List(pEnvelope.Id) + Envelope.Receivers = ReceiverModel.List(pEnvelope.Id) + End Sub + #Region "Public" Public Function CreateEnvelope() As Envelope - Dim oEnvelope As New Envelope(State.UserId) + Dim oEnvelope As New Envelope() With {.UserId = State.UserId} If EnvelopeModel.Insert(oEnvelope) Then Return oEnvelope Else diff --git a/EnvelopeGenerator.Form/Controllers/EnvelopeListController.vb b/EnvelopeGenerator.Form/Controllers/EnvelopeListController.vb new file mode 100644 index 00000000..85f697f6 --- /dev/null +++ b/EnvelopeGenerator.Form/Controllers/EnvelopeListController.vb @@ -0,0 +1,21 @@ +Imports DigitalData.Modules.Base +Imports DigitalData.Modules.Database + +Public Class EnvelopeListController + Inherits BaseClass + Private ReadOnly Database As MSSQLServer + Private ReadOnly State As State + Private ReadOnly EnvelopeModel As EnvelopeModel + + Public Sub New(pState As State) + MyBase.New(pState.LogConfig) + Database = pState.Database + State = pState + EnvelopeModel = New EnvelopeModel(pState) + End Sub + + Public Function ListEnvelopes() As IEnumerable(Of Envelope) + Return EnvelopeModel.List() + End Function + +End Class diff --git a/EnvelopeGenerator.Form/Controllers/FieldEditorController.vb b/EnvelopeGenerator.Form/Controllers/FieldEditorController.vb index 037190af..5ecdb232 100644 --- a/EnvelopeGenerator.Form/Controllers/FieldEditorController.vb +++ b/EnvelopeGenerator.Form/Controllers/FieldEditorController.vb @@ -1,21 +1,51 @@ Imports System.Data.SqlClient Imports DevExpress.Utils.CommonDialogs +Imports DevExpress.XtraBars.Docking2010.Views.NativeMdi Imports DigitalData.Modules.Base Imports DigitalData.Modules.Database +Imports GdPicture14.Annotations Public Class FieldEditorController Inherits BaseClass Private ReadOnly Database As MSSQLServer - Private Envelope As Envelope = Nothing + Private ReadOnly Document As EnvelopeDocument + Public ReadOnly Property Elements As New List(Of EnvelopeDocumentElement) - Public Sub New(pState As State) + Public Sub New(pState As State, pDocument As EnvelopeDocument) MyBase.New(pState.LogConfig) Database = pState.Database + Document = pDocument End Sub - Public Function SaveElements(pElements As IEnumerable(Of EnvelopeDocumentElement)) As Boolean - Return pElements. + Public Sub AddOrUpdateElement(pAnnotation As AnnotationStickyNote, pReceiverId As Integer) + Dim oTag As String() = pAnnotation.Tag.Split("|"c) + Dim oPage = Integer.Parse(oTag(0)) + Dim oIndex = Integer.Parse(oTag(1)) + Dim oELement = Elements.Where(Function(e) e.AnnotationIndex = oIndex And e.Page = oPage).SingleOrDefault() + + If oELement IsNot Nothing Then + oELement.Height = pAnnotation.Height + oELement.Width = pAnnotation.Width + oELement.X = pAnnotation.Left + oELement.Y = pAnnotation.Top + Else + Elements.Add(New EnvelopeDocumentElement() With { + .ElementType = Constants.ElementType.Signature.ToString, + .Height = pAnnotation.Height, + .Width = pAnnotation.Width, + .X = pAnnotation.Left, + .Y = pAnnotation.Top, + .DocumentId = Document.Id, + .ReceiverId = pReceiverId, + .AnnotationIndex = oIndex, + .Page = oPage + }) + End If + End Sub + + Public Function SaveElements() As Boolean + Return Elements. Select(AddressOf SaveElement). All(Function(pResult) pResult = True) End Function @@ -32,10 +62,10 @@ Public Class FieldEditorController 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 + oCommand.Parameters.Add("POSITION_X", SqlDbType.Float).Value = pElement.X + oCommand.Parameters.Add("POSITION_Y", SqlDbType.Float).Value = pElement.Y + oCommand.Parameters.Add("WIDTH", SqlDbType.Float).Value = pElement.Width + oCommand.Parameters.Add("HEIGHT", SqlDbType.Float).Value = pElement.Height Return Database.ExecuteNonQuery(oCommand) @@ -51,7 +81,8 @@ Public Class FieldEditorController ,[REQUIRED] ,[READ_ONLY] ,[STATUS] - ,[PAGE]) + ,[PAGE] + ,[ANNOTATION_INDEX]) VALUES (@DOCUMENT_ID ,@RECEIVER_ID @@ -63,21 +94,22 @@ Public Class FieldEditorController ,@REQUIRED ,@READ_ONLY ,@STATUS - ,@PAGE)" + ,@PAGE + ,@INDEX)" 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("POSITION_X", SqlDbType.Float).Value = pElement.X + oCommand.Parameters.Add("POSITION_Y", SqlDbType.Float).Value = pElement.Y + oCommand.Parameters.Add("WIDTH", SqlDbType.Float).Value = pElement.Width + oCommand.Parameters.Add("HEIGHT", SqlDbType.Float).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 - + oCommand.Parameters.Add("INDEX", SqlDbType.Int).Value = pElement.AnnotationIndex If Database.ExecuteNonQuery(oCommand) Then pElement.Id = GetElementId(pElement) diff --git a/EnvelopeGenerator.Form/Entities/ElementMetadata.vb b/EnvelopeGenerator.Form/Entities/ElementMetadata.vb new file mode 100644 index 00000000..9a1e4be7 --- /dev/null +++ b/EnvelopeGenerator.Form/Entities/ElementMetadata.vb @@ -0,0 +1,4 @@ +Public Class ElementMetadata + Public Property Index As Integer + Public Property Page As Integer +End Class diff --git a/EnvelopeGenerator.Form/Entities/Envelope.vb b/EnvelopeGenerator.Form/Entities/Envelope.vb index 7ff24bc5..6092285f 100644 --- a/EnvelopeGenerator.Form/Entities/Envelope.vb +++ b/EnvelopeGenerator.Form/Entities/Envelope.vb @@ -9,10 +9,6 @@ Public Property Documents As New List(Of EnvelopeDocument) Public Property Receivers As New List(Of EnvelopeReceiver) - Public Sub New(pUserId As Integer) - UserId = pUserId - End Sub - Public Function Validate() As List(Of String) Dim oErrors As New List(Of String) diff --git a/EnvelopeGenerator.Form/Entities/EnvelopeDocumentElement.vb b/EnvelopeGenerator.Form/Entities/EnvelopeDocumentElement.vb index c3988ca1..04555554 100644 --- a/EnvelopeGenerator.Form/Entities/EnvelopeDocumentElement.vb +++ b/EnvelopeGenerator.Form/Entities/EnvelopeDocumentElement.vb @@ -1,9 +1,9 @@ Public Class EnvelopeDocumentElement Public Property Id As Integer = 0 - Public Property X As Integer - Public Property Y As Integer - Public Property Width As Integer - Public Property Height As Integer + Public Property X As Double + Public Property Y As Double + Public Property Width As Double + Public Property Height As Double Public Property ElementType As String Public Property DocumentId As Integer Public Property ReceiverId As Integer @@ -11,4 +11,5 @@ Public Property [ReadOnly] As Boolean = False Public Property Page As Integer = 1 Public Property Status As Constants.ElementStatus = Constants.ElementStatus.Created + Public Property AnnotationIndex As Integer End Class diff --git a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj index b4c830d2..105a6881 100644 --- a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj +++ b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj @@ -101,8 +101,10 @@ + + @@ -126,7 +128,10 @@ Form + + + True Application.myapp @@ -183,7 +188,11 @@ Application.Designer.vb - + + + PreserveNewest + +