// Token: 0x0600166C RID: 5740 RVA: 0x0007E508 File Offset: 0x0007C708 internal static List <ExDateRange> ConvertHoursToDateRanges(ExDateTime referenceTime, Hours hours, StorageWorkingHours workingHours, int days) { ExTraceGlobals.HeuristicsTracer.TraceFunction(0L, "WorkingHoursAwareReminderTimeCalculator.ConvertHoursToDateRanges"); ExTraceGlobals.HeuristicsTracer.TraceInformation <Hours, StorageWorkingHours, int>(0, 0L, "Hours: '{0}'; WorkingHours: '{1}'; Days: '{2}'", hours, workingHours, days); List <ExDateRange> list = new List <ExDateRange>(); ExDateRange exDateRange = new ExDateRange(referenceTime.ToUtc(), referenceTime.AddDays((double)days).ToUtc()); if (workingHours == null) { ExTraceGlobals.HeuristicsTracer.TraceInformation(0, 0L, "User WorkingHours unavailable"); hours = Hours.Any; } switch (hours) { case Hours.Personal: list = ExDateRange.SubtractRanges(exDateRange, WorkingHoursAwareReminderTimeCalculator.ConvertHoursToDateRanges(referenceTime, Hours.Working, workingHours, days)); break; case Hours.Working: for (int i = 0; i < days; i++) { ExDateTime date = referenceTime.AddDays((double)i).Date; if (workingHours.IsWorkingDay(date.DayOfWeek)) { list.Add(new ExDateRange(date.AddMinutes((double)workingHours.StartTimeInMinutes).ToUtc(), date.AddMinutes((double)workingHours.EndTimeInMinutes).ToUtc())); } } break; case Hours.Any: list.Add(exDateRange); break; } return(list); }
// Token: 0x0600166A RID: 5738 RVA: 0x0007E3A0 File Offset: 0x0007C5A0 public ExDateTime CalculateReminderTime(IModernReminder reminder, ExDateTime nowInUTC) { ExTraceGlobals.HeuristicsTracer.TraceFunction(0L, "WorkingHoursAwareReminderTimeCalculator.CalculateReminderTime"); if (reminder.ReminderTimeHint == ReminderTimeHint.Custom) { return(reminder.CustomReminderTime); } ExDateTime referenceTime = this.context.TimeZone.ConvertDateTime(reminder.ReferenceTime); ExDateTime exDateTime; if (reminder.ReminderTimeHint == ReminderTimeHint.Someday) { exDateTime = ExDateTime.MaxValue; } else { ExDateRange dateRange = WorkingHoursAwareReminderTimeCalculator.ConvertReminderTimeHintToExDateRange(reminder.ReminderTimeHint, referenceTime, this.context); List <ExDateRange> dateRanges = WorkingHoursAwareReminderTimeCalculator.ConvertHoursToDateRanges(referenceTime, reminder.Hours, this.workingHours, 14); exDateTime = WorkingHoursAwareReminderTimeCalculator.FindFirstIntersection(dateRange, dateRanges).Start; } ExTraceGlobals.HeuristicsTracer.TraceInformation <ExDateTime>(0, 0L, "WorkingHoursAwareReminderTimeCalculator calculated reminder time: {0}", exDateTime); return(exDateTime); }