using PostFundManagement.Application.Events; using PostFundManagement.Domain.Abstractions; using PostFundManagement.Domain.Configuration.Email; namespace PostFundManagement.Jobs; public class JobsWorker(IJobOrchestrator jobOrchestrator, IFeatureManager featureManager, ILogger logger, IOptions 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."); } }