Exemplo n.º 1
0
        public static bool IsDayInRange(DateTime source, DateTime target, CalendarViewingMode mode)
        {
            if (source.Year != target.Year)
            {
                return(false);
            }

            if (mode == CalendarViewingMode.Monthly)
            {
                return((source.Month == target.Month) ? true : false);
            }
            else if (mode == CalendarViewingMode.Daily)
            {
                return((source.Day == target.Day) ? true : false);
            }
            else if (mode == CalendarViewingMode.Weekly)
            {
                DateTime wkb;
                DateTime wke;
                FindRangeOfWeek(source, out wkb, out wke);

                // or compare them by converting into OADate
                return((target >= wkb && target < wke) ? true : false);
            }
            else
            {
                return(false);      // or throw exception (Invalid CalendarViewingMode)
            }
        }
Exemplo n.º 2
0
        public static List <DateTime> FindAllRecurringDate(IEvent target, DateTime ViewingDate, CalendarViewingMode mode)
        {
            List <DateTime>      result = new List <DateTime>();
            DateTime             rngb   = DateTime.MinValue; // beginning of range
            DateTime             rnge   = DateTime.MinValue; // ending of range
            RecurringFrequencies rf     = target.RecurringFrequency;

            switch (mode)
            {
            case CalendarViewingMode.Monthly:
                FindRangeOfMonth(ViewingDate, out rngb, out rnge);
                break;

            case CalendarViewingMode.Weekly:
                FindRangeOfWeek(ViewingDate, out rngb, out rnge);
                break;

            default:
                break;
            }

            // Target is not a recurring event
            if (target.RecurringFrequency == RecurringFrequencies.None)
            {
                if (target.OriginalBeginningTime > rngb && target.OriginalBeginningTime < rnge)
                {
                    result.Add(target.OriginalBeginningTime);
                }
                return(result);
            }

            if (target.ThisDayForwardOnly && target.OriginalBeginningTime > rnge)
            {
                return(result);
            }

            DateTime iter = target.ThisDayForwardOnly ? ((target.OriginalBeginningTime > rngb) ? target.OriginalBeginningTime : rngb) : rngb;

            for (; iter < rnge; iter = iter.AddDays(1))
            {
                if (((byte)iter.DayOfWeek.ToCustomWeekday() & (byte)rf) >= 1)
                {
                    result.Add(iter);
                }
            }

            return(result);
        }