Example #1
0
        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));
        }
Example #2
0
        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);
        }