33 lines
1.3 KiB
C#
33 lines
1.3 KiB
C#
using PostFundManagement.Application.Events;
|
|
using PostFundManagement.Domain.Abstractions;
|
|
using PostFundManagement.Domain.Configuration.Email;
|
|
|
|
namespace PostFundManagement.Jobs;
|
|
|
|
public class JobsWorker(IJobOrchestrator jobOrchestrator, IFeatureManager featureManager,
|
|
ILogger<JobsWorker> logger, IOptions<SmtpSettings> emailOptions) : BackgroundService
|
|
{
|
|
readonly SmtpSettings emailSettings = emailOptions.Value;
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
if (!await featureManager.IsEnabledAsync(nameof(JobsWorker)))
|
|
{
|
|
logger.LogInformation("Recurring job automatic registration disabled.");
|
|
|
|
return;
|
|
}
|
|
|
|
if (await featureManager.IsEnabledAsync(FeatureEmailProcessor))
|
|
await jobOrchestrator.ScheduleAsync(ProcessEmailEvent.Create(), "0 */5 * * * ?", stoppingToken);
|
|
|
|
if (await featureManager.IsEnabledAsync(FeatureLateProjectReminder))
|
|
await jobOrchestrator.ScheduleAsync(LateProjectEvent.Create(), "0 30 6 * * ?", stoppingToken);
|
|
|
|
if (await featureManager.IsEnabledAsync(FeatureNonCompliantProjectCheck))
|
|
await jobOrchestrator.ScheduleAsync(NonCompliantProjectEvent.Create(), "0 0 7 ? * MON", stoppingToken);
|
|
|
|
logger.LogInformation("Recurring jobs have been registered or updated.");
|
|
}
|
|
}
|