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