Quartz.Impl.Triggers.DailyTimeIntervalTriggerImpl.AdvanceToNextDayOfWeekIfNecessary C# (CSharp) Method

AdvanceToNextDayOfWeekIfNecessary() private method

Given fireTime time determine if it is on a valid day of week. If so, simply return it unaltered, if not, advance to the next valid week day, and set the time of day to the start time of day.
private AdvanceToNextDayOfWeekIfNecessary ( DateTimeOffset fireTime, bool forceToAdvanceNextDay ) : DateTimeOffset?
fireTime DateTimeOffset given next fireTime.
forceToAdvanceNextDay bool flag to whether to advance day without check existing week day. This scenario /// can happen when a caller determine fireTime has passed the endTimeOfDay that fireTime should move to next day anyway. ///
return DateTimeOffset?
        private DateTimeOffset? AdvanceToNextDayOfWeekIfNecessary(DateTimeOffset fireTime, bool forceToAdvanceNextDay)
        {
            // a. Advance or adjust to next dayOfWeek if need to first, starting next day with startTimeOfDay.
            TimeOfDay startTimeOfDay = StartTimeOfDay;
            DateTimeOffset fireTimeStartDate = startTimeOfDay.GetTimeOfDayForDate(fireTime).Value;
            DateTimeOffset fireTimeStartDateCal = CreateCalendarTime(fireTimeStartDate);
            DayOfWeek dayOfWeekOfFireTime = fireTimeStartDateCal.DayOfWeek;

            // b2. We need to advance to another day if isAfterTimePassEndTimeOfDay is true, or dayOfWeek is not set.
            ISet<DayOfWeek> daysOfWeek = DaysOfWeek;
            if (forceToAdvanceNextDay || !daysOfWeek.Contains(dayOfWeekOfFireTime))
            {
                // Advance one day at a time until next available date.
                for (int i = 1; i <= 7; i++)
                {
                    fireTimeStartDateCal = fireTimeStartDateCal.AddDays(1);
                    dayOfWeekOfFireTime = fireTimeStartDateCal.DayOfWeek;
                    if (daysOfWeek.Contains(dayOfWeekOfFireTime))
                    {
                        fireTime = fireTimeStartDateCal;
                        break;
                    }
                }
            }

            // Check fireTime not pass the endTime
            DateTimeOffset? endTime = EndTimeUtc;

            if (endTime != null && fireTime > endTime.Value)
            {
                return null;
            }

            return fireTime;
        }