Files
EnvelopeGenerator/EnvelopeGenerator.ServiceHost/Jobs/FinalizeDocumentJobRunner.cs

58 lines
1.8 KiB
C#

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<FinalizeDocumentJobOptions> _options;
private readonly IConfiguration _configuration;
private readonly ILogger<FinalizeDocumentJobRunner> _logger;
public FinalizeDocumentJobRunner(
FinalizeDocumentJob job,
IOptions<FinalizeDocumentJobOptions> options,
IConfiguration configuration,
ILogger<FinalizeDocumentJobRunner> 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);
}
}