private static int GetNearestComparison(RecurringTask task, DateTime currentTime) { var recurringCalculator = RecurringStartCalculatorFactory.Create(task); var nearestStartDate = recurringCalculator.GetNearestStartDateBeforeSpecifiedDate(currentTime); Ensure.NotNull(nearestStartDate); // ReSharper disable once PossibleInvalidOperationException var nearestEndDate = GetNearestEndDate(task, nearestStartDate.Value + task.Duration); var nearestTaskRangeToShowArticle = GetTaskRange(nearestStartDate.Value, nearestEndDate); return(nearestTaskRangeToShowArticle.CompareRangeTo(currentTime)); }
public bool ShouldProcessTask(ISchedulerTask task, DateTime dateTimeToCheck, bool forMonitoring = false) { var recurringTask = (RecurringTask)task; var nearestStartDate = RecurringStartCalculatorFactory.Create(recurringTask).GetNearestStartDateBeforeSpecifiedDate(dateTimeToCheck); if (!nearestStartDate.HasValue) { return(false); } var comparison = GetTaskRange(recurringTask).CompareRangeTo(dateTimeToCheck); var nearestComparisonToShowArticle = GetNearestComparison(recurringTask, dateTimeToCheck); return(nearestComparisonToShowArticle == 0 || nearestComparisonToShowArticle > 0 && comparison >= 0); }