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(), "", stoppingToken); // TODO: Add job to check for non-compliant projects once a week logger.LogInformation("Recurring jobs have been registered or updated."); } }