コード例 #1
0
        // 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);
        }
コード例 #2
0
        // 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);
        }