diff --git a/EnvelopeGenerator.Common/Entities/EmailTemplate.vb b/EnvelopeGenerator.Common/Entities/EmailTemplate.vb index c472dc02..e7a14aa8 100644 --- a/EnvelopeGenerator.Common/Entities/EmailTemplate.vb +++ b/EnvelopeGenerator.Common/Entities/EmailTemplate.vb @@ -31,7 +31,7 @@ Public Class EmailTemplate Private Sub InitBodyTemplates() _DocumentReceivedBodyTemplate = New List(Of String) From { - "Guten Tag, ,", + "Guten Tag ,", "", " hat Ihnen ein Dokument zum gesendet.", "", @@ -44,7 +44,7 @@ Public Class EmailTemplate } _DocumentSignedBodyTemplate = New List(Of String) From { - "Guten Tag, ", + "Guten Tag ", "", "hiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang .", "", @@ -53,7 +53,7 @@ Public Class EmailTemplate } _DocumentDeletedBodyTemplate = New List(Of String) From { - "Guten Tag, ", + "Guten Tag ", "", "Der User hat den Umschlag gelöscht.", "", @@ -62,7 +62,7 @@ Public Class EmailTemplate } _DocumentCompletedBodyTemplate = New List(Of String) From { - "Guten Tag, ", + "Guten Tag ", "", "Der Signaturvorgang wurde erfolgreich abgeschlossen.", "Sie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser Email.", diff --git a/EnvelopeGenerator.Common/Services/ActionService.vb b/EnvelopeGenerator.Common/Services/ActionService.vb index 6dbd8b22..bbc90626 100644 --- a/EnvelopeGenerator.Common/Services/ActionService.vb +++ b/EnvelopeGenerator.Common/Services/ActionService.vb @@ -47,10 +47,6 @@ Public Class ActionService Return False End If - For Each oReceiver As EnvelopeReceiver In pEnvelope.Receivers - EmailService.SendEnvelopeDeletedEmail(pEnvelope, oReceiver) - Next - Return True End Function diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb b/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb index 8f213d82..a125872e 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb @@ -221,6 +221,8 @@ Partial Public Class frmEnvelopeEditor Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide + Me.RibbonControl1.ShowToolbarCustomizeItem = False + Me.RibbonControl1.Toolbar.ShowCustomizeItem = False ' 'btnSave ' diff --git a/EnvelopeGenerator.Form/frmFieldEditor.Designer.vb b/EnvelopeGenerator.Form/frmFieldEditor.Designer.vb index dc508f23..f23b1a46 100644 --- a/EnvelopeGenerator.Form/frmFieldEditor.Designer.vb +++ b/EnvelopeGenerator.Form/frmFieldEditor.Designer.vb @@ -134,6 +134,8 @@ Me.ribbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemComboBox1, Me.RepositoryItemLookUpEdit1}) Me.ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide + Me.ribbonControl1.ShowToolbarCustomizeItem = False + Me.ribbonControl1.Toolbar.ShowCustomizeItem = False ' 'BarButtonItem1 ' @@ -273,6 +275,7 @@ Me.Controls.Add(Me.barDockControlRight) Me.Controls.Add(Me.barDockControlBottom) Me.Controls.Add(Me.barDockControlTop) + Me.IconOptions.SvgImage = CType(resources.GetObject("frmFieldEditor.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.Name = "frmFieldEditor" Me.Ribbon = Me.ribbonControl1 CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).EndInit() diff --git a/EnvelopeGenerator.Form/frmFieldEditor.resx b/EnvelopeGenerator.Form/frmFieldEditor.resx index 306121e4..33af5ba5 100644 --- a/EnvelopeGenerator.Form/frmFieldEditor.resx +++ b/EnvelopeGenerator.Form/frmFieldEditor.resx @@ -294,12 +294,12 @@ BarListItem1 - - Empfänger - 159, 17 + + Empfänger + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 @@ -329,15 +329,6 @@ 0, 0 - - Allgemein - - - Empfänger - - - Signaturen - Start @@ -369,6 +360,18 @@ 1 + + 159, 17 + + + Allgemein + + + Empfänger + + + Signaturen + 17, 17 @@ -471,6 +474,24 @@ 1125, 658 + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGgCAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iRWRpdF9Db21tZW50IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3 + IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmx1ZXtmaWxsOiMxMTc3RDc7 + fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMywyMmgzdjZsNi02 + aDMuMkwyNiwxMS4yVjdjMC0wLjYtMC40LTEtMS0xSDNDMi40LDYsMiw2LjQsMiw3djE0QzIsMjEuNiwy + LjQsMjIsMywyMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDxwYXRoIGQ9Ik0yOSwxOWwtOCw4bC00LTRs + OC04TDI5LDE5eiBNMzAsMThsMS43LTEuN2MwLjQtMC40LDAuNC0xLDAtMS4zbC0yLjctMi43Yy0wLjQt + MC40LTEtMC40LTEuMywwTDI2LDE0TDMwLDE4eiAgIE0xNiwyNHY0aDRMMTYsMjR6IiBjbGFzcz0iQmx1 + ZSIgLz4NCjwvc3ZnPgs= + + CenterScreen diff --git a/EnvelopeGenerator.Form/frmMain.Designer.vb b/EnvelopeGenerator.Form/frmMain.Designer.vb index 6aa48823..a700b657 100644 --- a/EnvelopeGenerator.Form/frmMain.Designer.vb +++ b/EnvelopeGenerator.Form/frmMain.Designer.vb @@ -272,7 +272,9 @@ Partial Class frmMain Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide + Me.RibbonControl.ShowToolbarCustomizeItem = False Me.RibbonControl.StatusBar = Me.RibbonStatusBar + Me.RibbonControl.Toolbar.ShowCustomizeItem = False ' 'btnCreateEnvelope ' diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 0b73362a..18d0f856 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -53,6 +53,14 @@ namespace EnvelopeGenerator.Web.Controllers string annotationData = await envelopeService.EnsureValidAnnotationData(Request); + envelopeService.InsertDocumentStatus(new DocumentStatus() + { + EnvelopeId = response.Envelope.Id, + ReceiverId = response.Receiver.Id, + Value = annotationData, + Status = Common.Constants.DocumentStatus.Signed + }); + var signResult = actionService?.SignEnvelope(response.Envelope, response.Receiver); return Ok(); diff --git a/EnvelopeGenerator.Web/Services/EnvelopeService.cs b/EnvelopeGenerator.Web/Services/EnvelopeService.cs index 773b7910..675602a7 100644 --- a/EnvelopeGenerator.Web/Services/EnvelopeService.cs +++ b/EnvelopeGenerator.Web/Services/EnvelopeService.cs @@ -10,6 +10,7 @@ namespace EnvelopeGenerator.Web.Services { private readonly ReceiverModel receiverModel; private readonly EnvelopeModel envelopeModel; + private readonly DocumentStatusModel documentStatusModel; public EnvelopeService(IConfiguration Config, LoggingService Logging, DatabaseService database) : base(Config, Logging) { @@ -22,6 +23,7 @@ namespace EnvelopeGenerator.Web.Services receiverModel = database.Models.receiverModel; envelopeModel = database.Models.envelopeModel; + documentStatusModel = database.Models.documentStatusModel; } public void EnsureValidEnvelopeKey(string envelopeKey) @@ -44,30 +46,41 @@ namespace EnvelopeGenerator.Web.Services public EnvelopeResponse LoadEnvelope(string pEnvelopeKey) { + logger.Debug("Loading Envelope by Key [{0}]", pEnvelopeKey); + Tuple result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey); var envelopeUuid = result.Item1; var receiverSignature = result.Item2; var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature); - Envelope? envelope = envelopeModel.GetByUuid(envelopeUuid); + Envelope? envelope = envelopeModel.GetByUuid(envelopeUuid); if (envelope == null) { + logger.Warn("Envelope not found"); throw new NullReferenceException("Envelope not found"); } + logger.Debug("Envelope loaded"); + if (envelope.Receivers == null) { + logger.Warn("Receivers for envelope not loaded"); throw new NullReferenceException("Receivers for envelope not loaded"); } + logger.Debug("Envelope receivers found: [{0}]", envelope.Receivers.Count); + EnvelopeReceiver? receiver = envelope.Receivers.Where(r => r.Id == receiverId).SingleOrDefault(); if (receiver == null) { + logger.Warn("Receiver not found"); throw new NullReferenceException("Receiver not found"); } + logger.Debug("Loading documents for receiver [{0}]", receiver.Email); + envelope.Documents = FilterElementsByReceiver(envelope, receiverId); return new() @@ -104,6 +117,8 @@ namespace EnvelopeGenerator.Web.Services await request.BodyReader.CopyToAsync(ms); var bytes = ms.ToArray(); + logger.Debug("Annotation data parsed, size: [{0}]", bytes.Length); + return Encoding.UTF8.GetString(bytes); } catch (Exception e) @@ -155,6 +170,12 @@ namespace EnvelopeGenerator.Web.Services return document; } + public bool InsertDocumentStatus(Common.DocumentStatus documentStatus) + { + logger.Debug("Saving annotation data.."); + return documentStatusModel.InsertOrUpdate(documentStatus); + } + public async Task GetDocumentContents(EnvelopeDocument document) { logger.Debug("Loading file [{0}]", document.Filepath);