diff --git a/EnvelopeGenerator.ServiceHost/Extensions/ServiceCollectionExtensions.cs b/EnvelopeGenerator.ServiceHost/Extensions/ServiceCollectionExtensions.cs index 0f9d053f..b5fda94c 100644 --- a/EnvelopeGenerator.ServiceHost/Extensions/ServiceCollectionExtensions.cs +++ b/EnvelopeGenerator.ServiceHost/Extensions/ServiceCollectionExtensions.cs @@ -10,7 +10,6 @@ public static class ServiceCollectionExtensions { services.Configure(configuration.GetSection(nameof(WorkerOptions))); services.AddSingleton(); - services.AddSingleton(); return services; } } diff --git a/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJob.cs b/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJob.cs index 7dfa7b55..9dc58d78 100644 --- a/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJob.cs +++ b/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJob.cs @@ -49,14 +49,14 @@ public class FinalizeDocumentJob(IOptions options, IConfiguration public byte[]? DocAsByte { get; set; } } - public Task Execute(IJobExecutionContext context) + public Task ExecuteAsync(CancellationToken cancellationToken = default) { - var gdPictureKey = (string)context.MergedJobDataMap[Value.GDPICTURE]; - _logConfig = (LogConfig)context.MergedJobDataMap[Value.LOGCONFIG]; + var gdPictureKey = _options.GdPictureLicenseKey; + _logConfig = new LogConfig { Debug = _options.Debug }; _logger = _logConfig.GetLogger(); _tempFiles = new TempFiles(_logConfig); _tempFiles.Create(); - var jobId = context.JobDetail.Key; + var jobId = typeof(FinalizeDocumentJob).FullName; _logger.Debug("Starting job {0}", jobId); try @@ -66,7 +66,7 @@ public class FinalizeDocumentJob(IOptions options, IConfiguration _licenseManager.RegisterKEY(gdPictureKey); _logger.Debug("Loading Database.."); - var connectionString = (string)context.MergedJobDataMap[Value.DATABASE]; + var connectionString = config.GetConnectionString("Default") ?? throw new InvalidOperationException("Connection string 'Default' not found."); _databaseConnectionString = MSSQLServer.DecryptConnectionString(connectionString); _database = new MSSQLServer(_logConfig, _databaseConnectionString); @@ -81,7 +81,7 @@ public class FinalizeDocumentJob(IOptions options, IConfiguration InitializeServices(state); _logger.Debug("Loading PDFBurner.."); - var pdfBurnerParams = (PDFBurnerParams)context.MergedJobDataMap[Value.PDF_BURNER_PARAMS]; + var pdfBurnerParams = _options.PdfBurnerParams; _pdfBurner = new PDFBurner(_logConfig, gdPictureKey, pdfBurnerParams, _databaseConnectionString); _logger.Debug("Loading PDFMerger.."); diff --git a/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJobRunner.cs b/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJobRunner.cs deleted file mode 100644 index 42fa2fb5..00000000 --- a/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJobRunner.cs +++ /dev/null @@ -1,57 +0,0 @@ -using DigitalData.Modules.Logging; -using EnvelopeGenerator.ServiceHost.Jobs.FinalizeDocument; -using Microsoft.Extensions.Options; -using Quartz; - -namespace EnvelopeGenerator.ServiceHost.Jobs; - -public interface IFinalizeDocumentJobRunner -{ - Task RunAsync(CancellationToken cancellationToken); -} - -public class FinalizeDocumentJobRunner : IFinalizeDocumentJobRunner -{ - private readonly FinalizeDocumentJob _job; - private readonly IOptions _options; - private readonly IConfiguration _configuration; - private readonly ILogger _logger; - - public FinalizeDocumentJobRunner( - FinalizeDocumentJob job, - IOptions options, - IConfiguration configuration, - ILogger logger) - { - _job = job; - _options = options; - _configuration = configuration; - _logger = logger; - } - - public Task RunAsync(CancellationToken cancellationToken) - { - var options = _options.Value; - var connectionString = options.ConnectionString; - if (string.IsNullOrWhiteSpace(connectionString)) - { - connectionString = _configuration.GetConnectionString("Default") ?? string.Empty; - } - - if (string.IsNullOrWhiteSpace(connectionString)) - { - _logger.LogWarning("FinalizeDocumentJob skipped: missing connection string."); - return Task.CompletedTask; - } - - var dataMap = new JobDataMap - { - { JobDataKeys.GdPicture, options.GdPictureLicenseKey }, - { JobDataKeys.Database, connectionString }, - { JobDataKeys.LogConfig, new LogConfig { Debug = options.Debug } }, - { JobDataKeys.PdfBurnerParams, options.PdfBurnerParams } - }; - - return _job.Execute(dataMap, cancellationToken); - } -} diff --git a/EnvelopeGenerator.ServiceHost/Worker.cs b/EnvelopeGenerator.ServiceHost/Worker.cs index 00e8fae8..ebea843a 100644 --- a/EnvelopeGenerator.ServiceHost/Worker.cs +++ b/EnvelopeGenerator.ServiceHost/Worker.cs @@ -1,16 +1,18 @@ +using EnvelopeGenerator.ServiceHost.Jobs; + namespace EnvelopeGenerator.ServiceHost; public class Worker : BackgroundService { private readonly ILogger _logger; private readonly int _delayMilliseconds; - private readonly IFinalizeDocumentJobRunner _jobRunner; + private readonly FinalizeDocumentJob _finalizeDocumentJob; - public Worker(ILogger logger, IConfiguration configuration, IFinalizeDocumentJobRunner jobRunner) + public Worker(ILogger logger, IConfiguration configuration, FinalizeDocumentJob finalizeDocumentJob) { _logger = logger; _delayMilliseconds = Math.Max(1, configuration.GetValue("Worker:DelayMilliseconds", 1000)); - _jobRunner = jobRunner; + _finalizeDocumentJob = finalizeDocumentJob; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) @@ -22,7 +24,7 @@ public class Worker : BackgroundService _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } - await _jobRunner.RunAsync(stoppingToken); + await _finalizeDocumentJob.ExecuteAsync(stoppingToken); await Task.Delay(_delayMilliseconds, stoppingToken); } }