2023-11-06 Neuer Status "Teil-Signiert", "Vollständig Signiert"

Teil-Validierung
This commit is contained in:
PitzM 2023-11-06 16:23:05 +01:00
parent f4549c0481
commit fc100df537
11 changed files with 86 additions and 31 deletions

View File

@ -5,8 +5,8 @@
Created = 0 Created = 0
Saved = 1 Saved = 1
Sent = 2 Sent = 2
PartSigned = 3 PartlySigned = 3
CompleteSigned = 4 CompletelySigned = 4
End Enum End Enum
Public Enum ElementStatus Public Enum ElementStatus

View File

@ -55,6 +55,21 @@
Return oErrors Return oErrors
End Function End Function
Public Function ValidateReceiverDocumentData() As List(Of String)
Dim oErrors As New List(Of String)
If Documents.Count = 0 Then
oErrors.Add(My.Resources.Envelope.Missing_Documents)
End If
If Receivers.Count = 0 Then
oErrors.Add(My.Resources.Envelope.Missing_Receivers)
End If
Return oErrors
End Function
Private Function IsValidEmailAddress(pEmailAddress As String) As Boolean Private Function IsValidEmailAddress(pEmailAddress As String) As Boolean
Try Try
Dim oAddress = New System.Net.Mail.MailAddress(pEmailAddress) Dim oAddress = New System.Net.Mail.MailAddress(pEmailAddress)

View File

@ -2,7 +2,7 @@
Imports EnvelopeGenerator.Common.Constants Imports EnvelopeGenerator.Common.Constants
Public Class EnvelopeReceiver Public Class EnvelopeReceiver
Public Property Id As Integer Public Property Id As Integer = 0
Public Property UserId As Integer Public Property UserId As Integer
Public Property Signature As String Public Property Signature As String

View File

@ -59,7 +59,7 @@ Public Class EnvelopeModel
Public Function List() As IEnumerable(Of Envelope) Public Function List() As IEnumerable(Of Envelope)
Try Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE USER_ID = {State.UserId}" Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE USER_ID = {State.UserId} AND STATUS IN (0,1,2,3)"
Dim oTable = Database.GetDatatable(oSql) Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow). Return oTable?.Rows.Cast(Of DataRow).
@ -73,7 +73,7 @@ Public Class EnvelopeModel
Public Function ListCompleted() As IEnumerable(Of Envelope) Public Function ListCompleted() As IEnumerable(Of Envelope)
Try Try
Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE USER_ID = {State.UserId} AND STATUS = " Dim oSql = $"SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE USER_ID = {State.UserId} AND STATUS = 4"
Dim oTable = Database.GetDatatable(oSql) Dim oTable = Database.GetDatatable(oSql)
Return oTable?.Rows.Cast(Of DataRow). Return oTable?.Rows.Cast(Of DataRow).

View File

@ -154,7 +154,7 @@
<value>Empfänger {0} hat keine gültige Email Addresse.</value> <value>Empfänger {0} hat keine gültige Email Addresse.</value>
</data> </data>
<data name="Missing Documents" xml:space="preserve"> <data name="Missing Documents" xml:space="preserve">
<value>Missing Documents</value> <value>Fehlendes Dokument</value>
</data> </data>
<data name="Missing Elements" xml:space="preserve"> <data name="Missing Elements" xml:space="preserve">
<value>Es muss mindestens ein Signaturfeld gesetzt werden</value> <value>Es muss mindestens ein Signaturfeld gesetzt werden</value>
@ -163,13 +163,13 @@
<value>Für den Empfänger {0} gibt es noch kein Signaturfeld</value> <value>Für den Empfänger {0} gibt es noch kein Signaturfeld</value>
</data> </data>
<data name="Missing Message" xml:space="preserve"> <data name="Missing Message" xml:space="preserve">
<value>Missing Message</value> <value>Fehlende Nachricht</value>
</data> </data>
<data name="Missing Receivers" xml:space="preserve"> <data name="Missing Receivers" xml:space="preserve">
<value>Missing Receivers</value> <value>Fehlende Empfänger</value>
</data> </data>
<data name="Missing Subject" xml:space="preserve"> <data name="Missing Subject" xml:space="preserve">
<value>Missing Subject</value> <value>Fehlender Betreff</value>
</data> </data>
<data name="Only one file is allowed" xml:space="preserve"> <data name="Only one file is allowed" xml:space="preserve">
<value>Es ist nur eine Datei zulässig!</value> <value>Es ist nur eine Datei zulässig!</value>

View File

@ -173,7 +173,7 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Missing Documents ähnelt. ''' Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt.
'''</summary> '''</summary>
Public Shared ReadOnly Property Missing_Documents() As String Public Shared ReadOnly Property Missing_Documents() As String
Get Get
@ -200,7 +200,7 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Missing Message ähnelt. ''' Sucht eine lokalisierte Zeichenfolge, die Fehlende Nachricht ähnelt.
'''</summary> '''</summary>
Public Shared ReadOnly Property Missing_Message() As String Public Shared ReadOnly Property Missing_Message() As String
Get Get
@ -209,7 +209,7 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Missing Receivers ähnelt. ''' Sucht eine lokalisierte Zeichenfolge, die Fehlende Empfänger ähnelt.
'''</summary> '''</summary>
Public Shared ReadOnly Property Missing_Receivers() As String Public Shared ReadOnly Property Missing_Receivers() As String
Get Get
@ -218,7 +218,7 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Missing Subject ähnelt. ''' Sucht eine lokalisierte Zeichenfolge, die Fehlender Betreff ähnelt.
'''</summary> '''</summary>
Public Shared ReadOnly Property Missing_Subject() As String Public Shared ReadOnly Property Missing_Subject() As String
Get Get

View File

@ -73,6 +73,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Vollständig Signiert ähnelt.
'''</summary>
Friend Shared ReadOnly Property CompletelySigned() As String
Get
Return ResourceManager.GetString("CompletelySigned", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Vertrag ähnelt. ''' Sucht eine lokalisierte Zeichenfolge, die Vertrag ähnelt.
'''</summary> '''</summary>
@ -100,6 +109,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Teil-Signiert ähnelt.
'''</summary>
Friend Shared ReadOnly Property PartlySigned() As String
Get
Return ResourceManager.GetString("PartlySigned", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die ReadAndSign ähnelt. ''' Sucht eine lokalisierte Zeichenfolge, die ReadAndSign ähnelt.
'''</summary> '''</summary>

View File

@ -120,6 +120,9 @@
<data name="Completed" xml:space="preserve"> <data name="Completed" xml:space="preserve">
<value>Abgeschlossen</value> <value>Abgeschlossen</value>
</data> </data>
<data name="CompletelySigned" xml:space="preserve">
<value>Vollständig Signiert</value>
</data>
<data name="Contract" xml:space="preserve"> <data name="Contract" xml:space="preserve">
<value>Vertrag</value> <value>Vertrag</value>
</data> </data>
@ -129,6 +132,9 @@
<data name="Draft" xml:space="preserve"> <data name="Draft" xml:space="preserve">
<value>Entwurf</value> <value>Entwurf</value>
</data> </data>
<data name="PartlySigned" xml:space="preserve">
<value>Teil-Signiert</value>
</data>
<data name="ReadAndSign" xml:space="preserve"> <data name="ReadAndSign" xml:space="preserve">
<value>ReadAndSign</value> <value>ReadAndSign</value>
</data> </data>

View File

@ -265,21 +265,20 @@ Public Class EnvelopeEditorController
Dim oExistingReceivers As List(Of EnvelopeReceiver) = ReceiverModel.ListReceivers(pCurrentReceivers) Dim oExistingReceivers As List(Of EnvelopeReceiver) = ReceiverModel.ListReceivers(pCurrentReceivers)
Dim oExistingAddresses = oExistingReceivers.Select(Function(r) r.Email) Dim oExistingAddresses = oExistingReceivers.Select(Function(r) r.Email)
' Neue Empfänger
Dim oNewReceivers = pCurrentReceivers. Dim oNewReceivers = pCurrentReceivers.
Where(Function(r) Not oExistingAddresses.Contains(r.Email)).ToList() Where(Function(r) Not oExistingAddresses.Contains(r.Email)).ToList()
For Each oReceiver In oNewReceivers ' Empfänger, die bereits einmal verwendet wurden
oReceiver.Id = 0
Next
For Each oCurrentReceiver In pCurrentReceivers For Each oCurrentReceiver In pCurrentReceivers
If oCurrentReceiver.Id = 0 Then If oCurrentReceiver.Id = 0 Then
Dim oExistingReceiver As EnvelopeReceiver = oExistingReceivers.Where(Function(r) r.Email = oCurrentReceiver.Email).First() Dim oExistingReceiver As EnvelopeReceiver = oExistingReceivers.Where(Function(r) r.Email.Equals(oCurrentReceiver.Email, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault()
oCurrentReceiver.Id = oExistingReceiver.Id If oExistingReceiver IsNot Nothing Then
oCurrentReceiver.Id = oExistingReceiver.Id
End If
End If End If
Next Next
Dim oConnection = Database.GetConnection() Dim oConnection = Database.GetConnection()
Dim oTransaction = oConnection.BeginTransaction() Dim oTransaction = oConnection.BeginTransaction()

View File

@ -1,5 +1,4 @@
Imports System.ComponentModel Imports System.ComponentModel
Imports System.Runtime.Remoting.Messaging
Imports DevExpress.XtraEditors Imports DevExpress.XtraEditors
Imports DevExpress.XtraGrid Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid Imports DevExpress.XtraGrid.Views.Grid
@ -117,12 +116,15 @@ Partial Public Class frmEnvelopeEditor
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try Try
If SaveEnvelopeWithReceiverDocumentValidation() = False Then
Return
End If
If ViewDocuments.GetSelectedRows().Count > 0 Then If ViewDocuments.GetSelectedRows().Count > 0 Then
Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument) Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument)
Dim oGDPictureKey As String = "21182889975216572111813147150675976632" Dim oGDPictureKey As String = "21182889975216572111813147150675976632"
If SaveEnvelopeWithOutValidation() Then Dim oForm As New frmFieldEditor() With {
Dim oForm As New frmFieldEditor() With {
.Document = Controller.Envelope.Documents. .Document = Controller.Envelope.Documents.
Where(Function(d) d.Filename = oDocument.Filename). Where(Function(d) d.Filename = oDocument.Filename).
SingleOrDefault(), SingleOrDefault(),
@ -130,8 +132,8 @@ Partial Public Class frmEnvelopeEditor
.Receivers = Receivers.ToList, .Receivers = Receivers.ToList,
.State = State .State = State
} }
oForm.ShowDialog() oForm.ShowDialog()
End If
End If End If
Catch ex As Exception Catch ex As Exception
Logger.Error(ex) Logger.Error(ex)
@ -148,6 +150,26 @@ Partial Public Class frmEnvelopeEditor
Return SaveEnvelope(False) Return SaveEnvelope(False)
End Function End Function
''' <summary>
''' Speichert den Envelope und prüft
''' ob Receiver und Dokument vorhanden ist.
''' </summary>
Private Function SaveEnvelopeWithReceiverDocumentValidation() As Boolean
If SaveEnvelope(False) = True Then
Dim oEnvelope = Controller.Envelope
Dim oErrors = oEnvelope.ValidateReceiverDocumentData()
If oErrors.Any Then
ShowValidationErrors(Resources.Envelope.Errors_when_saving_the_envelope, oErrors)
Return False
End If
Else
Return False
End If
Return True
End Function
Private Function SaveEnvelope(pWithValidation As Boolean) As Boolean Private Function SaveEnvelope(pWithValidation As Boolean) As Boolean
Dim oSubject = GetEditValueFromTextControl(txtSubject) Dim oSubject = GetEditValueFromTextControl(txtSubject)
Dim oMessage = GetEditValueFromTextControl(txtMessage) Dim oMessage = GetEditValueFromTextControl(txtMessage)

View File

@ -68,12 +68,7 @@ Public Class frmMain
Controller = New EnvelopeListController(State) Controller = New EnvelopeListController(State)
LoadEnvelopes() LoadEnvelopes()
LoadCompletedEnvelopes()
GridBuilder = New GridBuilder(ViewEnvelopes)
GridBuilder.SetDefaults(ViewEnvelopes)
GridBuilder.SetReadOnlyOptions(ViewEnvelopes)
Catch ex As Exception Catch ex As Exception
Logger.Error(ex) Logger.Error(ex)