コード例 #1
0
        public static DateTime GetNextDate(DateTime priorDate, string daysOfWeekGrid, HolidayCalendarEnumeration holidayCalendar, IDateOperationsProvider dateOperationsProvider)
        {
            DateTime retValue = DateTime.MaxValue;

            DateTime initialValue = new DateTime(priorDate.Year, priorDate.Month, priorDate.Day); // Remove the time information.

            // Prevent looping up to year 9999.
            const int maxCounter = 3650; // A decade.
            int counter = 0;

            bool nextDateFound = false;
            while (!nextDateFound)
            {
                DateTime nextDate = initialValue.AddDays(1);
                if (ScheduleOperations.DayIsValidDayForRun(priorDate, daysOfWeekGrid, holidayCalendar, dateOperationsProvider))
                {
                    retValue = nextDate;
                    nextDateFound = true;
                }

                counter++;
                if (maxCounter == counter)
                {
                    throw new ArgumentException(String.Format("Unable to find next date for date {0} after {1} days.", priorDate, maxCounter));
                }
            }

            return retValue;
        }
コード例 #2
0
        public static bool DayIsValidDayForRun(DateTime day, string daysOfWeekGrid, HolidayCalendarEnumeration holidayCalendarEnumeration, IDateOperationsProvider dateOperationsProvider)
        {
            // Assume false.
            bool retValue = false;

            if (DaysOfWeekGrid.TrueOnDayOfWeek(day.DayOfWeek, daysOfWeekGrid))
            {
                IHolidayCalendar holidayCalender = HolidayCalendarFactory.Create(holidayCalendarEnumeration);
                if (dateOperationsProvider.IsBusinessDay(day, holidayCalender))
                {
                    retValue = true;
                }
            }

            return retValue;
        }
コード例 #3
0
        public static IHolidayCalendar Create(HolidayCalendarEnumeration holidayCalendar)
        {
            IHolidayCalendar retValue = null;

            switch (holidayCalendar)
            {
                case HolidayCalendarEnumeration.NONE:
                    retValue = new NoHolidaysCalendar();
                    break;

                case HolidayCalendarEnumeration.WKN:
                    retValue = new WeekendHolidayCalendar();
                    break;

                case HolidayCalendarEnumeration.USD:
                    retValue = new USDHolidayCalendar();
                    break;

                default:
                    throw new ArgumentException(String.Format("Unhandled HolidayCalendarEnumeration: '{0}'.", holidayCalendar));
            }

            return retValue;
        }