- Introduce BurnPdfCommandExtensions to simplify sending BurnPdfCommand via ISender - Enables calling `sender.BurnPdf(envelopeId, cancel)` or `sender.BurnPdf(envelopeUuid, cancel)` - No changes to the underlying PDF burning logic in BurnPdfCommandHandler
52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
using EnvelopeGenerator.Application.Envelopes.Queries;
|
|
using EnvelopeGenerator.Domain.Constants;
|
|
using EnvelopeGenerator.Finalizer.Models;
|
|
using MediatR;
|
|
using Microsoft.Extensions.Options;
|
|
using Quartz;
|
|
|
|
namespace EnvelopeGenerator.Finalizer.Job
|
|
{
|
|
public class FinishEnvelopeJob : IJob
|
|
{
|
|
private readonly ILogger<FinishEnvelopeJob> _logger;
|
|
|
|
private readonly IMediator _mediator;
|
|
|
|
public FinishEnvelopeJob(ILogger<FinishEnvelopeJob> logger, IMediator mediator)
|
|
{
|
|
_logger = logger;
|
|
_mediator = mediator;
|
|
}
|
|
|
|
public async Task Execute(IJobExecutionContext context)
|
|
{
|
|
var cancel = context.CancellationToken;
|
|
|
|
var envelopes = await _mediator.Send(new ReadEnvelopeQuery()
|
|
{
|
|
Status = new() { Include = [ EnvelopeStatus.EnvelopeCompletelySigned ] },
|
|
HasDocResult = false
|
|
}, cancel);
|
|
|
|
foreach (var envelope in envelopes)
|
|
{
|
|
// add sub-steps
|
|
}
|
|
|
|
if (envelopes.Any())
|
|
_logger.LogInformation(
|
|
"Job '{JobName}' executed at {Timestamp}. {EnvelopeCount} envelope(s) successfully finalized. UUID(s): {EnvelopeUuids}",
|
|
context.JobDetail.Key.Name,
|
|
DateTimeOffset.Now,
|
|
envelopes.Count(),
|
|
string.Join(", ", envelopes.Select(e => e.Uuid))
|
|
);
|
|
else
|
|
_logger.LogInformation("Job '{JobName}' executed successfully at {Timestamp}. No envelopes were finalized.",
|
|
context.JobDetail.Key.Name,
|
|
DateTimeOffset.Now
|
|
);
|
|
}
|
|
}
|
|
} |