Backend/e-suite.Scheduler/e-suite.Scheduler/ScheduledJob.cs
2026-01-20 21:50:10 +00:00

63 lines
1.4 KiB
C#

using e_suite.Scheduler.Scheduler;
using eSuite.Core.Clock;
namespace e_suite.Scheduler;
public class ScheduledJob
{
private readonly IClock _clock;
private DateTimeOffset _nextScheduledExecution = DateTimeOffset.MinValue;
private DateTimeOffset _lastExecuted = DateTimeOffset.MinValue;
private ISchedule _schedule = null!;
public ScheduledJob(IClock clock)
{
_clock = clock;
}
public IJob Job { get; set; } = null!;
public ISchedule Schedule
{
get => _schedule;
set
{
if (_schedule == value)
return;
_schedule = value;
GetNextScheduledExecution();
}
}
public DateTimeOffset LastExecuted
{
get => _lastExecuted;
set
{
if (_lastExecuted == value)
return;
_lastExecuted = value;
GetNextScheduledExecution();
}
}
public DateTimeOffset NextScheduledExecution
{
get
{
if (_nextScheduledExecution == DateTimeOffset.MinValue)
{
GetNextScheduledExecution();
}
return _nextScheduledExecution;
}
}
private void GetNextScheduledExecution()
{
_nextScheduledExecution = Schedule.NextScheduledExecution(_clock);
}
}