@if (!isReadOnly)
@@ -62,7 +69,9 @@
- 0/@signatureCount @_localizer["Signatures"]
+ 0/@signatureCount @(isReadAndConfirm
+ ? _localizer["Confirmations"]
+ : _localizer["Signatures"])
}
diff --git a/EnvelopeGenerator.Web/appsettings.Mail.json b/EnvelopeGenerator.Web/appsettings.Mail.json
index 61dc2518..22b0e1be 100644
--- a/EnvelopeGenerator.Web/appsettings.Mail.json
+++ b/EnvelopeGenerator.Web/appsettings.Mail.json
@@ -8,7 +8,6 @@
"MailParams": {
"Placeholders": {
"[NAME_PORTAL]": "signFlow",
- "[SIGNATURE_TYPE]": "signieren",
"[REASON]": ""
}
}
diff --git a/EnvelopeGenerator.Web/wwwroot/js/annotation.js b/EnvelopeGenerator.Web/wwwroot/js/annotation.js
index 55b53758..debb5e88 100644
--- a/EnvelopeGenerator.Web/wwwroot/js/annotation.js
+++ b/EnvelopeGenerator.Web/wwwroot/js/annotation.js
@@ -275,7 +275,7 @@ async function createAnnotationFrameBlob(receiverName, receiverSignature, timest
ctx.fillStyle = 'black'
ctx.font = `${fontSize * scale}px sans-serif`
- ctx.fillText(localized.signedBy ?? 'Signed by', 15 * scale, 10 * scale)
+ ctx.fillText((READ_AND_CONFIRM ? localized.confirmedBy : localized.signedBy) ?? 'Signed by', 15 * scale, 10 * scale)
ctx.fillText(receiverName, 15 * scale, 60 * scale)
ctx.fillText(signatureString, 15 * scale, 70 * scale)
diff --git a/EnvelopeGenerator.Web/wwwroot/js/app.js b/EnvelopeGenerator.Web/wwwroot/js/app.js
index 3ae36e46..62a329e9 100644
--- a/EnvelopeGenerator.Web/wwwroot/js/app.js
+++ b/EnvelopeGenerator.Web/wwwroot/js/app.js
@@ -255,7 +255,7 @@ class App {
return Swal.fire({
title: localized.confirmation,
- html: `
${localized.sigAgree}
`,
+ html: `
${READ_AND_CONFIRM ? localized.confirmAgree : localized.sigAgree}
`,
icon: "question",
showCancelButton: true,
confirmButtonColor: "#3085d6",
diff --git a/EnvelopeGenerator.Web/wwwroot/js/app.min.js b/EnvelopeGenerator.Web/wwwroot/js/app.min.js
index c07a1e10..8d9a209a 100644
--- a/EnvelopeGenerator.Web/wwwroot/js/app.min.js
+++ b/EnvelopeGenerator.Web/wwwroot/js/app.min.js
@@ -1,3 +1,3 @@
const formatLocalized=(n,...t)=>typeof n=="string"?n.replace(/\{(\d+)\}/g,(n,i)=>t[i]??""):"";class App{constructor(n,t,i,r,u,f){this.container=f??`#${this.constructor.name.toLowerCase()}`;this.envelopeKey=n;this.pdfKit=null;this.currentDocument=t.envelope.documents[0];this.currentReceiver=t.receiver;this.signatureCount=t.envelope.documents[0].elements.length;this.envelopeReceiver=t;this.documentBytes=i;this.licenseKey=r;this.locale=u}async init(){if(this.pdfKit=await loadPSPDFKit(this.documentBytes,this.container,this.licenseKey,this.locale),addToolbarItems(this.pdfKit,this.handleClick.bind(this)),this.pdfKit.addEventListener("annotations.load",this.handleAnnotationsLoad.bind(this)),this.pdfKit.addEventListener("annotations.change",this.handleAnnotationsChange.bind(this)),this.pdfKit.addEventListener("annotations.create",this.handleAnnotationsCreate.bind(this)),this.pdfKit.addEventListener("annotations.willChange",()=>{Comp.ActPanel.Toggle()}),!READ_AND_CONFIRM)try{let n=await createAnnotations(this.currentDocument,this.envelopeReceiver.envelopeId,this.envelopeReceiver.receiverId);await this.pdfKit.create(n)}catch(n){console.error("Error loading annotations:",n)}READ_AND_CONFIRM||[...document.getElementsByClassName("btn_refresh")].forEach(n=>n.addEventListener("click",()=>this.handleClick("RESET")));[...document.getElementsByClassName("btn_complete")].forEach(n=>n.addEventListener("click",()=>this.handleClick("FINISH")));[...document.getElementsByClassName("btn_reject")].forEach(n=>n.addEventListener("click",()=>this.handleClick("REJECT")))}handleAnnotationsLoad(n){n.toJS()}handleAnnotationsChange(){}async handleAnnotationsCreate(n){const t=n.toJS()[0],i=!!t.formFieldName,r=!!t.isSignature;if(i===!1&&r===!0){const r=t.boundingBox.left-20,u=t.boundingBox.top-20,n=150,i=75,f=new Date,e=await createAnnotationFrameBlob(this.envelopeReceiver.name,this.currentReceiver.signature,f,n,i),o=await fetch(e),s=await o.blob(),h=await this.pdfKit.createAttachment(s),c=createImageAnnotation(new PSPDFKit.Geometry.Rect({left:r,top:u,width:n,height:i}),t.pageIndex,h,generateId(this.envelopeReceiver.envelopeId,this.envelopeReceiver.receiverId,this.fakeElementId--,"signed"));this.pdfKit.create(c)}}async handleClick(n){let t=!1;switch(n){case"RESET":t=await this.handleReset(null);Comp.SignatureProgress.SignedCount=0;t.isConfirmed&&Swal.fire({title:localized.success,text:localized.documentReset,icon:"info"});break;case"FINISH":t=await this.handleFinish(null);t==!0&&(window.location.href=`/Envelope/${this.envelopeKey}`);break;case"REJECT":Swal.fire({title:localized.rejection,html:`
${localized.rejectionReasonQ}
`,icon:"question",input:"text",inputAttributes:{autocapitalize:"off"},showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",confirmButtonText:localized.complete,cancelButtonText:localized.back,showLoaderOnConfirm:!0,preConfirm:async n=>{try{return await rejectEnvelope(n)}catch(t){Swal.showValidationMessage(`
Request failed: ${t}
- `)}},allowOutsideClick:()=>!Swal.isLoading()}).then(n=>{if(n.isConfirmed){const t=n.value;t.ok?reload():Swal.showValidationMessage(`Request failed: ${t.message}`)}});break;case"COPY_URL":const n=window.location.href.replace(/\/readonly/gi,"");navigator.clipboard.writeText(n).then(function(){bsNotify(localized.copyLinkSuccess,{alert_type:"success",delay:4,icon_name:"check_circle"})}).catch(function(){bsNotify(localized.copyLinkFailure??localized.unexpectedErrorTitle,{alert_type:"danger",delay:4,icon_name:"error"})});break;case"SHARE":Comp.ShareBackdrop.show();break;case"LOGOUT":await logout()}}async handleFinish(){let n=undefined;if(READ_AND_CONFIRM){const n=JSON.parse(sessionStorage.getItem("pspdf_all_pages_rendered")||"false")===!0;if(!n){const n=JSON.parse(sessionStorage.getItem("pspdf_unviewed_pages")||"[]"),t=n.length?formatLocalized(localized.viewRemainingPages,n.join(", ")):localized.viewAllPages;return await Swal.fire({title:localized.warning,text:t,icon:"warning"}),!1}}else{const i=await this.pdfKit.exportInstantJSON(),r=i.formFieldValues,u=r.filter(n=>isFieldRequired(n)),f=u.some(n=>n.value===undefined||n.value===null||n.value==="");if(f)return Swal.fire({title:localized.warning,text:localized.locationFieldsRequired,icon:"warning"}),!1;const e=new RegExp("^[a-zA-Z\\u0080-\\u024F]+(?:([\\ \\-\\']|(\\.\\ ))[a-zA-Z\\u0080-\\u024F]+)*$"),o=r.filter(n=>isCityField(n));for(var t of o)if(!IS_MOBILE_DEVICE&&!e.test(t.value))return Swal.fire({title:localized.warning,text:formatLocalized(localized.cityFormatInvalid,t.value),icon:"warning"}),!1;const s=await this.validateAnnotations(this.signatureCount);if(s===!1)return Swal.fire({title:localized.warning,text:localized.missingSignatures,icon:"warning"}),!1;n={instant:i,structured:mapSignature(i)}}return Swal.fire({title:localized.confirmation,html:`
${localized.sigAgree}
`,icon:"question",showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",confirmButtonText:localized.finalize,cancelButtonText:localized.back}).then(async t=>{if(t.isConfirmed){try{await this.pdfKit.save()}catch(i){return Swal.fire({title:localized.warning,text:localized.envelopeSignError,icon:"error"}),!1}try{const t=READ_AND_CONFIRM?await signEnvelope():await signEnvelope(n);if(t.ok)return!0;if(t.status===409)return Swal.fire({title:localized.warning,text:localized.envelopeUnavailable,icon:"warning"}),!1;if(t.status===423)Swal.fire({title:localized.info??localized.warning,text:localized.envelopeRejectedRedirect,icon:"info",timer:2e3,showConfirmButton:!1}).then(()=>{location.reload()});else throw new Error;}catch(i){return Swal.fire({title:localized.warning,text:localized.envelopeSignError,icon:"error"}),!1}}else return!1})}async validateAnnotations(n){const t=await getAnnotations(this.pdfKit),i=t.map(n=>n.toJS()).filter(n=>n.isSignature);return n<=i.length}async handleReset(){const n=Swal.fire({title:localized.resetConfirmTitle,text:localized.resetConfirmText,icon:"question",showCancelButton:!0});if(n.isConfirmed){const n=await deleteAnnotations(this.pdfKit)}return n}fakeElementId=0;}
\ No newline at end of file
+ `)}},allowOutsideClick:()=>!Swal.isLoading()}).then(n=>{if(n.isConfirmed){const t=n.value;t.ok?reload():Swal.showValidationMessage(`Request failed: ${t.message}`)}});break;case"COPY_URL":const n=window.location.href.replace(/\/readonly/gi,"");navigator.clipboard.writeText(n).then(function(){bsNotify(localized.copyLinkSuccess,{alert_type:"success",delay:4,icon_name:"check_circle"})}).catch(function(){bsNotify(localized.copyLinkFailure??localized.unexpectedErrorTitle,{alert_type:"danger",delay:4,icon_name:"error"})});break;case"SHARE":Comp.ShareBackdrop.show();break;case"LOGOUT":await logout()}}async handleFinish(){let n=undefined;if(READ_AND_CONFIRM){const n=JSON.parse(sessionStorage.getItem("pspdf_all_pages_rendered")||"false")===!0;if(!n){const n=JSON.parse(sessionStorage.getItem("pspdf_unviewed_pages")||"[]"),t=n.length?formatLocalized(localized.viewRemainingPages,n.join(", ")):localized.viewAllPages;return await Swal.fire({title:localized.warning,text:t,icon:"warning"}),!1}}else{const i=await this.pdfKit.exportInstantJSON(),r=i.formFieldValues,u=r.filter(n=>isFieldRequired(n)),f=u.some(n=>n.value===undefined||n.value===null||n.value==="");if(f)return Swal.fire({title:localized.warning,text:localized.locationFieldsRequired,icon:"warning"}),!1;const e=new RegExp("^[a-zA-Z\\u0080-\\u024F]+(?:([\\ \\-\\']|(\\.\\ ))[a-zA-Z\\u0080-\\u024F]+)*$"),o=r.filter(n=>isCityField(n));for(var t of o)if(!IS_MOBILE_DEVICE&&!e.test(t.value))return Swal.fire({title:localized.warning,text:formatLocalized(localized.cityFormatInvalid,t.value),icon:"warning"}),!1;const s=await this.validateAnnotations(this.signatureCount);if(s===!1)return Swal.fire({title:localized.warning,text:localized.missingSignatures,icon:"warning"}),!1;n={instant:i,structured:mapSignature(i)}}return Swal.fire({title:localized.confirmation,html:`
${READ_AND_CONFIRM?localized.confirmAgree:localized.sigAgree}
`,icon:"question",showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",confirmButtonText:localized.finalize,cancelButtonText:localized.back}).then(async t=>{if(t.isConfirmed){try{await this.pdfKit.save()}catch(i){return Swal.fire({title:localized.warning,text:localized.envelopeSignError,icon:"error"}),!1}try{const t=READ_AND_CONFIRM?await signEnvelope():await signEnvelope(n);if(t.ok)return!0;if(t.status===409)return Swal.fire({title:localized.warning,text:localized.envelopeUnavailable,icon:"warning"}),!1;if(t.status===423)Swal.fire({title:localized.info??localized.warning,text:localized.envelopeRejectedRedirect,icon:"info",timer:2e3,showConfirmButton:!1}).then(()=>{location.reload()});else throw new Error;}catch(i){return Swal.fire({title:localized.warning,text:localized.envelopeSignError,icon:"error"}),!1}}else return!1})}async validateAnnotations(n){const t=await getAnnotations(this.pdfKit),i=t.map(n=>n.toJS()).filter(n=>n.isSignature);return n<=i.length}async handleReset(){const n=Swal.fire({title:localized.resetConfirmTitle,text:localized.resetConfirmText,icon:"question",showCancelButton:!0});if(n.isConfirmed){const n=await deleteAnnotations(this.pdfKit)}return n}fakeElementId=0;}
\ No newline at end of file
diff --git a/EnvelopeGenerator.WorkerService/Configuration/WorkerSettings.cs b/EnvelopeGenerator.WorkerService/Configuration/WorkerSettings.cs
deleted file mode 100644
index dc4d2c91..00000000
--- a/EnvelopeGenerator.WorkerService/Configuration/WorkerSettings.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using EnvelopeGenerator.Jobs.FinalizeDocument;
-
-namespace EnvelopeGenerator.WorkerService.Configuration;
-
-public sealed class WorkerSettings
-{
- public string ConnectionString { get; set; } = string.Empty;
-
- public bool Debug { get; set; }
-
- public int IntervalMinutes { get; set; } = 1;
-
- public PDFBurnerParams PdfBurner { get; set; } = new();
-}
diff --git a/EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj b/EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj
deleted file mode 100644
index aec7186d..00000000
--- a/EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- net8.0
- enable
- enable
- dotnet-EnvelopeGenerator.WorkerService-0636abb8-6085-477d-9f56-1a9787e84dde
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/EnvelopeGenerator.WorkerService/Program.cs b/EnvelopeGenerator.WorkerService/Program.cs
deleted file mode 100644
index 03e8e055..00000000
--- a/EnvelopeGenerator.WorkerService/Program.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using EnvelopeGenerator.Domain.Constants;
-using EnvelopeGenerator.Jobs.APIBackendJobs;
-using EnvelopeGenerator.Jobs.FinalizeDocument;
-using EnvelopeGenerator.WorkerService;
-using EnvelopeGenerator.WorkerService.Configuration;
-using EnvelopeGenerator.WorkerService.Services;
-using Quartz;
-
-var builder = Host.CreateApplicationBuilder(args);
-
-builder.Services.Configure
(builder.Configuration.GetSection("WorkerSettings"));
-
-builder.Services.AddSingleton();
-builder.Services.AddSingleton(provider =>
-{
- var settings = provider.GetRequiredService>().Value;
- var logger = provider.GetRequiredService>();
- return new PDFBurner(logger, settings.PdfBurner);
-});
-builder.Services.AddSingleton();
-builder.Services.AddSingleton();
-
-builder.Services.AddQuartz(q =>
-{
- q.UseMicrosoftDependencyInjectionJobFactory();
- q.UseDefaultThreadPool(tp => tp.MaxConcurrency = 5);
-
- var settings = new WorkerSettings();
- builder.Configuration.GetSection("WorkerSettings").Bind(settings);
- var intervalMinutes = Math.Max(1, settings.IntervalMinutes);
-
- var finalizeJobKey = new JobKey("FinalizeDocumentJob");
- q.AddJob(opts => opts
- .WithIdentity(finalizeJobKey)
- .UsingJobData(Value.DATABASE, settings.ConnectionString));
-
- q.AddTrigger(opts => opts
- .ForJob(finalizeJobKey)
- .WithIdentity("FinalizeDocumentJob-trigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(intervalMinutes)
- .RepeatForever()));
-
- var apiJobKey = new JobKey("APIEnvelopeJob");
- q.AddJob(opts => opts
- .WithIdentity(apiJobKey)
- .UsingJobData(Value.DATABASE, settings.ConnectionString));
-
- q.AddTrigger(opts => opts
- .ForJob(apiJobKey)
- .WithIdentity("APIEnvelopeJob-trigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(intervalMinutes)
- .RepeatForever()));
-});
-
-builder.Services.AddQuartzHostedService(options =>
-{
- options.WaitForJobsToComplete = true;
-});
-
-builder.Services.AddHostedService();
-
-var host = builder.Build();
-host.Run();
diff --git a/EnvelopeGenerator.WorkerService/Properties/launchSettings.json b/EnvelopeGenerator.WorkerService/Properties/launchSettings.json
deleted file mode 100644
index ddb5ece8..00000000
--- a/EnvelopeGenerator.WorkerService/Properties/launchSettings.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/launchsettings.json",
- "profiles": {
- "EnvelopeGenerator.WorkerService": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "environmentVariables": {
- "DOTNET_ENVIRONMENT": "Development"
- }
- }
- }
-}
diff --git a/EnvelopeGenerator.WorkerService/Services/TempFileManager.cs b/EnvelopeGenerator.WorkerService/Services/TempFileManager.cs
deleted file mode 100644
index f98e1c09..00000000
--- a/EnvelopeGenerator.WorkerService/Services/TempFileManager.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System.IO;
-using Microsoft.Extensions.Logging;
-
-namespace EnvelopeGenerator.WorkerService.Services;
-
-public sealed class TempFileManager
-{
- private readonly ILogger _logger;
-
- public TempFileManager(ILogger logger)
- {
- _logger = logger;
- TempPath = Path.Combine(Path.GetTempPath(), "EnvelopeGenerator");
- }
-
- public string TempPath { get; }
-
- public Task CreateAsync(CancellationToken cancellationToken = default)
- {
- try
- {
- if (!Directory.Exists(TempPath))
- {
- Directory.CreateDirectory(TempPath);
- _logger.LogDebug("Created temp folder {TempPath}", TempPath);
- }
- else
- {
- CleanUpFiles();
- }
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "Failed to create temp folder {TempPath}", TempPath);
- throw;
- }
-
- return Task.CompletedTask;
- }
-
- public Task CleanupAsync(CancellationToken cancellationToken = default)
- {
- try
- {
- if (Directory.Exists(TempPath))
- {
- _logger.LogDebug("Deleting temp folder {TempPath}", TempPath);
- Directory.Delete(TempPath, recursive: true);
- }
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "Failed to clean up temp folder {TempPath}", TempPath);
- }
-
- return Task.CompletedTask;
- }
-
- private void CleanUpFiles()
- {
- foreach (var file in Directory.GetFiles(TempPath))
- {
- try
- {
- _logger.LogDebug("Deleting temp file {File}", file);
- File.Delete(file);
- }
- catch (Exception ex)
- {
- _logger.LogWarning(ex, "Failed to delete temp file {File}", file);
- }
- }
- }
-}
diff --git a/EnvelopeGenerator.WorkerService/Worker.cs b/EnvelopeGenerator.WorkerService/Worker.cs
deleted file mode 100644
index d88c3e63..00000000
--- a/EnvelopeGenerator.WorkerService/Worker.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using EnvelopeGenerator.WorkerService.Configuration;
-using EnvelopeGenerator.WorkerService.Services;
-using Microsoft.Data.SqlClient;
-using Microsoft.Extensions.Options;
-
-namespace EnvelopeGenerator.WorkerService;
-
-public class Worker : BackgroundService
-{
- private readonly ILogger _logger;
- private readonly WorkerSettings _settings;
- private readonly TempFileManager _tempFiles;
-
- public Worker(
- ILogger logger,
- IOptions settings,
- TempFileManager tempFiles)
- {
- _logger = logger;
- _settings = settings.Value;
- _tempFiles = tempFiles;
- }
-
- public override async Task StartAsync(CancellationToken cancellationToken)
- {
- _logger.LogInformation("Starting EnvelopeGenerator worker...");
- _logger.LogInformation("Debug mode: {Debug}", _settings.Debug);
-
- ValidateConfiguration();
- await EnsureDatabaseConnectionAsync(cancellationToken);
- await _tempFiles.CreateAsync(cancellationToken);
-
- await base.StartAsync(cancellationToken);
- }
-
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- _logger.LogInformation("EnvelopeGenerator worker is running. Jobs are scheduled every {Interval} minute(s).", Math.Max(1, _settings.IntervalMinutes));
- await Task.Delay(Timeout.Infinite, stoppingToken);
- }
-
- public override async Task StopAsync(CancellationToken cancellationToken)
- {
- _logger.LogInformation("Stopping EnvelopeGenerator worker...");
- await _tempFiles.CleanupAsync(cancellationToken);
- await base.StopAsync(cancellationToken);
- }
-
- private void ValidateConfiguration()
- {
- if (string.IsNullOrWhiteSpace(_settings.ConnectionString))
- {
- throw new InvalidOperationException("Connection string cannot be empty. Configure 'WorkerSettings:ConnectionString'.");
- }
- }
-
- private async Task EnsureDatabaseConnectionAsync(CancellationToken cancellationToken)
- {
- try
- {
- await using var connection = new SqlConnection(_settings.ConnectionString);
- await connection.OpenAsync(cancellationToken);
- _logger.LogInformation("Database connection established successfully.");
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "Database connection could not be established.");
- throw;
- }
- }
-}
diff --git a/EnvelopeGenerator.WorkerService/appsettings.Development.json b/EnvelopeGenerator.WorkerService/appsettings.Development.json
deleted file mode 100644
index cfa751f3..00000000
--- a/EnvelopeGenerator.WorkerService/appsettings.Development.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Debug",
- "Microsoft.Hosting.Lifetime": "Information"
- }
- },
- "WorkerSettings": {
- "ConnectionString": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
- "Debug": true,
- "IntervalMinutes": 1,
- "PdfBurner": {
- "IgnoredLabels": [
- "Date",
- "Datum",
- "ZIP",
- "PLZ",
- "Place",
- "Ort",
- "Position",
- "Stellung"
- ],
- "TopMargin": 0.1,
- "YOffset": -0.3,
- "FontName": "Arial",
- "FontSize": 8,
- "FontStyle": "Italic"
- }
- }
-}
diff --git a/EnvelopeGenerator.WorkerService/appsettings.json b/EnvelopeGenerator.WorkerService/appsettings.json
deleted file mode 100644
index abd01790..00000000
--- a/EnvelopeGenerator.WorkerService/appsettings.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.Hosting.Lifetime": "Information"
- }
- },
- "WorkerSettings": {
- "ConnectionString": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
- "Debug": false,
- "IntervalMinutes": 1,
- "PdfBurner": {
- "IgnoredLabels": ["Date", "Datum", "ZIP", "PLZ", "Place", "Ort", "Position", "Stellung"],
- "TopMargin": 0.1,
- "YOffset": -0.3,
- "FontName": "Arial",
- "FontSize": 8,
- "FontStyle": "Italic"
- }
- }
-}
diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln
index 0db77ff0..f7e7ac2f 100644
--- a/EnvelopeGenerator.sln
+++ b/EnvelopeGenerator.sln
@@ -33,10 +33,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.PdfEditor
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Tests", "EnvelopeGenerator.Tests\EnvelopeGenerator.Tests.csproj", "{224C4845-1CDE-22B7-F3A9-1FF9297F70E8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Jobs", "EnvelopeGenerator.Jobs\EnvelopeGenerator.Jobs.csproj", "{3D0514EA-2681-4B13-AD71-35CC6363DBD7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.WorkerService", "EnvelopeGenerator.WorkerService\EnvelopeGenerator.WorkerService.csproj", "{E3676510-7030-4E85-86E1-51E483E2A3B6}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.API", "EnvelopeGenerator.API\EnvelopeGenerator.API.csproj", "{EC768913-6270-14F4-1DD3-69C87A659462}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "receiverUI", "receiverUI", "{73D8F466-90AA-4F95-9BD1-7CDBB8565162}"
@@ -63,8 +59,8 @@ Global
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Release|Any CPU.Build.0 = Debug|Any CPU
- {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.ActiveCfg = Release|Any CPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.Build.0 = Release|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.Build.0 = Debug|Any CPU
{4F32A98D-E6F0-4A09-BD97-1CF26107E837}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -91,14 +87,6 @@ Global
{224C4845-1CDE-22B7-F3A9-1FF9297F70E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{224C4845-1CDE-22B7-F3A9-1FF9297F70E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{224C4845-1CDE-22B7-F3A9-1FF9297F70E8}.Release|Any CPU.Build.0 = Release|Any CPU
- {3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Release|Any CPU.Build.0 = Release|Any CPU
- {E3676510-7030-4E85-86E1-51E483E2A3B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E3676510-7030-4E85-86E1-51E483E2A3B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E3676510-7030-4E85-86E1-51E483E2A3B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E3676510-7030-4E85-86E1-51E483E2A3B6}.Release|Any CPU.Build.0 = Release|Any CPU
{EC768913-6270-14F4-1DD3-69C87A659462}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC768913-6270-14F4-1DD3-69C87A659462}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC768913-6270-14F4-1DD3-69C87A659462}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -129,8 +117,6 @@ Global
{6D56C01F-D6CB-4D8A-BD3D-4FD34326998C} = {E3C758DC-914D-4B7E-8457-0813F1FDB0CB}
{211619F5-AE25-4BA5-A552-BACAFE0632D3} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
{224C4845-1CDE-22B7-F3A9-1FF9297F70E8} = {0CBC2432-A561-4440-89BC-671B66A24146}
- {3D0514EA-2681-4B13-AD71-35CC6363DBD7} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
- {E3676510-7030-4E85-86E1-51E483E2A3B6} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
{EC768913-6270-14F4-1DD3-69C87A659462} = {E3C758DC-914D-4B7E-8457-0813F1FDB0CB}
{73D8F466-90AA-4F95-9BD1-7CDBB8565162} = {E3C758DC-914D-4B7E-8457-0813F1FDB0CB}
{AAD4720E-D175-44B5-B431-DB0BA636CD20} = {73D8F466-90AA-4F95-9BD1-7CDBB8565162}