using System; namespace NetCoreStack.Jobs { /// /// Helper class that provides common values for the cron expressions. /// public static class Cron { /// /// Returns cron expression that fires every minute. /// public static string Minutely() { return "* * * * *"; } /// /// Returns cron expression that fires every hour at the first minute. /// public static string Hourly() { return Hourly(minute: 0); } /// /// Returns cron expression that fires every hour at the specified minute. /// /// The minute in which the schedule will be activated (0-59). public static string Hourly(int minute) { return $"{minute} * * * *"; } /// /// Returns cron expression that fires every day at 00:00 UTC. /// public static string Daily() { return Daily(hour: 0); } /// /// Returns cron expression that fires every day at the first minute of /// the specified hour in UTC. /// /// The hour in which the schedule will be activated (0-23). public static string Daily(int hour) { return Daily(hour, minute: 0); } /// /// Returns cron expression that fires every day at the specified hour and minute /// in UTC. /// /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Daily(int hour, int minute) { return $"{minute} {hour} * * *"; } /// /// Returns cron expression that fires every week at Monday, 00:00 UTC. /// public static string Weekly() { return Weekly(DayOfWeek.Monday); } /// /// Returns cron expression that fires every week at 00:00 UTC of the specified /// day of the week. /// /// The day of week in which the schedule will be activated. public static string Weekly(DayOfWeek dayOfWeek) { return Weekly(dayOfWeek, hour: 0); } /// /// Returns cron expression that fires every week at the first minute /// of the specified day of week and hour in UTC. /// /// The day of week in which the schedule will be activated. /// The hour in which the schedule will be activated (0-23). public static string Weekly(DayOfWeek dayOfWeek, int hour) { return Weekly(dayOfWeek, hour, minute: 0); } /// /// Returns cron expression that fires every week at the specified day /// of week, hour and minute in UTC. /// /// The day of week in which the schedule will be activated. /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Weekly(DayOfWeek dayOfWeek, int hour, int minute) { return $"{minute} {hour} * * {(int)dayOfWeek}"; } /// /// Returns cron expression that fires every month at 00:00 UTC of the first /// day of month. /// public static string Monthly() { return Monthly(day: 1); } /// /// Returns cron expression that fires every month at 00:00 UTC of the specified /// day of month. /// /// The day of month in which the schedule will be activated (1-31). public static string Monthly(int day) { return Monthly(day, hour: 0); } /// /// Returns cron expression that fires every month at the first minute of the /// specified day of month and hour in UTC. /// /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). public static string Monthly(int day, int hour) { return Monthly(day, hour, minute: 0); } /// /// Returns cron expression that fires every month at the specified day of month, /// hour and minute in UTC. /// /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Monthly(int day, int hour, int minute) { return $"{minute} {hour} {day} * *"; } /// /// Returns cron expression that fires every year on Jan, 1st at 00:00 UTC. /// public static string Yearly() { return Yearly(month: 1); } /// /// Returns cron expression that fires every year in the first day at 00:00 UTC /// of the specified month. /// /// The month in which the schedule will be activated (1-12). public static string Yearly(int month) { return Yearly(month, day: 1); } /// /// Returns cron expression that fires every year at 00:00 UTC of the specified /// month and day of month. /// /// The month in which the schedule will be activated (1-12). /// The day of month in which the schedule will be activated (1-31). public static string Yearly(int month, int day) { return Yearly(month, day, hour: 0); } /// /// Returns cron expression that fires every year at the first minute of the /// specified month, day and hour in UTC. /// /// The month in which the schedule will be activated (1-12). /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). public static string Yearly(int month, int day, int hour) { return Yearly(month, day, hour, minute: 0); } /// /// Returns cron expression that fires every year at the specified month, day, /// hour and minute in UTC. /// /// The month in which the schedule will be activated (1-12). /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Yearly(int month, int day, int hour, int minute) { return $"{minute} {hour} {day} {month} *"; } /// /// Returns cron expression that fires every <> minutes. /// /// The number of minutes to wait between every activation. public static string MinuteInterval(int interval) { return $"*/{interval} * * * *"; } /// /// Returns cron expression that fires every <> hours. /// /// The number of hours to wait between every activation. public static string HourInterval(int interval) { return $"0 */{interval} * * *"; } /// /// Returns cron expression that fires every <> days. /// /// The number of days to wait between every activation. public static string DayInterval(int interval) { return $"0 0 */{interval} * *"; } /// /// Returns cron expression that fires every <> months. /// /// The number of months to wait between every activation. public static string MonthInterval(int interval) { return $"0 0 1 */{interval} *"; } } }