diff --git a/EnvelopeGenerator.Jobs/Class1.cs b/EnvelopeGenerator.Jobs/Class1.cs deleted file mode 100644 index aaa0640b..00000000 --- a/EnvelopeGenerator.Jobs/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace EnvelopeGenerator.Jobs -{ - public class Class1 - { - - } -} diff --git a/EnvelopeGenerator.Jobs/EnvelopeGenerator.Jobs.csproj b/EnvelopeGenerator.Jobs/EnvelopeGenerator.Jobs.csproj index 1456f1ac..02604ab8 100644 --- a/EnvelopeGenerator.Jobs/EnvelopeGenerator.Jobs.csproj +++ b/EnvelopeGenerator.Jobs/EnvelopeGenerator.Jobs.csproj @@ -19,23 +19,4 @@ - - - PreserveNewest - - - - - - - - - - - - - - - - diff --git a/EnvelopeGenerator.Jobs/Jobs/APIBackendJobs/APIEnvelopeJob.cs b/EnvelopeGenerator.Jobs/Jobs/APIBackendJobs/APIEnvelopeJob.cs index 7b7df8f3..05b6f75d 100644 --- a/EnvelopeGenerator.Jobs/Jobs/APIBackendJobs/APIEnvelopeJob.cs +++ b/EnvelopeGenerator.Jobs/Jobs/APIBackendJobs/APIEnvelopeJob.cs @@ -7,7 +7,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Quartz; -namespace EnvelopeGenerator.CommonServices.Jobs.APIBackendJobs; +namespace EnvelopeGenerator.Jobs.APIBackendJobs; public class APIEnvelopeJob : IJob { diff --git a/EnvelopeGenerator.Jobs/Jobs/DataRowExtensions.cs b/EnvelopeGenerator.Jobs/Jobs/DataRowExtensions.cs index 2ec940e5..805f6f1f 100644 --- a/EnvelopeGenerator.Jobs/Jobs/DataRowExtensions.cs +++ b/EnvelopeGenerator.Jobs/Jobs/DataRowExtensions.cs @@ -1,7 +1,7 @@ using System; using System.Data; -namespace EnvelopeGenerator.CommonServices.Jobs; +namespace EnvelopeGenerator.Jobs; public static class DataRowExtensions { diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentExceptions.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentExceptions.cs index cd24ec74..847ab06b 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentExceptions.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentExceptions.cs @@ -1,4 +1,4 @@ -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public static class FinalizeDocumentExceptions { diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentJob.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentJob.cs index 4be4e3c9..2ddb4e1d 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentJob.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/FinalizeDocumentJob.cs @@ -4,15 +4,14 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument.FinalizeDocumentExceptions; using EnvelopeGenerator.Domain.Constants; using EnvelopeGenerator.Domain.Entities; using Microsoft.Data.SqlClient; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Logging.Abstractions; using Quartz; +using static EnvelopeGenerator.Jobs.FinalizeDocument.FinalizeDocumentExceptions; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class FinalizeDocumentJob : IJob { @@ -23,17 +22,16 @@ public class FinalizeDocumentJob : IJob private record ConfigSettings(string DocumentPath, string DocumentPathOrigin, string ExportPath); - public FinalizeDocumentJob() - : this(NullLogger.Instance) - { - } - - public FinalizeDocumentJob(ILogger logger) + public FinalizeDocumentJob( + ILogger logger, + PDFBurner pdfBurner, + PDFMerger pdfMerger, + ReportCreator reportCreator) { _logger = logger; - _pdfBurner = new PDFBurner(); - _pdfMerger = new PDFMerger(); - _reportCreator = new ReportCreator(); + _pdfBurner = pdfBurner; + _pdfMerger = pdfMerger; + _reportCreator = reportCreator; } public async Task Execute(IJobExecutionContext context) @@ -77,20 +75,22 @@ public class FinalizeDocumentJob : IJob continue; } + var data = envelopeData.Value; + var envelope = new Envelope { Id = envelopeId, - Uuid = envelopeData.EnvelopeUuid ?? string.Empty, - Title = envelopeData.Title ?? string.Empty, - FinalEmailToCreator = FinalEmailType.No, - FinalEmailToReceivers = FinalEmailType.No + Uuid = data.EnvelopeUuid ?? string.Empty, + Title = data.Title ?? string.Empty, + FinalEmailToCreator = (int)FinalEmailType.No, + FinalEmailToReceivers = (int)FinalEmailType.No }; - var burned = _pdfBurner.BurnAnnotsToPDF(envelopeData.DocumentBytes, envelopeData.AnnotationData, envelopeId); + var burned = _pdfBurner.BurnAnnotsToPDF(data.DocumentBytes, data.AnnotationData, envelopeId); var report = _reportCreator.CreateReport(connection, envelope); var merged = _pdfMerger.MergeDocuments(burned, report); - var outputDirectory = Path.Combine(config.ExportPath, envelopeData.ParentFolderUid); + var outputDirectory = Path.Combine(config.ExportPath, data.ParentFolderUid); Directory.CreateDirectory(outputDirectory); var outputPath = Path.Combine(outputDirectory, $"{envelope.Uuid}.pdf"); await File.WriteAllBytesAsync(outputPath, merged, context.CancellationToken); diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurner.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurner.cs index c140e247..942d608d 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurner.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurner.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; -using EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument.FinalizeDocumentExceptions; using iText.IO.Image; using iText.Kernel.Colors; using iText.Kernel.Pdf; @@ -11,8 +10,10 @@ using iText.Layout.Element; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Newtonsoft.Json; +using static EnvelopeGenerator.Jobs.FinalizeDocument.FinalizeDocumentExceptions; +using LayoutImage = iText.Layout.Element.Image; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class PDFBurner { @@ -110,17 +111,20 @@ public class PDFBurner } var page = pdf.GetPage(annotation.pageIndex + 1); - var canvas = new PdfCanvas(page); var bounds = annotation.bbox.Select(ToInches).ToList(); - var x = bounds[0]; - var y = bounds[1]; - var width = bounds[2]; - var height = bounds[3]; + var x = (float)bounds[0]; + var y = (float)bounds[1]; + var width = (float)bounds[2]; + var height = (float)bounds[3]; var imageBytes = Convert.FromBase64String(attachment.binary); var imageData = ImageDataFactory.Create(imageBytes); - canvas.AddImageAt(imageData, x, y, false) - .ScaleToFit(width, height); + var image = new LayoutImage(imageData) + .ScaleAbsolute(width, height) + .SetFixedPosition(annotation.pageIndex + 1, x, y); + + using var canvas = new Canvas(new PdfCanvas(page), page.GetPageSize()); + canvas.Add(image); } private void AddInkAnnotation(PdfDocument pdf, Annotation annotation) @@ -159,21 +163,31 @@ public class PDFBurner private void AddFormFieldValue(PdfDocument pdf, Annotation annotation, string value) { var bounds = annotation.bbox.Select(ToInches).ToList(); - var x = bounds[0]; - var y = bounds[1]; - var width = bounds[2]; - var height = bounds[3]; + var x = (float)bounds[0]; + var y = (float)bounds[1]; + var width = (float)bounds[2]; + var height = (float)bounds[3]; var page = pdf.GetPage(annotation.pageIndex + 1); var canvas = new Canvas(new PdfCanvas(page), page.GetPageSize()); - canvas.ShowTextAligned(new Paragraph(value) - .SetFontSize(_pdfBurnerParams.FontSize) - .SetFontColor(ColorConstants.BLACK) - .SetFontFamily(_pdfBurnerParams.FontName) - .SetItalic(_pdfBurnerParams.FontStyle.HasFlag(FontStyle.Italic)) - .SetBold(_pdfBurnerParams.FontStyle.HasFlag(FontStyle.Bold)), - x + _pdfBurnerParams.TopMargin, - y + _pdfBurnerParams.YOffset, + var paragraph = new Paragraph(value) + .SetFontSize(_pdfBurnerParams.FontSize) + .SetFontColor(ColorConstants.BLACK) + .SetFontFamily(_pdfBurnerParams.FontName); + + if (_pdfBurnerParams.FontStyle.HasFlag(FontStyle.Italic)) + { + paragraph.SetItalic(); + } + + if (_pdfBurnerParams.FontStyle.HasFlag(FontStyle.Bold)) + { + paragraph.SetBold(); + } + + canvas.ShowTextAligned(paragraph, + x + (float)_pdfBurnerParams.TopMargin, + y + (float)_pdfBurnerParams.YOffset, annotation.pageIndex + 1, iText.Layout.Properties.TextAlignment.LEFT, iText.Layout.Properties.VerticalAlignment.TOP, diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurnerParams.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurnerParams.cs index f708ca11..0b9536fa 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurnerParams.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFBurnerParams.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Drawing; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class PDFBurnerParams { diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFMerger.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFMerger.cs index 134c20be..2306fac7 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFMerger.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/PDFMerger.cs @@ -1,11 +1,11 @@ using System.IO; -using EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument.FinalizeDocumentExceptions; using iText.Kernel.Pdf; using iText.Kernel.Utils; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using static EnvelopeGenerator.Jobs.FinalizeDocument.FinalizeDocumentExceptions; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class PDFMerger { diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportCreator.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportCreator.cs index 5714deb2..3ba56c73 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportCreator.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportCreator.cs @@ -1,15 +1,15 @@ using System.Data; using System.IO; -using EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument.FinalizeDocumentExceptions; using EnvelopeGenerator.Domain.Entities; using iText.Kernel.Pdf; -using iText.Layout; using iText.Layout.Element; using Microsoft.Data.SqlClient; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using static EnvelopeGenerator.Jobs.FinalizeDocument.FinalizeDocumentExceptions; +using LayoutDocument = iText.Layout.Document; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class ReportCreator { @@ -32,7 +32,7 @@ public class ReportCreator using var stream = new MemoryStream(); using var writer = new PdfWriter(stream); using var pdf = new PdfDocument(writer); - using var document = new Document(pdf); + using var document = new LayoutDocument(pdf); document.Add(new Paragraph("Envelope Finalization Report").SetFontSize(16)); document.Add(new Paragraph($"Envelope Id: {envelope.Id}")); diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportItem.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportItem.cs index d81645c7..c8e0d52e 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportItem.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportItem.cs @@ -1,7 +1,7 @@ using EnvelopeGenerator.Domain.Constants; using EnvelopeGenerator.Domain.Entities; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class ReportItem { diff --git a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportSource.cs b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportSource.cs index 5cc3f12d..47afd920 100644 --- a/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportSource.cs +++ b/EnvelopeGenerator.Jobs/Jobs/FinalizeDocument/ReportSource.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument; +namespace EnvelopeGenerator.Jobs.FinalizeDocument; public class ReportSource {