private void EnforceEvaluationRestrictions(IRecurrencePattern pattern) { RecurrenceEvaluationModeType?evaluationMode = pattern.EvaluationMode; RecurrenceRestrictionType? evaluationRestriction = pattern.RestrictionType; if (evaluationRestriction != RecurrenceRestrictionType.NoRestriction) { switch (evaluationMode) { case RecurrenceEvaluationModeType.AdjustAutomatically: switch (pattern.Frequency) { case FrequencyType.Secondly: { switch (evaluationRestriction) { case RecurrenceRestrictionType.Default: case RecurrenceRestrictionType.RestrictSecondly: pattern.Frequency = FrequencyType.Minutely; break; case RecurrenceRestrictionType.RestrictMinutely: pattern.Frequency = FrequencyType.Hourly; break; case RecurrenceRestrictionType.RestrictHourly: pattern.Frequency = FrequencyType.Daily; break; } } break; case FrequencyType.Minutely: { switch (evaluationRestriction) { case RecurrenceRestrictionType.RestrictMinutely: pattern.Frequency = FrequencyType.Hourly; break; case RecurrenceRestrictionType.RestrictHourly: pattern.Frequency = FrequencyType.Daily; break; } } break; case FrequencyType.Hourly: { switch (evaluationRestriction) { case RecurrenceRestrictionType.RestrictHourly: pattern.Frequency = FrequencyType.Daily; break; } } break; } break; case RecurrenceEvaluationModeType.ThrowException: case RecurrenceEvaluationModeType.Default: switch (pattern.Frequency) { case FrequencyType.Secondly: { switch (evaluationRestriction) { case RecurrenceRestrictionType.Default: case RecurrenceRestrictionType.RestrictSecondly: case RecurrenceRestrictionType.RestrictMinutely: case RecurrenceRestrictionType.RestrictHourly: throw new EvaluationEngineException(); } } break; case FrequencyType.Minutely: { switch (evaluationRestriction) { case RecurrenceRestrictionType.RestrictMinutely: case RecurrenceRestrictionType.RestrictHourly: throw new EvaluationEngineException(); } } break; case FrequencyType.Hourly: { switch (evaluationRestriction) { case RecurrenceRestrictionType.RestrictHourly: throw new EvaluationEngineException(); } } break; } break; } } }
public override void CopyFrom(object obj) { base.CopyFrom(obj); if (obj is RecurrencePattern) { RecurrencePattern r = (RecurrencePattern)obj; Frequency = r.Frequency; Until = r.Until; Count = r.Count; Interval = r.Interval; BySecond = new List<int>(r.BySecond); ByMinute = new List<int>(r.ByMinute); ByHour = new List<int>(r.ByHour); ByDay = new List<DaySpecifier>(r.ByDay); ByMonthDay = new List<int>(r.ByMonthDay); ByYearDay = new List<int>(r.ByYearDay); ByWeekNo = new List<int>(r.ByWeekNo); ByMonth = new List<int>(r.ByMonth); BySetPos = new List<int>(r.BySetPos); Wkst = r.Wkst; _RestrictionType = r._RestrictionType; _EvaluationMode = r._EvaluationMode; } base.CopyFrom(obj); }
public override void CopyFrom(ICopyable obj) { base.CopyFrom(obj); if (obj is IRecurrencePattern) { IRecurrencePattern r = (IRecurrencePattern)obj; _Frequency = r.Frequency; _Until = r.Until; _Count = r.Count; _Interval = r.Interval; if (r.BySecond != null) { _BySecond = new List <int>(r.BySecond); } else { _BySecond = null; } if (r.ByMinute != null) { _ByMinute = new List <int>(r.ByMinute); } else { _ByMinute = null; } if (r.ByHour != null) { _ByHour = new List <int>(r.ByHour); } else { _ByHour = null; } if (r.ByDay != null) { _ByDay = new List <IWeekDay>(r.ByDay); } else { _ByDay = null; } if (r.ByMonthDay != null) { _ByMonthDay = new List <int>(r.ByMonthDay); } else { _ByMonthDay = null; } if (r.ByYearDay != null) { _ByYearDay = new List <int>(r.ByYearDay); } else { _ByYearDay = null; } if (r.ByWeekNo != null) { _ByWeekNo = new List <int>(r.ByWeekNo); } else { _ByWeekNo = null; } if (r.ByMonth != null) { _ByMonth = new List <int>(r.ByMonth); } else { _ByMonth = null; } if (r.BySetPosition != null) { _BySetPosition = new List <int>(r.BySetPosition); } else { _BySetPosition = null; } _FirstDayOfWeek = r.FirstDayOfWeek; _RestrictionType = r.RestrictionType; _EvaluationMode = r.EvaluationMode; } }