public MonthlyThRecurrencePattern(DaysOfWeek daysOfWeek, RecurrenceOrderType order, int recurrenceInterval, CalendarType calendarType) { EnumValidator.ThrowIfInvalid <CalendarType>(calendarType); this.DaysOfWeek = daysOfWeek; this.Order = order; base.RecurrenceInterval = recurrenceInterval; this.calendarType = calendarType; }
public YearlyThRecurrencePattern(DaysOfWeek daysOfWeek, RecurrenceOrderType order, int month, bool isLeapMonth, int recurrenceInterval, CalendarType calendarType) { EnumValidator.ThrowIfInvalid <CalendarType>(calendarType); this.Month = month; this.DaysOfWeek = daysOfWeek; this.Order = order; this.isLeapMonth = isLeapMonth; this.calendarType = calendarType; base.RecurrenceInterval = recurrenceInterval; }
private static RecurrencePattern CreateRecurrencePattern(Microsoft.Exchange.Connections.Eas.Model.Response.Calendar.Recurrence easRecurrence) { try { EasRecurrenceType type = (EasRecurrenceType)easRecurrence.Type; switch (type) { case EasRecurrenceType.Daily: if (easRecurrence.DayOfWeek != 0) { return(new WeeklyRecurrencePattern((DaysOfWeek)easRecurrence.DayOfWeek)); } return(new DailyRecurrencePattern(easRecurrence.Interval)); case EasRecurrenceType.Weekly: return(new WeeklyRecurrencePattern((DaysOfWeek)easRecurrence.DayOfWeek, easRecurrence.Interval)); case EasRecurrenceType.Monthly: return(new MonthlyRecurrencePattern(easRecurrence.DayOfMonth, easRecurrence.Interval)); case EasRecurrenceType.MonthlyTh: { RecurrenceOrderType order = SyncCalendarUtils.RecurrenceOrderTypeFromWeekOfMonth(easRecurrence.WeekOfMonth); return(new MonthlyThRecurrencePattern((DaysOfWeek)easRecurrence.DayOfWeek, order, easRecurrence.Interval)); } case EasRecurrenceType.Yearly: return(new YearlyRecurrencePattern(easRecurrence.DayOfMonth, easRecurrence.MonthOfYear)); case EasRecurrenceType.YearlyTh: { RecurrenceOrderType order2 = SyncCalendarUtils.RecurrenceOrderTypeFromWeekOfMonth(easRecurrence.WeekOfMonth); return(new YearlyThRecurrencePattern((DaysOfWeek)easRecurrence.DayOfWeek, order2, easRecurrence.MonthOfYear)); } } throw new EasFetchFailedPermanentException("Invalid recurrence type: " + type); } catch (ArgumentOutOfRangeException innerException) { throw new EasFetchFailedPermanentException("Invalid recurrence", innerException); } RecurrencePattern result; return(result); }
internal static LocalizedString OrderAsString(RecurrenceOrderType order) { switch (order) { case RecurrenceOrderType.Last: return(ClientStrings.WhenLast); case RecurrenceOrderType.First: return(ClientStrings.WhenFirst); case RecurrenceOrderType.Second: return(ClientStrings.WhenSecond); case RecurrenceOrderType.Third: return(ClientStrings.WhenThird); case RecurrenceOrderType.Fourth: return(ClientStrings.WhenFourth); } ExDiagnostics.FailFast("Invalid value for Order", false); throw new ArgumentOutOfRangeException("Order"); }
public MonthlyThRecurrencePattern(DaysOfWeek daysOfWeek, RecurrenceOrderType order, int recurrenceInterval) : this(daysOfWeek, order, recurrenceInterval, CalendarType.Default) { }
public MonthlyThRecurrencePattern(DaysOfWeek daysOfWeek, RecurrenceOrderType order) : this(daysOfWeek, order, 1) { }
private static RecurrencePattern CreateRecurrencePattern(TypeOfRecurrence recurrenceType, RecurrenceData recurrenceData, Recurrence oldRecurrence) { ushort recurrenceInterval = 1; RecurrenceData.RecurrenceType type = recurrenceData.Type; if (recurrenceData.HasInterval()) { recurrenceInterval = recurrenceData.Interval; } if (recurrenceData.HasWeekOfMonth()) { recurrenceData.WeekOfMonth = ((recurrenceData.WeekOfMonth == 5) ? byte.MaxValue : recurrenceData.WeekOfMonth); } if (recurrenceType == TypeOfRecurrence.Calendar || (recurrenceType == TypeOfRecurrence.Task && !recurrenceData.Regenerate)) { switch (type) { case RecurrenceData.RecurrenceType.Daily: if (recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["CalendarType"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfMonth, WeekOfMonth, MonthOfYear, CalendarType, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } if (recurrenceData.SubProperties["DayOfWeek"] != null) { return(new WeeklyRecurrencePattern((DaysOfWeek)recurrenceData.DayOfWeek, (int)recurrenceInterval)); } return(new DailyRecurrencePattern((int)recurrenceInterval)); case RecurrenceData.RecurrenceType.Weekly: { if (recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["CalendarType"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfMonth, WeekOfMonth, MonthOfYear, CalendarType, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } if (recurrenceData.SubProperties["DayOfWeek"] == null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek is expected with recurrence type {0}", new object[] { type.ToString() })); } WeeklyRecurrencePattern weeklyRecurrencePattern = (oldRecurrence != null) ? (oldRecurrence.Pattern as WeeklyRecurrencePattern) : null; return(new WeeklyRecurrencePattern((DaysOfWeek)recurrenceData.DayOfWeek, (int)recurrenceInterval, (recurrenceData.ProtocolVersion < 141 && weeklyRecurrencePattern != null) ? weeklyRecurrencePattern.FirstDayOfWeek : recurrenceData.FirstDayOfWeek)); } case RecurrenceData.RecurrenceType.Monthly: if (recurrenceData.SubProperties["DayOfWeek"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek, WeekOfMonth, MonthOfYear, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } if (recurrenceData.SubProperties["DayOfMonth"] == null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfMonth is expected with recurrence type {0}", new object[] { type.ToString() })); } return(new MonthlyRecurrencePattern((int)recurrenceData.DayOfMonth, (int)recurrenceInterval, recurrenceData.CalendarType)); case RecurrenceData.RecurrenceType.MonthlyTh: { if (recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfMonth, MonthOfYear, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } if (recurrenceData.SubProperties["WeekOfMonth"] == null || recurrenceData.SubProperties["DayOfWeek"] == null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "WeekOfMonth, DayOfWeek is expected with recurrence type {0}", new object[] { type.ToString() })); } RecurrenceOrderType recurrenceOrderType = (recurrenceData.WeekOfMonth == byte.MaxValue) ? RecurrenceOrderType.Last : ((RecurrenceOrderType)recurrenceData.WeekOfMonth); if (!EnumValidator.IsValidValue <RecurrenceOrderType>(recurrenceOrderType)) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "WeekOfMonth value {0} is invalid", new object[] { recurrenceOrderType.ToString() })); } return(new MonthlyThRecurrencePattern((DaysOfWeek)recurrenceData.DayOfWeek, recurrenceOrderType, (int)recurrenceInterval, recurrenceData.CalendarType)); } case RecurrenceData.RecurrenceType.Yearly: if (recurrenceData.SubProperties["DayOfWeek"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek, WeekOfMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } if (recurrenceData.SubProperties["DayOfMonth"] == null || recurrenceData.SubProperties["MonthOfYear"] == null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfMonth, MonthOfYear is expected with recurrence type {0}", new object[] { type.ToString() })); } return(new YearlyRecurrencePattern((int)recurrenceData.DayOfMonth, (int)recurrenceData.MonthOfYear, recurrenceData.IsLeapMonth, recurrenceData.CalendarType)); case RecurrenceData.RecurrenceType.YearlyTh: { if (recurrenceData.SubProperties["DayOfMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } if (recurrenceData.SubProperties["WeekOfMonth"] == null || recurrenceData.SubProperties["DayOfWeek"] == null || recurrenceData.SubProperties["MonthOfYear"] == null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "WeekOfMonth, DayOfWeek, MonthOfYear is expected with recurrence type {0}", new object[] { type.ToString() })); } RecurrenceOrderType recurrenceOrderType = (recurrenceData.WeekOfMonth == byte.MaxValue) ? RecurrenceOrderType.Last : ((RecurrenceOrderType)recurrenceData.WeekOfMonth); if (!EnumValidator.IsValidValue <RecurrenceOrderType>(recurrenceOrderType)) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "WeekOfMonth value {0} is invalid", new object[] { recurrenceOrderType.ToString() })); } return(new YearlyThRecurrencePattern((DaysOfWeek)recurrenceData.DayOfWeek, recurrenceOrderType, (int)recurrenceData.MonthOfYear, recurrenceData.IsLeapMonth, recurrenceData.CalendarType)); } } throw new ConversionException("Unexpected recurrence type, should have been caught in a higher validation layer"); } switch (type) { case RecurrenceData.RecurrenceType.Daily: if (recurrenceData.SubProperties["DayOfWeek"] != null || recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["CalendarType"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek, DayOfMonth, WeekOfMonth, MonthOfYear, CalendarType, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } return(new DailyRegeneratingPattern((int)recurrenceInterval)); case RecurrenceData.RecurrenceType.Weekly: if (recurrenceData.SubProperties["DayOfWeek"] != null || recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["CalendarType"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek, DayOfMonth, WeekOfMonth, MonthOfYear, CalendarType, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } return(new WeeklyRegeneratingPattern((int)recurrenceInterval)); case RecurrenceData.RecurrenceType.Monthly: if (recurrenceData.SubProperties["DayOfWeek"] != null || recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null || recurrenceData.SubProperties["IsLeapMonth"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek, DayOfMonth, WeekOfMonth, MonthOfYear, IsLeapMonth is not expected with recurrence type {0}", new object[] { type.ToString() })); } return(new MonthlyRegeneratingPattern((int)recurrenceInterval, recurrenceData.CalendarType)); case RecurrenceData.RecurrenceType.Yearly: if (recurrenceData.SubProperties["DayOfWeek"] != null || recurrenceData.SubProperties["DayOfMonth"] != null || recurrenceData.SubProperties["WeekOfMonth"] != null || recurrenceData.SubProperties["MonthOfYear"] != null) { throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "DayOfWeek, DayOfMonth, WeekOfMonth, MonthOfYear is not expected with recurrence type {0}", new object[] { type.ToString() })); } return(new YearlyRegeneratingPattern((int)recurrenceInterval, recurrenceData.CalendarType)); } throw new ConversionException("Unexpected recurrence type '" + type + "', should have been caught in a higher validation layer"); }
public YearlyThRecurrencePattern(DaysOfWeek daysOfWeek, RecurrenceOrderType order, int month, bool isLeapMonth, CalendarType calendarType) : this(daysOfWeek, order, month, isLeapMonth, 1, calendarType) { }
public YearlyThRecurrencePattern(DaysOfWeek daysOfWeek, RecurrenceOrderType order, int month) : this(daysOfWeek, order, month, false, CalendarType.Default) { }