This commit is contained in:
PitzM 2023-12-06 16:06:21 +01:00
commit e4545a90d4
8 changed files with 74 additions and 21 deletions

View File

@ -31,7 +31,7 @@ Public Class EmailTemplate
Private Sub InitBodyTemplates() Private Sub InitBodyTemplates()
_DocumentReceivedBodyTemplate = New List(Of String) From { _DocumentReceivedBodyTemplate = New List(Of String) From {
"Guten Tag, <NAME_RECEIVER>,", "Guten Tag <NAME_RECEIVER>,",
"", "",
"<NAME_SENDER> hat Ihnen ein Dokument zum <SIGNATURE_TYPE> gesendet.", "<NAME_SENDER> hat Ihnen ein Dokument zum <SIGNATURE_TYPE> gesendet.",
"", "",
@ -44,7 +44,7 @@ Public Class EmailTemplate
} }
_DocumentSignedBodyTemplate = New List(Of String) From { _DocumentSignedBodyTemplate = New List(Of String) From {
"Guten Tag, <NAME_RECEIVER>", "Guten Tag <NAME_RECEIVER>",
"", "",
"hiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang <DOCUMENT_TITLE>.", "hiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang <DOCUMENT_TITLE>.",
"", "",
@ -53,7 +53,7 @@ Public Class EmailTemplate
} }
_DocumentDeletedBodyTemplate = New List(Of String) From { _DocumentDeletedBodyTemplate = New List(Of String) From {
"Guten Tag, <NAME_RECEIVER>", "Guten Tag <NAME_RECEIVER>",
"", "",
"Der User <NAME_SENDER> hat den Umschlag <DOCUMENT_TITLE> gelöscht.", "Der User <NAME_SENDER> hat den Umschlag <DOCUMENT_TITLE> gelöscht.",
"", "",
@ -62,7 +62,7 @@ Public Class EmailTemplate
} }
_DocumentCompletedBodyTemplate = New List(Of String) From { _DocumentCompletedBodyTemplate = New List(Of String) From {
"Guten Tag, <NAME_RECEIVER>", "Guten Tag <NAME_RECEIVER>",
"", "",
"Der Signaturvorgang <DOCUMENT_TITLE> wurde erfolgreich abgeschlossen.", "Der Signaturvorgang <DOCUMENT_TITLE> wurde erfolgreich abgeschlossen.",
"Sie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser Email.", "Sie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser Email.",

View File

@ -47,10 +47,6 @@ Public Class ActionService
Return False Return False
End If End If
For Each oReceiver As EnvelopeReceiver In pEnvelope.Receivers
EmailService.SendEnvelopeDeletedEmail(pEnvelope, oReceiver)
Next
Return True Return True
End Function End Function

View File

@ -221,6 +221,8 @@ Partial Public Class frmEnvelopeEditor
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide Me.RibbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide
Me.RibbonControl1.ShowToolbarCustomizeItem = False
Me.RibbonControl1.Toolbar.ShowCustomizeItem = False
' '
'btnSave 'btnSave
' '

View File

@ -134,6 +134,8 @@
Me.ribbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemComboBox1, Me.RepositoryItemLookUpEdit1}) Me.ribbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemComboBox1, Me.RepositoryItemLookUpEdit1})
Me.ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide Me.ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide
Me.ribbonControl1.ShowToolbarCustomizeItem = False
Me.ribbonControl1.Toolbar.ShowCustomizeItem = False
' '
'BarButtonItem1 'BarButtonItem1
' '
@ -273,6 +275,7 @@
Me.Controls.Add(Me.barDockControlRight) Me.Controls.Add(Me.barDockControlRight)
Me.Controls.Add(Me.barDockControlBottom) Me.Controls.Add(Me.barDockControlBottom)
Me.Controls.Add(Me.barDockControlTop) Me.Controls.Add(Me.barDockControlTop)
Me.IconOptions.SvgImage = CType(resources.GetObject("frmFieldEditor.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.Name = "frmFieldEditor" Me.Name = "frmFieldEditor"
Me.Ribbon = Me.ribbonControl1 Me.Ribbon = Me.ribbonControl1
CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).EndInit()

View File

@ -294,12 +294,12 @@
<data name="BarListItem1.Caption" xml:space="preserve"> <data name="BarListItem1.Caption" xml:space="preserve">
<value>BarListItem1</value> <value>BarListItem1</value>
</data> </data>
<data name="BarButtonItem2.Caption" xml:space="preserve">
<value>Empfänger</value>
</data>
<metadata name="PopupMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="PopupMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>159, 17</value> <value>159, 17</value>
</metadata> </metadata>
<data name="BarButtonItem2.Caption" xml:space="preserve">
<value>Empfänger</value>
</data>
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
@ -329,15 +329,6 @@
<data name="ribbonControl1.Location" type="System.Drawing.Point, System.Drawing"> <data name="ribbonControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="ribbonPageGroup1.Text" xml:space="preserve">
<value>Allgemein</value>
</data>
<data name="RibbonPageGroup3.Text" xml:space="preserve">
<value>Empfänger</value>
</data>
<data name="RibbonPageGroup2.Text" xml:space="preserve">
<value>Signaturen</value>
</data>
<data name="ribbonPage1.Text" xml:space="preserve"> <data name="ribbonPage1.Text" xml:space="preserve">
<value>Start</value> <value>Start</value>
</data> </data>
@ -369,6 +360,18 @@
<data name="&gt;&gt;ribbonControl1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;ribbonControl1.ZOrder" xml:space="preserve">
<value>1</value> <value>1</value>
</data> </data>
<metadata name="PopupMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>159, 17</value>
</metadata>
<data name="ribbonPageGroup1.Text" xml:space="preserve">
<value>Allgemein</value>
</data>
<data name="RibbonPageGroup3.Text" xml:space="preserve">
<value>Empfänger</value>
</data>
<data name="RibbonPageGroup2.Text" xml:space="preserve">
<value>Signaturen</value>
</data>
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
@ -471,6 +474,24 @@
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>1125, 658</value> <value>1125, 658</value>
</data> </data>
<data name="frmFieldEditor.IconOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGgCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iRWRpdF9Db21tZW50IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmx1ZXtmaWxsOiMxMTc3RDc7
fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMywyMmgzdjZsNi02
aDMuMkwyNiwxMS4yVjdjMC0wLjYtMC40LTEtMS0xSDNDMi40LDYsMiw2LjQsMiw3djE0QzIsMjEuNiwy
LjQsMjIsMywyMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDxwYXRoIGQ9Ik0yOSwxOWwtOCw4bC00LTRs
OC04TDI5LDE5eiBNMzAsMThsMS43LTEuN2MwLjQtMC40LDAuNC0xLDAtMS4zbC0yLjctMi43Yy0wLjQt
MC40LTEtMC40LTEuMywwTDI2LDE0TDMwLDE4eiAgIE0xNiwyNHY0aDRMMTYsMjR6IiBjbGFzcz0iQmx1
ZSIgLz4NCjwvc3ZnPgs=
</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value> <value>CenterScreen</value>
</data> </data>

View File

@ -272,7 +272,9 @@ Partial Class frmMain
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide Me.RibbonControl.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide
Me.RibbonControl.ShowToolbarCustomizeItem = False
Me.RibbonControl.StatusBar = Me.RibbonStatusBar Me.RibbonControl.StatusBar = Me.RibbonStatusBar
Me.RibbonControl.Toolbar.ShowCustomizeItem = False
' '
'btnCreateEnvelope 'btnCreateEnvelope
' '

View File

@ -53,6 +53,14 @@ namespace EnvelopeGenerator.Web.Controllers
string annotationData = await envelopeService.EnsureValidAnnotationData(Request); 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); var signResult = actionService?.SignEnvelope(response.Envelope, response.Receiver);
return Ok(); return Ok();

View File

@ -10,6 +10,7 @@ namespace EnvelopeGenerator.Web.Services
{ {
private readonly ReceiverModel receiverModel; private readonly ReceiverModel receiverModel;
private readonly EnvelopeModel envelopeModel; private readonly EnvelopeModel envelopeModel;
private readonly DocumentStatusModel documentStatusModel;
public EnvelopeService(IConfiguration Config, LoggingService Logging, DatabaseService database) : base(Config, Logging) public EnvelopeService(IConfiguration Config, LoggingService Logging, DatabaseService database) : base(Config, Logging)
{ {
@ -22,6 +23,7 @@ namespace EnvelopeGenerator.Web.Services
receiverModel = database.Models.receiverModel; receiverModel = database.Models.receiverModel;
envelopeModel = database.Models.envelopeModel; envelopeModel = database.Models.envelopeModel;
documentStatusModel = database.Models.documentStatusModel;
} }
public void EnsureValidEnvelopeKey(string envelopeKey) public void EnsureValidEnvelopeKey(string envelopeKey)
@ -44,30 +46,41 @@ namespace EnvelopeGenerator.Web.Services
public EnvelopeResponse LoadEnvelope(string pEnvelopeKey) public EnvelopeResponse LoadEnvelope(string pEnvelopeKey)
{ {
logger.Debug("Loading Envelope by Key [{0}]", pEnvelopeKey);
Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey); Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey);
var envelopeUuid = result.Item1; var envelopeUuid = result.Item1;
var receiverSignature = result.Item2; var receiverSignature = result.Item2;
var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature); var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature);
Envelope? envelope = envelopeModel.GetByUuid(envelopeUuid); Envelope? envelope = envelopeModel.GetByUuid(envelopeUuid);
if (envelope == null) if (envelope == null)
{ {
logger.Warn("Envelope not found");
throw new NullReferenceException("Envelope not found"); throw new NullReferenceException("Envelope not found");
} }
logger.Debug("Envelope loaded");
if (envelope.Receivers == null) if (envelope.Receivers == null)
{ {
logger.Warn("Receivers for envelope not loaded");
throw new NullReferenceException("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(); EnvelopeReceiver? receiver = envelope.Receivers.Where(r => r.Id == receiverId).SingleOrDefault();
if (receiver == null) if (receiver == null)
{ {
logger.Warn("Receiver not found");
throw new NullReferenceException("Receiver not found"); throw new NullReferenceException("Receiver not found");
} }
logger.Debug("Loading documents for receiver [{0}]", receiver.Email);
envelope.Documents = FilterElementsByReceiver(envelope, receiverId); envelope.Documents = FilterElementsByReceiver(envelope, receiverId);
return new() return new()
@ -104,6 +117,8 @@ namespace EnvelopeGenerator.Web.Services
await request.BodyReader.CopyToAsync(ms); await request.BodyReader.CopyToAsync(ms);
var bytes = ms.ToArray(); var bytes = ms.ToArray();
logger.Debug("Annotation data parsed, size: [{0}]", bytes.Length);
return Encoding.UTF8.GetString(bytes); return Encoding.UTF8.GetString(bytes);
} }
catch (Exception e) catch (Exception e)
@ -155,6 +170,12 @@ namespace EnvelopeGenerator.Web.Services
return document; return document;
} }
public bool InsertDocumentStatus(Common.DocumentStatus documentStatus)
{
logger.Debug("Saving annotation data..");
return documentStatusModel.InsertOrUpdate(documentStatus);
}
public async Task<byte[]> GetDocumentContents(EnvelopeDocument document) public async Task<byte[]> GetDocumentContents(EnvelopeDocument document)
{ {
logger.Debug("Loading file [{0}]", document.Filepath); logger.Debug("Loading file [{0}]", document.Filepath);