Example #1
0
        /// <summary>
        /// Returns the Nth week number (1 thru 5) for the date argument and the
        /// WeekInterval argument. For example, if the date is 27 Jan 2040 and
        /// interval is WeekInterval.Last then the method returns 4 (4th week).
        /// </summary>
        /// <param name="aDate"></param>
        /// <param name="interval"></param>
        /// <returns></returns>
        internal static int ToNthFromWeekInterval(this DateTime aDate, WeekInterval interval)
        {
            var numberOfWeeksInMonth = aDate.WeeksInMonth();

            switch (interval)
            {
            case WeekInterval.First:
                return(1);

            case WeekInterval.Second:
                return(2);

            case WeekInterval.Third:
                return(3);

            case WeekInterval.Fourth:
                return(4);

            case WeekInterval.Last:
                return((numberOfWeeksInMonth > 4) ? 5 : 4);

            default:
                return(0);
            }
        }
Example #2
0
 /// <summary>
 /// New Time.
 /// </summary>
 /// <param name="hours">The hours</param>
 /// <param name="minutes">The minutes</param>
 /// <param name="weekInterval">The WeekInterval of this event</param>
 public Time(byte hours, byte minutes, DateTime date, WeekInterval weekInterval)
     : this()
 {
     Hours = hours;
     Minutes = minutes;
     Date = date;
     WeekInterval = weekInterval;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="dayInterval">The day(s) of the week (Sun thru Sat)</param>
 /// <param name="weekInterval">The week(s) in which the schedule recurs</param>
 /// <param name="quarterInterval">The quarter(s) in which the schedule recurs</param>
 /// <param name="monthOfOfQuarterInterval"></param>
 public ScheduleDayInQuarter(
     DayInterval dayInterval,
     WeekInterval weekInterval,
     QuarterInterval quarterInterval,
     MonthOfQuarterInterval monthOfOfQuarterInterval)
 {
     _dayInterval            = dayInterval;
     _weekInterval           = weekInterval;
     _monthOfQuarterInterval = monthOfOfQuarterInterval;
     _quarterInterval        = quarterInterval;
 }
Example #4
0
        public void GetTurnNumber(uint?expectedTurn, string date)
        {
            var interval = new WeekInterval
            {
                StartDay    = DateTime.Parse("2019-02-04"),
                Duration    = 2,
                StartOfWeek = DayOfWeek.Monday
            };

            var turnNumber = interval.GetTurnNumber(DateTime.Parse(date));

            Assert.Equal(expectedTurn, turnNumber);
        }
Example #5
0
        public void ListAllAssignmentsBetweenTwoDates(List <Assignment> expectedList, string startDate,
                                                      string endDate)
        {
            var interval = new WeekInterval
            {
                Duration    = 3,
                StartDay    = DateTime.Parse("2019-01-28"),
                StartOfWeek = DayOfWeek.Monday
            };

            var assignments = interval.GetAssignmentsBetween(DateTime.Parse(startDate), DateTime.Parse(endDate));

            Assert.Equal(assignments, expectedList);
        }
Example #6
0
 public void SetMonthlyInterval(WeekInterval interval)
 {
     WeekInterval = interval;
 }
 /// <summary>
 /// Creates a temporaral expression using day(s) of the week as well as a WeekOfMonth.
 ///
 /// var example1 = new ScheduleDayInWeekOfMonth(DayInterval.Sunday, WeekInterval.First);
 /// var example2 = new ScheduleDayInWeekOfMonth(DayInterval.Tuesday, WeekInterval.Second);
 /// var example3 = new ScheduleDayInWeekOfMonth(DayInterval.Friday, WeekInterval.Last);
 ///
 /// </summary>
 /// <param name="dayInterval">day of week</param>
 /// <param name="weekInterval">week interval</param>
 public ScheduleDayInWeekOfMonth(DayInterval dayInterval, WeekInterval weekInterval)
 {
     _dayInterval  = dayInterval;
     _weekInterval = weekInterval;
 }
Example #8
0
 public ScheduleBuilder DuringMonth(WeekInterval interval)
 {
     this.DuringMonth((int)interval);
     return(this);
 }
Example #9
0
 public void ReadXml(System.Xml.XmlReader reader)
 {
     reader.MoveToContent();
     reader.ReadStartElement();
     WeekInterval = (WeekInterval)Enum.Parse(typeof(WeekInterval),
         reader.ReadElementString("interval"));
     Hours = byte.Parse(reader.ReadElementString("hours"));
     Minutes = byte.Parse(reader.ReadElementString("minutes"));
     Date = DateTime.Parse(reader.ReadElementString("date"));
     reader.ReadEndElement();
 }
Example #10
0
 /// <summary>
 /// The holiday month, day, and count where the holiday falls on a different
 /// date every year, e.g., first Monday of September (Labor Day):
 ///
 /// var laborDay = new ScheduleFloatingHoliday(MonthOfYear.Sep, DayOfWeek.Monday, WeekInterval.First);
 /// </summary>
 /// <param name="monthOfYear"></param>
 /// <param name="dayOfWeek">Sun through Sat</param>
 /// <param name="weekInterval">First, Second, etc.</param>
 public ScheduleFloatingHoliday(MonthOfYear monthOfYear, DayOfWeek dayOfWeek, WeekInterval weekInterval)
 {
     _monthOfYear  = monthOfYear;
     _dayOfWeek    = dayOfWeek;
     _weekInterval = weekInterval;
 }