Merge branch 'master' of http://git.dd:3000/AppStd/EnvelopeGenerator
This commit is contained in:
commit
e4545a90d4
@ -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.",
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
'
|
'
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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=">>ribbonControl1.ZOrder" xml:space="preserve">
|
<data name=">>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>
|
||||||
|
|||||||
2
EnvelopeGenerator.Form/frmMain.Designer.vb
generated
2
EnvelopeGenerator.Form/frmMain.Designer.vb
generated
@ -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
|
||||||
'
|
'
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user