Esempio n. 1
0
 public RecurrencePattern ConvertEntitiesToStorage(AbsoluteMonthlyRecurrencePattern value)
 {
     if (value != null)
     {
         return(new MonthlyRecurrencePattern(value.DayOfMonth, value.Interval));
     }
     return(null);
 }
        // Token: 0x06001219 RID: 4633 RVA: 0x000624FC File Offset: 0x000606FC
        private static void PopulateRecurrencePattern(RecurrenceData recurrenceData, RecurrencePattern pattern)
        {
            recurrenceData.Interval = (ushort)pattern.Interval;
            DailyRecurrencePattern dailyRecurrencePattern = pattern as DailyRecurrencePattern;

            if (dailyRecurrencePattern != null)
            {
                recurrenceData.Type = RecurrenceData.RecurrenceType.Daily;
                return;
            }
            WeeklyRecurrencePattern weeklyRecurrencePattern = pattern as WeeklyRecurrencePattern;

            if (weeklyRecurrencePattern != null)
            {
                recurrenceData.Type       = RecurrenceData.RecurrenceType.Weekly;
                recurrenceData.DaysOfWeek = weeklyRecurrencePattern.DaysOfWeek;
                return;
            }
            AbsoluteMonthlyRecurrencePattern absoluteMonthlyRecurrencePattern = pattern as AbsoluteMonthlyRecurrencePattern;

            if (absoluteMonthlyRecurrencePattern != null)
            {
                recurrenceData.Type       = RecurrenceData.RecurrenceType.Monthly;
                recurrenceData.DayOfMonth = (byte)absoluteMonthlyRecurrencePattern.DayOfMonth;
                return;
            }
            RelativeMonthlyRecurrencePattern relativeMonthlyRecurrencePattern = pattern as RelativeMonthlyRecurrencePattern;

            if (relativeMonthlyRecurrencePattern != null)
            {
                recurrenceData.Type       = RecurrenceData.RecurrenceType.MonthlyTh;
                recurrenceData.WeekIndex  = relativeMonthlyRecurrencePattern.Index;
                recurrenceData.DaysOfWeek = relativeMonthlyRecurrencePattern.DaysOfWeek;
                return;
            }
            AbsoluteYearlyRecurrencePattern absoluteYearlyRecurrencePattern = pattern as AbsoluteYearlyRecurrencePattern;

            if (absoluteYearlyRecurrencePattern != null)
            {
                recurrenceData.Type        = RecurrenceData.RecurrenceType.Yearly;
                recurrenceData.DayOfMonth  = (byte)absoluteYearlyRecurrencePattern.DayOfMonth;
                recurrenceData.MonthOfYear = (byte)absoluteYearlyRecurrencePattern.Month;
                return;
            }
            RelativeYearlyRecurrencePattern relativeYearlyRecurrencePattern = pattern as RelativeYearlyRecurrencePattern;

            if (relativeYearlyRecurrencePattern != null)
            {
                recurrenceData.Type        = RecurrenceData.RecurrenceType.YearlyTh;
                recurrenceData.WeekIndex   = relativeYearlyRecurrencePattern.Index;
                recurrenceData.DaysOfWeek  = relativeYearlyRecurrencePattern.DaysOfWeek;
                recurrenceData.MonthOfYear = (byte)relativeYearlyRecurrencePattern.Month;
                return;
            }
            throw new ConversionException("Unexpected Recurrence Pattern");
        }
        // Token: 0x06001217 RID: 4631 RVA: 0x000622F8 File Offset: 0x000604F8
        private static RecurrencePattern CreateRecurrencePattern(RecurrenceData recurrenceData)
        {
            RecurrencePattern recurrencePattern;

            switch (recurrenceData.Type)
            {
            case RecurrenceData.RecurrenceType.Daily:
                if (recurrenceData.SubProperties["DayOfWeek"] != null)
                {
                    recurrencePattern = new WeeklyRecurrencePattern();
                    ((WeeklyRecurrencePattern)recurrencePattern).DaysOfWeek = recurrenceData.DaysOfWeek;
                    goto IL_15E;
                }
                recurrencePattern = new DailyRecurrencePattern();
                goto IL_15E;

            case RecurrenceData.RecurrenceType.Weekly:
                recurrencePattern = new WeeklyRecurrencePattern();
                ((WeeklyRecurrencePattern)recurrencePattern).DaysOfWeek = recurrenceData.DaysOfWeek;
                goto IL_15E;

            case RecurrenceData.RecurrenceType.Monthly:
                recurrencePattern = new AbsoluteMonthlyRecurrencePattern();
                ((AbsoluteMonthlyRecurrencePattern)recurrencePattern).DayOfMonth = (int)recurrenceData.DayOfMonth;
                goto IL_15E;

            case RecurrenceData.RecurrenceType.MonthlyTh:
                recurrencePattern = new RelativeMonthlyRecurrencePattern();
                ((RelativeMonthlyRecurrencePattern)recurrencePattern).DaysOfWeek = recurrenceData.DaysOfWeek;
                ((RelativeMonthlyRecurrencePattern)recurrencePattern).Index      = recurrenceData.WeekIndex;
                goto IL_15E;

            case RecurrenceData.RecurrenceType.Yearly:
                recurrencePattern = new AbsoluteYearlyRecurrencePattern();
                ((AbsoluteYearlyRecurrencePattern)recurrencePattern).DayOfMonth = (int)recurrenceData.DayOfMonth;
                ((AbsoluteYearlyRecurrencePattern)recurrencePattern).Month      = (int)recurrenceData.MonthOfYear;
                goto IL_15E;

            case RecurrenceData.RecurrenceType.YearlyTh:
                recurrencePattern = new RelativeYearlyRecurrencePattern();
                ((RelativeYearlyRecurrencePattern)recurrencePattern).DaysOfWeek = recurrenceData.DaysOfWeek;
                ((RelativeYearlyRecurrencePattern)recurrencePattern).Index      = recurrenceData.WeekIndex;
                ((RelativeYearlyRecurrencePattern)recurrencePattern).Month      = (int)recurrenceData.MonthOfYear;
                goto IL_15E;
            }
            throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "Unexpected recurrence type {0}, should have been caught in a higher validation layer", new object[]
            {
                recurrenceData.Type
            }));
IL_15E:
            recurrencePattern.Interval = (int)(recurrenceData.HasInterval() ? recurrenceData.Interval : 1);
            return(recurrencePattern);
        }
Esempio n. 4
0
        public static Microsoft.Exchange.Connections.Eas.Model.Request.Calendar.Recurrence GetRecurrenceData(PatternedRecurrence recurrence)
        {
            if (recurrence == null)
            {
                return(null);
            }
            Microsoft.Exchange.Connections.Eas.Model.Request.Calendar.Recurrence recurrence2 = new Microsoft.Exchange.Connections.Eas.Model.Request.Calendar.Recurrence();
            recurrence2.Interval = new ushort?((ushort)recurrence.Pattern.Interval);
            RecurrencePatternType type = recurrence.Pattern.Type;

            switch (type)
            {
            case RecurrencePatternType.Daily:
            {
                DailyRecurrencePattern dailyRecurrencePattern = (DailyRecurrencePattern)recurrence.Pattern;
                recurrence2.Type = 0;
                break;
            }

            case RecurrencePatternType.Weekly:
            {
                WeeklyRecurrencePattern weeklyRecurrencePattern = (WeeklyRecurrencePattern)recurrence.Pattern;
                recurrence2.Type      = 1;
                recurrence2.DayOfWeek = new ushort?(SyncCalendarUtils.GetDayOfWeekValue(weeklyRecurrencePattern.DaysOfWeek));
                break;
            }

            case RecurrencePatternType.AbsoluteMonthly:
            {
                AbsoluteMonthlyRecurrencePattern absoluteMonthlyRecurrencePattern = (AbsoluteMonthlyRecurrencePattern)recurrence.Pattern;
                recurrence2.Type       = 2;
                recurrence2.DayOfMonth = new byte?((byte)absoluteMonthlyRecurrencePattern.DayOfMonth);
                break;
            }

            case RecurrencePatternType.RelativeMonthly:
            {
                RelativeMonthlyRecurrencePattern relativeMonthlyRecurrencePattern = (RelativeMonthlyRecurrencePattern)recurrence.Pattern;
                recurrence2.Type        = 3;
                recurrence2.DayOfWeek   = new ushort?(SyncCalendarUtils.GetDayOfWeekValue(relativeMonthlyRecurrencePattern.DaysOfWeek));
                recurrence2.WeekOfMonth = new byte?((byte)relativeMonthlyRecurrencePattern.Index);
                break;
            }

            case RecurrencePatternType.AbsoluteYearly:
            {
                AbsoluteYearlyRecurrencePattern absoluteYearlyRecurrencePattern = (AbsoluteYearlyRecurrencePattern)recurrence.Pattern;
                recurrence2.Type        = 5;
                recurrence2.DayOfMonth  = new byte?((byte)absoluteYearlyRecurrencePattern.DayOfMonth);
                recurrence2.MonthOfYear = new byte?((byte)absoluteYearlyRecurrencePattern.Month);
                break;
            }

            case RecurrencePatternType.RelativeYearly:
            {
                RelativeYearlyRecurrencePattern relativeYearlyRecurrencePattern = (RelativeYearlyRecurrencePattern)recurrence.Pattern;
                recurrence2.Type        = 6;
                recurrence2.DayOfWeek   = new ushort?(SyncCalendarUtils.GetDayOfWeekValue(relativeYearlyRecurrencePattern.DaysOfWeek));
                recurrence2.WeekOfMonth = new byte?((byte)relativeYearlyRecurrencePattern.Index);
                recurrence2.MonthOfYear = new byte?((byte)relativeYearlyRecurrencePattern.Month);
                break;
            }

            default:
                throw new EasSyncFailedPermanentException("Invalid recurrence type: " + type);
            }
            RecurrenceRangeType type2 = recurrence.Range.Type;

            switch (type2)
            {
            case RecurrenceRangeType.EndDate:
            {
                EndDateRecurrenceRange endDateRecurrenceRange = (EndDateRecurrenceRange)recurrence.Range;
                recurrence2.Until = SyncCalendarUtils.ToStringDateTime(endDateRecurrenceRange.EndDate);
                break;
            }

            case RecurrenceRangeType.NoEnd:
                break;

            case RecurrenceRangeType.Numbered:
            {
                NumberedRecurrenceRange numberedRecurrenceRange = (NumberedRecurrenceRange)recurrence.Range;
                recurrence2.Occurrences = new ushort?((ushort)numberedRecurrenceRange.NumberOfOccurrences);
                break;
            }

            default:
                throw new EasSyncFailedPermanentException("Invalid recurrence range type: {0}" + type2);
            }
            return(recurrence2);
        }