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 1b4e2a82..fe942d58 100644
--- a/EnvelopeGenerator.sln
+++ b/EnvelopeGenerator.sln
@@ -35,8 +35,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Tests", "
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
Global
@@ -89,10 +87,6 @@ Global
{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
@@ -116,7 +110,6 @@ Global
{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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution