Implemented scheduling service and first two jobs

This commit is contained in:
2026-10-28 17:01:28 +02:00
parent 6114d8f457
commit 7f686fa8c6
20 changed files with 304 additions and 112 deletions
+16 -6
View File
@@ -1,21 +1,31 @@
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) : BackgroundService
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)))
if (!await featureManager.IsEnabledAsync(nameof(JobsWorker)))
{
logger.LogInformation("JobsWorker is disabled.");
logger.LogInformation("Recurring job automatic registration disabled.");
return;
}
// TODO: scheduler reccuring jobs
if (await featureManager.IsEnabledAsync(FeatureEmailProcessor))
await jobOrchestrator.ScheduleAsync(ProcessEmailEvent.Create(), "0 */5 * * * ?", stoppingToken);
logger.LogInformation("JobsWorker is stopping.");
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.");
}
}