// Token: 0x06001667 RID: 5735 RVA: 0x0007E350 File Offset: 0x0007C550 public IReminderTimeCalculator Create(IMailboxSession session) { IReminderTimeCalculatorContextFactory reminderTimeCalculatorContextFactory = new ReminderTimeCalculatorContextFactory(session); ReminderTimeCalculatorContext reminderTimeCalculatorContext = reminderTimeCalculatorContextFactory.Create(); return(new WorkingHoursAwareReminderTimeCalculator(reminderTimeCalculatorContext, reminderTimeCalculatorContext.WorkingHours)); }
// Token: 0x06001669 RID: 5737 RVA: 0x0007E37F File Offset: 0x0007C57F internal WorkingHoursAwareReminderTimeCalculator(ReminderTimeCalculatorContext context, StorageWorkingHours workingHours) { ArgumentValidator.ThrowIfNull("context", context); this.context = context; this.workingHours = workingHours; }
// Token: 0x0600166D RID: 5741 RVA: 0x0007E618 File Offset: 0x0007C818 internal static ExDateRange ConvertReminderTimeHintToExDateRange(ReminderTimeHint hint, ExDateTime referenceTime, ReminderTimeCalculatorContext context) { ExTraceGlobals.HeuristicsTracer.TraceFunction(0L, "WorkingHoursAwareReminderTimeCalculator.ConvertReminderTimeHintToExDateRange"); ExTraceGlobals.HeuristicsTracer.TraceInformation <ReminderTimeHint, ExDateTime, DayOfWeek>(0, 0L, "ReminderTimeHint : '{0}'; ReferenceTime : '{1}'; StartOfWeek: '{2}'", hint, referenceTime, context.StartOfWeek); ExDateRange exDateRange; switch (hint) { case ReminderTimeHint.LaterToday: exDateRange = new ExDateRange(referenceTime.Add(WorkingHoursAwareReminderTimeCalculator.RemindLaterMinOffsetTimeSpan).ToUtc(), referenceTime.Add(WorkingHoursAwareReminderTimeCalculator.RemindLaterMinOffsetTimeSpan).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc()); goto IL_496; case ReminderTimeHint.Tomorrow: exDateRange = new ExDateRange(referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayStartTimeSpan).ToUtc(), referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc()); goto IL_496; case ReminderTimeHint.TomorrowMorning: exDateRange = new ExDateRange(referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.MorningStartTimeSpan).ToUtc(), referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.MorningEndTimeSpan).ToUtc()); goto IL_496; case ReminderTimeHint.TomorrowAfternoon: exDateRange = new ExDateRange(referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.AfternoonStartTimeSpan).ToUtc(), referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.AfternoonEndTimeSpan).ToUtc()); goto IL_496; case ReminderTimeHint.TomorrowEvening: exDateRange = new ExDateRange(referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.EveningStartTimeSpan).ToUtc(), referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.EveningEndTimeSpan).ToUtc()); goto IL_496; case ReminderTimeHint.ThisWeekend: { int num = WorkingHoursAwareReminderTimeCalculator.DaysTilNextOccurrence(referenceTime, DayOfWeek.Saturday); if (num == 7) { return(new ExDateRange(referenceTime.ToUtc(), referenceTime.AddDays(1.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc())); } if (num == 6) { return(new ExDateRange(referenceTime.ToUtc(), referenceTime.Date.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc())); } return(new ExDateRange(referenceTime.AddDays((double)num).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayStartTimeSpan).ToUtc(), referenceTime.AddDays((double)(num + 1)).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc())); } case ReminderTimeHint.NextWeek: { ExDateTime date = referenceTime.AddDays((double)WorkingHoursAwareReminderTimeCalculator.DaysTilNextOccurrence(referenceTime, context.StartOfWeek)).Date; exDateRange = new ExDateRange(date.ToUtc(), date.AddDays(6.0).Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc()); goto IL_496; } case ReminderTimeHint.NextMonth: { int num2 = ExDateTime.DaysInMonth(referenceTime.Year, referenceTime.Month) - referenceTime.Day + 1; ExDateTime date2 = referenceTime.AddDays((double)num2).Date; ExDateTime exDateTime = date2.AddDays((double)(ExDateTime.DaysInMonth(date2.Year, date2.Month) - 1)); exDateRange = new ExDateRange(date2.ToUtc(), exDateTime.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc()); goto IL_496; } case ReminderTimeHint.Now: exDateRange = new ExDateRange(referenceTime.ToUtc(), referenceTime.ToUtc()); goto IL_496; case ReminderTimeHint.InTwoDays: exDateRange = new ExDateRange(referenceTime.AddDays(2.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayStartTimeSpan).ToUtc(), referenceTime.AddDays(2.0).Date.Add(WorkingHoursAwareReminderTimeCalculator.DayEndTimeSpan).ToUtc()); goto IL_496; } throw new InvalidOperationException("unsupported reminderTimeHint"); IL_496: ExTraceGlobals.HeuristicsTracer.TraceInformation <ExDateTime, ExDateTime>(0, 0L, "Calculated reminder range : '{0}' - '{1}'", exDateRange.Start, exDateRange.End); return(exDateRange); }