diff --git a/Endpoint/Common/Services/CronUpdateSkipService.cs b/Endpoint/Common/Services/CronUpdateSkipService.cs index 50ccab3..802dd64 100644 --- a/Endpoint/Common/Services/CronUpdateSkipService.cs +++ b/Endpoint/Common/Services/CronUpdateSkipService.cs @@ -18,7 +18,7 @@ public static class CronUpdateSkipService throw new ArgumentException("It is impossible to create a structure because it has incorrect values."); } - public static List Filter(this List data, DateOnly? currentDate = null) + public static List FilterDateEntry(this List data, DateOnly? currentDate = null) { currentDate ??= DateOnly.FromDateTime(DateTime.Now); return data.OrderBy(x => x.End ?? x.Date) @@ -26,8 +26,18 @@ public static class CronUpdateSkipService .ToList(); } - public static List Filter(this List data, DateTime? currentDate = null) => - data.Filter(DateOnly.FromDateTime(currentDate ?? DateTime.Now)); + public static List FilterDateEntry(this List data, DateTime? currentDate = null) => + data.FilterDateEntry(DateOnly.FromDateTime(currentDate ?? DateTime.Now)); + + public static List Filter(this List data, DateOnly? currentDate = null) + { + currentDate ??= DateOnly.FromDateTime(DateTime.Now); + + return data.Where(x => x.Date >= currentDate || x.End >= currentDate) + .OrderBy(x => x.End ?? x.Date) + .ToList(); + } + public static List GetNextTask(this List data, CronExpression expression, int depth = 1, DateOnly? currentDate = null) @@ -42,7 +52,7 @@ public static class CronUpdateSkipService do { - var lastSkip = data.Filter(nextRunTime.DateTime).LastOrDefault(); + var lastSkip = data.FilterDateEntry(nextRunTime.DateTime).LastOrDefault(); if (lastSkip is { Start: not null, End: not null }) nextRunTime = new DateTimeOffset(lastSkip.End.Value.AddDays(1), new TimeOnly(0, 0, 0), TimeSpan.Zero); @@ -56,7 +66,7 @@ public static class CronUpdateSkipService nextRunTime = next.Value; - if (data.Filter(nextRunTime.DateTime).Any()) + if (data.FilterDateEntry(nextRunTime.DateTime).Any()) continue; result.Add(nextRunTime); diff --git a/Endpoint/Controllers/V1/Configuration/ScheduleController.cs b/Endpoint/Controllers/V1/Configuration/ScheduleController.cs index 1123a8a..6327a01 100644 --- a/Endpoint/Controllers/V1/Configuration/ScheduleController.cs +++ b/Endpoint/Controllers/V1/Configuration/ScheduleController.cs @@ -103,7 +103,9 @@ public class ScheduleController(ILogger logger, IOptionsSnap /// Cron update skip dates. [HttpGet("CronUpdateSkip")] public ActionResult> CronUpdateSkip() => - config.Value.ScheduleSettings!.CronUpdateSkipDateList.Filter(DateTime.Now).ConvertToDto(); + config.Value.ScheduleSettings!.CronUpdateSkipDateList + .Filter() + .ConvertToDto(); /// /// Updates the list of cron update skip dates in the configuration. @@ -124,7 +126,7 @@ public class ScheduleController(ILogger logger, IOptionsSnap throw new ControllerArgumentException(ex.Message); } - config.Value.ScheduleSettings!.CronUpdateSkipDateList = result.Filter(DateTime.Now); + config.Value.ScheduleSettings!.CronUpdateSkipDateList = result.Filter(); config.Value.SaveSetting(); return Ok();