diff --git a/EnvelopeGenerator.Common/Constants.vb b/EnvelopeGenerator.Common/Constants.vb index 02451f2b..9fa37179 100644 --- a/EnvelopeGenerator.Common/Constants.vb +++ b/EnvelopeGenerator.Common/Constants.vb @@ -5,8 +5,8 @@ Created = 0 Saved = 1 Sent = 2 - PartSigned = 3 - CompleteSigned = 4 + PartlySigned = 3 + CompletelySigned = 4 End Enum Public Enum ElementStatus diff --git a/EnvelopeGenerator.Common/Entities/Envelope.vb b/EnvelopeGenerator.Common/Entities/Envelope.vb index b0b88607..ba7bc24e 100644 --- a/EnvelopeGenerator.Common/Entities/Envelope.vb +++ b/EnvelopeGenerator.Common/Entities/Envelope.vb @@ -55,6 +55,21 @@ Return oErrors 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 Try Dim oAddress = New System.Net.Mail.MailAddress(pEmailAddress) diff --git a/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb b/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb index 1f66aeb8..b6831215 100644 --- a/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb +++ b/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb @@ -2,7 +2,7 @@ Imports EnvelopeGenerator.Common.Constants Public Class EnvelopeReceiver - Public Property Id As Integer + Public Property Id As Integer = 0 Public Property UserId As Integer Public Property Signature As String diff --git a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb index e21df4c1..63df340d 100644 --- a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb +++ b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb @@ -59,7 +59,7 @@ Public Class EnvelopeModel Public Function List() As IEnumerable(Of Envelope) 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) Return oTable?.Rows.Cast(Of DataRow). @@ -73,7 +73,7 @@ Public Class EnvelopeModel Public Function ListCompleted() As IEnumerable(Of Envelope) 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) Return oTable?.Rows.Cast(Of DataRow). diff --git a/EnvelopeGenerator.Common/Strings/Envelope.resx b/EnvelopeGenerator.Common/Strings/Envelope.resx index 2afac508..898ccfde 100644 --- a/EnvelopeGenerator.Common/Strings/Envelope.resx +++ b/EnvelopeGenerator.Common/Strings/Envelope.resx @@ -154,7 +154,7 @@ Empfänger {0} hat keine gültige Email Addresse. - Missing Documents + Fehlendes Dokument Es muss mindestens ein Signaturfeld gesetzt werden @@ -163,13 +163,13 @@ Für den Empfänger {0} gibt es noch kein Signaturfeld - Missing Message + Fehlende Nachricht - Missing Receivers + Fehlende Empfänger - Missing Subject + Fehlender Betreff Es ist nur eine Datei zulässig! diff --git a/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb b/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb index de39628a..2854a778 100644 --- a/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb +++ b/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb @@ -173,7 +173,7 @@ Namespace My.Resources End Property ''' - ''' Sucht eine lokalisierte Zeichenfolge, die Missing Documents ähnelt. + ''' Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt. ''' Public Shared ReadOnly Property Missing_Documents() As String Get @@ -200,7 +200,7 @@ Namespace My.Resources End Property ''' - ''' Sucht eine lokalisierte Zeichenfolge, die Missing Message ähnelt. + ''' Sucht eine lokalisierte Zeichenfolge, die Fehlende Nachricht ähnelt. ''' Public Shared ReadOnly Property Missing_Message() As String Get @@ -209,7 +209,7 @@ Namespace My.Resources End Property ''' - ''' Sucht eine lokalisierte Zeichenfolge, die Missing Receivers ähnelt. + ''' Sucht eine lokalisierte Zeichenfolge, die Fehlende Empfänger ähnelt. ''' Public Shared ReadOnly Property Missing_Receivers() As String Get @@ -218,7 +218,7 @@ Namespace My.Resources End Property ''' - ''' Sucht eine lokalisierte Zeichenfolge, die Missing Subject ähnelt. + ''' Sucht eine lokalisierte Zeichenfolge, die Fehlender Betreff ähnelt. ''' Public Shared ReadOnly Property Missing_Subject() As String Get diff --git a/EnvelopeGenerator.Common/Strings/Model.Designer.vb b/EnvelopeGenerator.Common/Strings/Model.Designer.vb index a8e7e4c1..114f81dd 100644 --- a/EnvelopeGenerator.Common/Strings/Model.Designer.vb +++ b/EnvelopeGenerator.Common/Strings/Model.Designer.vb @@ -73,6 +73,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Vollständig Signiert ähnelt. + ''' + Friend Shared ReadOnly Property CompletelySigned() As String + Get + Return ResourceManager.GetString("CompletelySigned", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Vertrag ähnelt. ''' @@ -100,6 +109,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Teil-Signiert ähnelt. + ''' + Friend Shared ReadOnly Property PartlySigned() As String + Get + Return ResourceManager.GetString("PartlySigned", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die ReadAndSign ähnelt. ''' diff --git a/EnvelopeGenerator.Common/Strings/Model.resx b/EnvelopeGenerator.Common/Strings/Model.resx index c290f8b1..612f3c1c 100644 --- a/EnvelopeGenerator.Common/Strings/Model.resx +++ b/EnvelopeGenerator.Common/Strings/Model.resx @@ -120,6 +120,9 @@ Abgeschlossen + + Vollständig Signiert + Vertrag @@ -129,6 +132,9 @@ Entwurf + + Teil-Signiert + ReadAndSign diff --git a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb index d078cdef..55aa097d 100644 --- a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb +++ b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb @@ -265,21 +265,20 @@ Public Class EnvelopeEditorController Dim oExistingReceivers As List(Of EnvelopeReceiver) = ReceiverModel.ListReceivers(pCurrentReceivers) Dim oExistingAddresses = oExistingReceivers.Select(Function(r) r.Email) + ' Neue Empfänger Dim oNewReceivers = pCurrentReceivers. Where(Function(r) Not oExistingAddresses.Contains(r.Email)).ToList() - For Each oReceiver In oNewReceivers - oReceiver.Id = 0 - Next - + ' Empfänger, die bereits einmal verwendet wurden For Each oCurrentReceiver In pCurrentReceivers If oCurrentReceiver.Id = 0 Then - Dim oExistingReceiver As EnvelopeReceiver = oExistingReceivers.Where(Function(r) r.Email = oCurrentReceiver.Email).First() - oCurrentReceiver.Id = oExistingReceiver.Id + Dim oExistingReceiver As EnvelopeReceiver = oExistingReceivers.Where(Function(r) r.Email.Equals(oCurrentReceiver.Email, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault() + If oExistingReceiver IsNot Nothing Then + oCurrentReceiver.Id = oExistingReceiver.Id + End If End If Next - Dim oConnection = Database.GetConnection() Dim oTransaction = oConnection.BeginTransaction() diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb index 98c92506..2c0bf02c 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb @@ -1,5 +1,4 @@ Imports System.ComponentModel -Imports System.Runtime.Remoting.Messaging Imports DevExpress.XtraEditors Imports DevExpress.XtraGrid Imports DevExpress.XtraGrid.Views.Grid @@ -117,12 +116,15 @@ Partial Public Class frmEnvelopeEditor Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Try + If SaveEnvelopeWithReceiverDocumentValidation() = False Then + Return + End If + If ViewDocuments.GetSelectedRows().Count > 0 Then Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument) Dim oGDPictureKey As String = "21182889975216572111813147150675976632" - If SaveEnvelopeWithOutValidation() Then - Dim oForm As New frmFieldEditor() With { + Dim oForm As New frmFieldEditor() With { .Document = Controller.Envelope.Documents. Where(Function(d) d.Filename = oDocument.Filename). SingleOrDefault(), @@ -130,8 +132,8 @@ Partial Public Class frmEnvelopeEditor .Receivers = Receivers.ToList, .State = State } - oForm.ShowDialog() - End If + oForm.ShowDialog() + End If Catch ex As Exception Logger.Error(ex) @@ -148,6 +150,26 @@ Partial Public Class frmEnvelopeEditor Return SaveEnvelope(False) End Function + ''' + ''' Speichert den Envelope und prüft + ''' ob Receiver und Dokument vorhanden ist. + ''' + 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 Dim oSubject = GetEditValueFromTextControl(txtSubject) Dim oMessage = GetEditValueFromTextControl(txtMessage) diff --git a/EnvelopeGenerator.Form/frmMain.vb b/EnvelopeGenerator.Form/frmMain.vb index 60767237..4a655cbb 100644 --- a/EnvelopeGenerator.Form/frmMain.vb +++ b/EnvelopeGenerator.Form/frmMain.vb @@ -68,12 +68,7 @@ Public Class frmMain Controller = New EnvelopeListController(State) LoadEnvelopes() - - - GridBuilder = New GridBuilder(ViewEnvelopes) - GridBuilder.SetDefaults(ViewEnvelopes) - GridBuilder.SetReadOnlyOptions(ViewEnvelopes) - + LoadCompletedEnvelopes() Catch ex As Exception Logger.Error(ex)