diff --git a/EnvelopeGenerator.ServiceHost/Worker.cs b/EnvelopeGenerator.ServiceHost/Worker.cs index 09ec492d..e94b03a7 100644 --- a/EnvelopeGenerator.ServiceHost/Worker.cs +++ b/EnvelopeGenerator.ServiceHost/Worker.cs @@ -6,13 +6,15 @@ namespace EnvelopeGenerator.ServiceHost; public class Worker : BackgroundService { private readonly ILogger _logger; - private readonly int _delayMilliseconds; + private readonly WorkerOptions _options; + private readonly JobStateManager _jobStateManager; private readonly IServiceScopeFactory _scopeFactory; - public Worker(ILogger logger, IOptions options, IServiceScopeFactory scopeFactory) + public Worker(ILogger logger, IOptions options, JobStateManager jobStateManager, IServiceScopeFactory scopeFactory) { _logger = logger; - _delayMilliseconds = options.Value.DelayMilliseconds; + _options = options.Value; + _jobStateManager = jobStateManager; _scopeFactory = scopeFactory; } @@ -25,11 +27,14 @@ public class Worker : BackgroundService _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } - using var scope = _scopeFactory.CreateScope(); - var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService(); - await finalizeDocumentJob.ExecuteAsync(stoppingToken); + if (_jobStateManager.GetState() == State.Running) + { + using var scope = _scopeFactory.CreateScope(); + var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService(); + await finalizeDocumentJob.ExecuteAsync(stoppingToken); + } - await Task.Delay(_delayMilliseconds, stoppingToken); + await Task.Delay(_options.DelayMilliseconds, stoppingToken); } } -} +} \ No newline at end of file