From 689a1b355aca427f7a464fd6bc5c63cea60f8d9c Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 23 Feb 2026 10:54:32 +0100 Subject: [PATCH] Remove EnvelopeGenerator.WorkerService project Deleted the EnvelopeGenerator.WorkerService project and all related files, including configuration, job scheduling, and temp file management. Removed all references to the project from the solution file. This eliminates the background worker service component from the solution. --- .../Configuration/WorkerSettings.cs | 14 ---- .../EnvelopeGenerator.WorkerService.csproj | 22 ------ EnvelopeGenerator.WorkerService/Program.cs | 67 ----------------- .../Properties/launchSettings.json | 12 --- .../Services/TempFileManager.cs | 74 ------------------- EnvelopeGenerator.WorkerService/Worker.cs | 71 ------------------ .../appsettings.Development.json | 30 -------- .../appsettings.json | 21 ------ EnvelopeGenerator.sln | 7 -- 9 files changed, 318 deletions(-) delete mode 100644 EnvelopeGenerator.WorkerService/Configuration/WorkerSettings.cs delete mode 100644 EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj delete mode 100644 EnvelopeGenerator.WorkerService/Program.cs delete mode 100644 EnvelopeGenerator.WorkerService/Properties/launchSettings.json delete mode 100644 EnvelopeGenerator.WorkerService/Services/TempFileManager.cs delete mode 100644 EnvelopeGenerator.WorkerService/Worker.cs delete mode 100644 EnvelopeGenerator.WorkerService/appsettings.Development.json delete mode 100644 EnvelopeGenerator.WorkerService/appsettings.json 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