using Cronos;
using Elsa.Common;
namespace Elsa.Scheduling.Services;
///
/// A cron parser that uses Cronos.
///
public class CronosCronParser : ICronParser
{
private readonly ISystemClock _systemClock;
///
/// Initializes a new instance of the class.
///
public CronosCronParser(ISystemClock systemClock)
{
_systemClock = systemClock;
}
///
public DateTimeOffset GetNextOccurrence(string expression)
{
var parsedExpression = CronExpression.Parse(expression, CronFormat.IncludeSeconds);
var now = _systemClock.UtcNow;
return parsedExpression.GetNextOccurrence(now, TimeZoneInfo.Utc).GetValueOrDefault();
}
}