diff --git a/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj b/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj
index 2c36e458..0f0839b7 100644
--- a/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj
+++ b/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj
@@ -136,8 +136,9 @@
-
-
+
+
+
@@ -150,6 +151,7 @@
+
@@ -167,9 +169,9 @@
Settings.settings
True
-
-
-
+
+
+
rptEnvelopeHistory.vb
diff --git a/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentExceptions.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentExceptions.vb
new file mode 100644
index 00000000..a43386cb
--- /dev/null
+++ b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentExceptions.vb
@@ -0,0 +1,52 @@
+Namespace Jobs.FinalizeDocument
+ Public Class FinalizeDocumentExceptions
+
+ Public Class MergeDocumentException
+ Inherits ApplicationException
+
+ Public Sub New(message As String)
+ MyBase.New(message)
+ End Sub
+
+ Public Sub New(message As String, innerException As Exception)
+ MyBase.New(message, innerException)
+ End Sub
+ End Class
+
+ Public Class BurnAnnotationException
+ Inherits ApplicationException
+
+ Public Sub New(message As String)
+ MyBase.New(message)
+ End Sub
+
+ Public Sub New(message As String, innerException As Exception)
+ MyBase.New(message, innerException)
+ End Sub
+ End Class
+
+ Public Class CreateReportException
+ Inherits ApplicationException
+
+ Public Sub New(message As String)
+ MyBase.New(message)
+ End Sub
+
+ Public Sub New(message As String, innerException As Exception)
+ MyBase.New(message, innerException)
+ End Sub
+ End Class
+ Public Class ExportDocumentException
+ Inherits ApplicationException
+
+ Public Sub New(message As String)
+ MyBase.New(message)
+ End Sub
+
+ Public Sub New(message As String, innerException As Exception)
+ MyBase.New(message, innerException)
+ End Sub
+ End Class
+
+ End Class
+End Namespace
diff --git a/EnvelopeGenerator.Common/Jobs/CertificateDocumentJob.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb
similarity index 54%
rename from EnvelopeGenerator.Common/Jobs/CertificateDocumentJob.vb
rename to EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb
index cd171756..29e5328e 100644
--- a/EnvelopeGenerator.Common/Jobs/CertificateDocumentJob.vb
+++ b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb
@@ -5,25 +5,31 @@ Imports GdPicture14
Imports Quartz
Imports System.Security.Cryptography
Imports System.IO
+Imports EnvelopeGenerator.Common.Jobs.FinalizeDocument.FinalizeDocumentExceptions
+Imports EnvelopeGenerator.Common.Jobs.FinalizeDocument
+Imports System.Web.Caching
+Imports System.Web.UI
Namespace Jobs
- Public Class CertificateDocumentJob
+ Public Class FinalizeDocumentJob
Implements IJob
- Private LicenseManager As New LicenseManager()
+ Private ReadOnly LicenseManager As New LicenseManager()
Private GdViewer As GdViewer
- Private ConfigModel As ConfigModel
- Private EnvelopeModel As EnvelopeModel
-
Private LogConfig As LogConfig
Private Logger As Logger
Private Database As MSSQLServer
Private Config As DbConfig
+ Private ConfigModel As ConfigModel
+ Private EnvelopeModel As EnvelopeModel
+ Private ReportModel As ReportModel
+
Private ActionService As ActionService
Private PDFBurner As PDFBurner
+ Private ReportCreator As ReportCreator
Private Class EnvelopeData
Public EnvelopeId As Integer
@@ -45,15 +51,19 @@ Namespace Jobs
GdViewer = New GdViewer()
LicenseManager.RegisterKEY(oGdPictureKey)
- Logger.Debug("Loading PDFBurner..")
- PDFBurner = New PDFBurner(LogConfig, oGdPictureKey)
-
Logger.Debug("Loading Database..")
Database = GetDatabase(pContext, LogConfig)
Logger.Debug("Loading Models & Services")
- InitializeModels()
- InitializeServices()
+ Dim oState = GetState()
+ InitializeModels(oState)
+ InitializeServices(oState)
+
+ Logger.Debug("Loading PDFBurner..")
+ PDFBurner = New PDFBurner(LogConfig, oGdPictureKey)
+
+ Logger.Debug("Loading ReportCreator..")
+ ReportCreator = New ReportCreator(LogConfig, oState)
Logger.Debug("Loading Configuration..")
Config = ConfigModel.LoadConfiguration()
@@ -65,130 +75,139 @@ Namespace Jobs
Dim oSql = $"SELECT * FROM TBSIG_ENVELOPE WHERE STATUS = {oCompleteStatus}"
Dim oTable = Database.GetDatatable(oSql)
-
Dim oEnvelopeIds As List(Of Integer) = oTable.Rows.Cast(Of DataRow).
Select(Function(r) r.Item("GUID")).
Cast(Of Integer).
ToList()
Logger.Info("Found [{0}] completed envelopes.", oEnvelopeIds.Count)
+ Dim oTotal As Integer = oEnvelopeIds.Count
+ Dim oCurrent As Integer = 1
For Each oId In oEnvelopeIds
- Logger.Info("Finalizing Envelope [{0}]", oId)
- Dim oEnvelopeData = GetEnvelopeData(oId)
+ Logger.Info("Finalizing Envelope [{0}] ({1}/{2})", oId, oCurrent, oTotal)
- If oEnvelopeData Is Nothing Then
- Logger.Warn("EnvelopeData could not be loaded for Envelope [{0}]!", oId)
+ Logger.Debug("Loading Envelope..")
+ Dim oEnvelope = EnvelopeModel.GetById(oId)
+
+ If oEnvelope Is Nothing Then
+ Logger.Warn("Envelope could not be loaded for Id [{0}]!", oId)
Throw New ArgumentNullException("EnvelopeData")
End If
- If GenerateFinalPDF(oEnvelopeData) = False Then
+ Logger.Debug("Loading Envelope Data..")
+ Dim oEnvelopeData = GetEnvelopeData(oId)
+
+ If oEnvelopeData Is Nothing Then
+ Logger.Warn("EnvelopeData could not be loaded for Id [{0}]!", oId)
+ Throw New ArgumentNullException("EnvelopeData")
+ End If
+
+ Logger.Debug("Burning Annotations to pdf")
+ Dim oBurnedDocument As Byte() = BurnAnnotationsToPdf(oEnvelopeData)
+ If oBurnedDocument Is Nothing Then
Logger.Warn("Document could not be finalized!")
Throw New ApplicationException("Document could not be finalized")
End If
- ' Dim oReport As Byte() = Await GenerateReportPdf(oId)
- ' MergeDocuments()
+ Logger.Debug("Creating report..")
+ Dim oReport As Byte() = ReportCreator.CreateReport(oEnvelope)
- Dim oEnvelope = EnvelopeModel.GetById(oId)
- If oEnvelope Is Nothing Then
- Logger.Warn("Envelope could not loaded!")
- Throw New ApplicationException("Envelope could not loaded!")
- End If
+ Logger.Debug("Merging documents..")
+ Dim oMergedDocument As Byte() = MergeDocuments(oBurnedDocument, oReport)
+ Dim oOutputDirectoryPath = Config.ExportPath
+ Dim oOutputFilePath = Path.Combine(oOutputDirectoryPath, $"{oEnvelope.Uuid}.pdf")
+
+ Logger.Info("Writing finalized Pdf to disk..")
+ Logger.Info("Output path is [{0}]", oOutputFilePath)
+
+ Try
+ File.WriteAllBytes(oOutputFilePath, oMergedDocument)
+ Catch ex As Exception
+ Throw New ExportDocumentException("Could not export final document to disk!", ex)
+ Logger.Error(ex)
+ End Try
+
+ Logger.Debug("Setting envelope status..")
If ActionService.FinalizeEnvelope(oEnvelope) = False Then
Logger.Warn("Envelope could not be finalized!")
Throw New ApplicationException("Envelope could not be finalized")
End If
+ oCurrent += 1
Logger.Info("Envelope finalized!")
Next
Logger.Info("Completed job {0} successfully!", JobId)
+ Catch ex As MergeDocumentException
+ Logger.Warn("Certificate Document job failed at step: Merging documents!")
+ Logger.Error(ex)
Catch ex As Exception
Logger.Warn("Certificate Document job failed!")
Logger.Error(ex)
End Try
+
+ Logger.Info("Job execution for [{0}] ended", JobId)
End Function
- Private Function MergeDocuments(pDocumentPath As String, pReport As Byte())
+ Private Function MergeDocuments(pDocument As Byte(), pReport As Byte()) As Byte()
+ Using oDocumentStream As New MemoryStream(pDocument)
+ Using oReportStream As New MemoryStream(pReport)
+ Using oFinalStream As New MemoryStream()
+ Using oDocumentPDF As New GdPicturePDF()
+ Using oReportPDF As New GdPicturePDF()
- Using oGdPicturePDF As New GdPicturePDF()
- Using oGdPicturePDFReport As New GdPicturePDF()
- Using oStream As New MemoryStream(pReport)
+ ' Load the source file into memory
+ oDocumentPDF.LoadFromStream(oDocumentStream, True)
+ If oDocumentPDF.GetStat() Then
+ Throw New MergeDocumentException($"Document could not be loaded: {oDocumentPDF.GetStat}")
+ End If
- ' Load the source file into memory
- If oGdPicturePDF.LoadFromFile(pDocumentPath, True) <> GdPictureStatus.OK Then
- Throw New ApplicationException("Document could not be loaded!")
- End If
+ ' Load the report file into memory
+ oReportPDF.LoadFromStream(oReportStream, True)
+ If oDocumentPDF.GetStat() Then
+ Throw New MergeDocumentException($"Report could not be loaded: {oDocumentPDF.GetStat}")
+ End If
- ' Load the report file into memory
- If oGdPicturePDFReport.LoadFromStream(oStream, True) <> GdPictureStatus.OK Then
- Throw New ApplicationException("Report could not be loaded!")
- End If
+ ' Merge the documents
+ Dim oMergedPDF = oDocumentPDF.Merge2Documents(oDocumentPDF, oReportPDF)
+ If oDocumentPDF.GetStat() Then
+ Throw New MergeDocumentException($"Documents could not be merged: {oDocumentPDF.GetStat}")
+ End If
- If oGdPicturePDF.ClonePages(oGdPicturePDFReport, "*") = GdPictureStatus.OK Then
- Throw New ApplicationException("Report could not be loaded!")
- End If
+ oMergedPDF.SaveToStream(oFinalStream)
+ Return oFinalStream.ToArray()
+ End Using
+ End Using
End Using
End Using
End Using
End Function
- Private Function GenerateFinalPDF(pData As EnvelopeData) As Boolean
+ Private Function BurnAnnotationsToPdf(pData As EnvelopeData) As Byte()
Dim pEnvelopeId = pData.EnvelopeId
Logger.Info("Burning [{0}] signatures", pData.AnnotationData.Count)
Dim oAnnotations = pData.AnnotationData
Dim oInputPath = pData.DocumentPath
- Dim oOutputPath = Config.ExportPath
+
Logger.Info("Input path: [{0}]", oInputPath)
- Logger.Info("Output path: [{0}]", oOutputPath)
+ Dim oInputDocumentBuffer As Byte()
+ Try
+ oInputDocumentBuffer = File.ReadAllBytes(oInputPath)
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw New BurnAnnotationException("Source document could not be read from disk!", ex)
+ End Try
- Dim oBurnResult = PDFBurner.BurnInstantJSONAnnotationsToPDF(oInputPath, oAnnotations, oOutputPath)
-
- If oBurnResult = False Then
- Logger.Warn("PDF Could not be burned for Envelope [{0}]!", pEnvelopeId)
- Return False
- End If
-
- Return True
+ Return PDFBurner.BurnInstantJSONAnnotationsToPDF(oInputDocumentBuffer, oAnnotations)
End Function
- 'Private Async Function GenerateReportPdf(pEnvelopeId As Integer) As Task(Of Byte())
- ' Dim oSql As String = $"SELECT * FROM VWSIG_ENVELOPE_REPORT WHERE ENVELOPE_ID = {pEnvelopeId}"
- ' Dim oTable As DataTable = Database.GetDatatable(oSql)
- ' Dim oItems = GetReportSource(oTable)
-
- ' If oItems.Count = 0 Then
- ' Return Nothing
- ' End If
-
- ' Dim oState As New State() With {
- ' .Database = Database,
- ' .LogConfig = LogConfig
- ' }
- ' EnvelopeModel = New EnvelopeModel(oState)
- ' Dim oEnvelope = EnvelopeModel.GetById(pEnvelopeId)
-
- ' Dim oCreator As New ReportCreator(oEnvelope)
- ' Dim oBuffer = Await oCreator.CreateReport(oItems)
-
- ' Return oBuffer
- 'End Function
-
- 'Private Function GetReportSource(pDataTable As DataTable) As List(Of ReportItem)
- ' Return pDataTable.Rows.
- ' Cast(Of DataRow).
- ' Select(AddressOf ToReportItem).
- ' OrderByDescending(Function(r) r.ItemDate).
- ' ToList()
- 'End Function
-
Private Function GetEnvelopeData(pEnvelopeId As Integer) As EnvelopeData
Dim oSql = $"SELECT T.GUID, T2.FILEPATH FROM [dbo].[TBSIG_ENVELOPE] T
JOIN TBSIG_ENVELOPE_DOCUMENT T2 ON T.GUID = T2.ENVELOPE_ID
@@ -210,6 +229,7 @@ Namespace Jobs
Return oData
End Function
+
Private Function GetAnnotationData(pEnvelopeId As Integer) As List(Of String)
Dim oSql = $"SELECT VALUE FROM TBSIG_DOCUMENT_STATUS WHERE ENVELOPE_ID = {pEnvelopeId}"
Dim oTable As DataTable = Database.GetDatatable(oSql)
@@ -221,26 +241,14 @@ Namespace Jobs
End Function
- Private Function ToReportItem(pRow As DataRow) As ReportItem
- Return New ReportItem() With {
- .EnvelopeId = pRow.Item("ENVELOPE_ID"),
- .EnvelopeTitle = pRow.ItemEx("HEAD_TITLE", String.Empty),
- .EnvelopeSubject = pRow.ItemEx("HEAD_SUBJECT", String.Empty),
- .ItemDate = pRow.ItemEx(Of Date)("POS_WHEN", Nothing),
- .ItemStatus = pRow.ItemEx("POS_STATUS", 0),
- .ItemUserReference = pRow.ItemEx("POS_WHO", "")
- }
- End Function
-
- Private Sub InitializeServices()
- Dim oState = GetState()
- ActionService = New ActionService(oState)
+ Private Sub InitializeServices(pState As State)
+ ActionService = New ActionService(pState)
End Sub
- Private Sub InitializeModels()
- Dim oState = GetState()
- ConfigModel = New ConfigModel(oState)
- EnvelopeModel = New EnvelopeModel(oState)
+ Private Sub InitializeModels(pState As State)
+ ConfigModel = New ConfigModel(pState)
+ EnvelopeModel = New EnvelopeModel(pState)
+ ReportModel = New ReportModel(pState)
End Sub
Private Function GetDatabase(pContext As IJobExecutionContext, pLogConfig As LogConfig) As MSSQLServer
diff --git a/EnvelopeGenerator.Common/Jobs/PDFBurner.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/PDFBurner.vb
similarity index 73%
rename from EnvelopeGenerator.Common/Jobs/PDFBurner.vb
rename to EnvelopeGenerator.Common/Jobs/FinalizeDocument/PDFBurner.vb
index bd63eb89..09e10a3b 100644
--- a/EnvelopeGenerator.Common/Jobs/PDFBurner.vb
+++ b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/PDFBurner.vb
@@ -4,8 +4,9 @@ Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports GdPicture14
Imports Newtonsoft.Json
+Imports EnvelopeGenerator.Common.Jobs.FinalizeDocument.FinalizeDocumentExceptions
-Namespace Jobs
+Namespace Jobs.FinalizeDocument
Public Class PDFBurner
Inherits BaseClass
@@ -26,47 +27,43 @@ Namespace Jobs
Manager = New AnnotationManager()
End Sub
- Public Function BurnInstantJSONAnnotationsToPDF(pSourceFilePath As String, pInstantJSONList As List(Of String), pDestinationDirectoryPath As String) As Boolean
+ Public Function BurnInstantJSONAnnotationsToPDF(pSourceBuffer As Byte(), pInstantJSONList As List(Of String)) As Byte()
Dim oResult As GdPictureStatus
- oResult = Manager.InitFromFile(pSourceFilePath)
- If oResult <> GdPictureStatus.OK Then
- Logger.Warn("Could not open file [{0}] for burning: [{1}]", pSourceFilePath, oResult.ToString)
- Return False
- End If
-
- For Each oJSON In pInstantJSONList
- If AddInstantJSONAnnotationToPDF(oJSON) = False Then
- Logger.Warn("Adding Annotation failed. Exiting")
- Return False
- End If
- Next
-
- Dim oFileInfo As New FileInfo(pSourceFilePath)
- Dim oDestinationFilePath As String = Path.Combine(pDestinationDirectoryPath, oFileInfo.Name)
- Logger.Debug("Export filepath: [{0}]", oDestinationFilePath)
-
Try
- oResult = Manager.BurnAnnotationsToPage(RemoveInitialAnnots:=True, VectorMode:=True)
- If oResult <> GdPictureStatus.OK Then
- Logger.Warn("Could not burn annotations to file file [{0}]: [{1}]", pSourceFilePath, oResult.ToString)
- Return False
- End If
+ Using oSourceStream As New MemoryStream(pSourceBuffer)
+ oResult = Manager.InitFromStream(oSourceStream)
+ If oResult <> GdPictureStatus.OK Then
+ Throw New BurnAnnotationException($"Could not open document for burning: [{oResult}]")
+ End If
- oResult = Manager.SaveDocumentToPDF(oDestinationFilePath)
- If oResult <> GdPictureStatus.OK Then
- Logger.Warn("Could not save file [{0}] to path [{1}]: [{2}]", oFileInfo.Name, oDestinationFilePath, oResult.ToString)
- Return False
- End If
+ For Each oJSON In pInstantJSONList
+ If AddInstantJSONAnnotationToPDF(oJSON) = False Then
+ Throw New BurnAnnotationException($"Adding Annotation failed")
+ End If
+ Next
- Manager.Close()
- Return True
+ oResult = Manager.BurnAnnotationsToPage(RemoveInitialAnnots:=True, VectorMode:=True)
+ If oResult <> GdPictureStatus.OK Then
+ Throw New BurnAnnotationException($"Could not burn annotations to file: [{oResult}]")
+ End If
+
+ Using oNewStream As New MemoryStream()
+ oResult = Manager.SaveDocumentToPDF(oNewStream)
+ If oResult <> GdPictureStatus.OK Then
+ Throw New BurnAnnotationException($"Could not save document to stream: [{oResult}]")
+ End If
+
+ Manager.Close()
+
+ Return oNewStream.ToArray()
+ End Using
+ End Using
Catch ex As Exception
- Logger.Warn("Could not burn and save annotations to file [{0}]!", oDestinationFilePath)
Logger.Error(ex)
- Return False
+ Return Nothing
End Try
End Function
diff --git a/EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportCreator.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportCreator.vb
new file mode 100644
index 00000000..8b8c6ae9
--- /dev/null
+++ b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportCreator.vb
@@ -0,0 +1,91 @@
+Imports System.IO
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Base
+Imports EnvelopeGenerator.Common.Jobs.FinalizeDocument.FinalizeDocumentExceptions
+
+Public Class ReportCreator
+ Inherits BaseClass
+
+ Private Envelope As Envelope
+ Private ReadOnly ReportModel As ReportModel
+ Private ReadOnly EnvelopeModel As EnvelopeModel
+
+ Public Sub New(pLogConfig As LogConfig, pState As State)
+ MyBase.New(pLogConfig)
+
+ ReportModel = New ReportModel(pState)
+ EnvelopeModel = New EnvelopeModel(pState)
+ End Sub
+
+ Public Function CreateReport(pEnvelope As Envelope) As Byte()
+ Try
+ Logger.Debug("Loading report data..")
+ Dim oTable = ReportModel.List(pEnvelope.Id)
+ Dim oItems = GetReportSource(oTable)
+
+ Envelope = pEnvelope
+
+ If oItems.Count = 0 Then
+ Throw New CreateReportException("No report data found!")
+ End If
+
+ Logger.Debug("Creating report with [{0}] items..", oItems.Count)
+ Dim oBuffer = DoCreateReport(oItems)
+ Logger.Debug("Report created!")
+
+ Return oBuffer
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw New CreateReportException("Could not prepare report data!", ex)
+ End Try
+ End Function
+
+ Private Function GetReportSource(pDataTable As DataTable) As List(Of ReportItem)
+ Logger.Debug("Preparing report data")
+ Return pDataTable.Rows.
+ Cast(Of DataRow).
+ Select(AddressOf ToReportItem).
+ OrderByDescending(Function(r) r.ItemDate).
+ ToList()
+ End Function
+
+ Private Function DoCreateReport(pReportItems As List(Of ReportItem)) As Byte()
+ Dim oItems = pReportItems.Select(AddressOf MergeEnvelope).ToList()
+ Dim oSource As New ReportSource With {.Items = oItems}
+ Dim oReport As New rptEnvelopeHistory() With {.DataSource = oSource, .DataMember = "Items"}
+
+ Logger.Debug("Creating report in memory..")
+ oReport.CreateDocument()
+
+ Logger.Debug("Exporting report to stream..")
+ Using oStream As New MemoryStream()
+ oReport.ExportToPdf(oStream)
+
+ Logger.Debug("Writing report to buffer..")
+ Return oStream.ToArray()
+ End Using
+ End Function
+
+ Private Function MergeEnvelope(pItem As ReportItem) As ReportItem
+ If pItem.Envelope Is Nothing Then
+ pItem.Envelope = Envelope
+ End If
+ Return pItem
+ End Function
+
+ Private Function ToReportItem(pRow As DataRow) As ReportItem
+ Try
+ Return New ReportItem() With {
+ .EnvelopeId = pRow.Item("ENVELOPE_ID"),
+ .EnvelopeTitle = pRow.ItemEx("HEAD_TITLE", String.Empty),
+ .EnvelopeSubject = pRow.ItemEx("HEAD_SUBJECT", String.Empty),
+ .ItemDate = pRow.ItemEx(Of Date)("POS_WHEN", Nothing),
+ .ItemStatus = pRow.ItemEx("POS_STATUS", 0),
+ .ItemUserReference = pRow.ItemEx("POS_WHO", "")
+ }
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw New CreateReportException("Could not read data from database!", ex)
+ End Try
+ End Function
+End Class
diff --git a/EnvelopeGenerator.Common/Reports/ReportItem.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportItem.vb
similarity index 100%
rename from EnvelopeGenerator.Common/Reports/ReportItem.vb
rename to EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportItem.vb
diff --git a/EnvelopeGenerator.Common/Reports/ReportSource.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportSource.vb
similarity index 100%
rename from EnvelopeGenerator.Common/Reports/ReportSource.vb
rename to EnvelopeGenerator.Common/Jobs/FinalizeDocument/ReportSource.vb
diff --git a/EnvelopeGenerator.Common/Models/ReportModel.vb b/EnvelopeGenerator.Common/Models/ReportModel.vb
new file mode 100644
index 00000000..a846b423
--- /dev/null
+++ b/EnvelopeGenerator.Common/Models/ReportModel.vb
@@ -0,0 +1,14 @@
+Public Class ReportModel
+ Inherits BaseModel
+
+ Public Sub New(pState As State)
+ MyBase.New(pState)
+ End Sub
+
+ Public Function List(pEnvelopeId As Integer) As DataTable
+ Dim oSql As String = $"SELECT * FROM VWSIG_ENVELOPE_REPORT WHERE ENVELOPE_ID = {pEnvelopeId}"
+ Dim oTable As DataTable = Database.GetDatatable(oSql)
+
+ Return oTable
+ End Function
+End Class
diff --git a/EnvelopeGenerator.Common/Reports/ReportCreator.vb b/EnvelopeGenerator.Common/Reports/ReportCreator.vb
deleted file mode 100644
index 09fe32c4..00000000
--- a/EnvelopeGenerator.Common/Reports/ReportCreator.vb
+++ /dev/null
@@ -1,30 +0,0 @@
-Imports System.IO
-Imports DevExpress.XtraPrinting
-
-Public Class ReportCreator
- Private Envelope As Envelope
-
- Public Sub New(pEnvelope As Envelope)
- Envelope = pEnvelope
- End Sub
-
- Public Async Function CreateReport(pReportItems As List(Of ReportItem)) As Task(Of Byte())
- Dim oItems = pReportItems.Select(AddressOf MergeEnvelope).ToList()
- Dim oSource As New ReportSource With {.Items = oItems}
- Dim oReport As New rptEnvelopeHistory() With {.DataSource = oSource, .DataMember = "Items"}
-
- Await oReport.CreateDocumentAsync()
-
- Using oStream As New MemoryStream()
- Await oReport.ExportToPdfAsync(oStream, New PdfExportOptions)
- Return oStream.ToArray()
- End Using
- End Function
-
- Private Function MergeEnvelope(pItem As ReportItem) As ReportItem
- If pItem.Envelope Is Nothing Then
- pItem.Envelope = Envelope
- End If
- Return pItem
- End Function
-End Class
diff --git a/EnvelopeGenerator.Common/Strings/Envelope.en.resx b/EnvelopeGenerator.Common/Strings/Envelope.en.resx
index 9c4738bf..cc8efa00 100644
--- a/EnvelopeGenerator.Common/Strings/Envelope.en.resx
+++ b/EnvelopeGenerator.Common/Strings/Envelope.en.resx
@@ -156,6 +156,9 @@
Envelope Invitations Sent
+
+ Overview
+
The invitations were successfully prepared for dispatch.
@@ -220,7 +223,7 @@
Signature
- Signature Editor
+ Signature-Editor
The envelope could not be deleted!
diff --git a/EnvelopeGenerator.Common/Strings/Envelope.resx b/EnvelopeGenerator.Common/Strings/Envelope.resx
index 58e5c8a3..60c875f6 100644
--- a/EnvelopeGenerator.Common/Strings/Envelope.resx
+++ b/EnvelopeGenerator.Common/Strings/Envelope.resx
@@ -156,6 +156,9 @@
Die Einladungen wurden versendet
+
+ Übersicht
+
Die Einladungen wurden erfolgreich zum Versand bereitgestellt.
@@ -220,7 +223,7 @@
Signatur
- Signatur Editor
+ Signatur-Editor
Der Umschlag konnte nicht gelöscht werden!
diff --git a/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb b/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb
index af9ddbca..b069d09b 100644
--- a/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb
+++ b/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb
@@ -190,6 +190,15 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Sucht eine lokalisierte Zeichenfolge, die Übersicht ähnelt.
+ '''
+ Public Shared ReadOnly Property Envelope_Overview() As String
+ Get
+ Return ResourceManager.GetString("Envelope Overview", resourceCulture)
+ End Get
+ End Property
+
'''
''' Sucht eine lokalisierte Zeichenfolge, die Die Einladungen wurden erfolgreich zum Versand bereitgestellt. ähnelt.
'''
@@ -371,7 +380,7 @@ Namespace My.Resources
End Property
'''
- ''' Sucht eine lokalisierte Zeichenfolge, die Signatur Editor ähnelt.
+ ''' Sucht eine lokalisierte Zeichenfolge, die Signatur-Editor ähnelt.
'''
Public Shared ReadOnly Property Signature_Editor() As String
Get