Beispiel #1
0
        // Token: 0x06000957 RID: 2391 RVA: 0x0003EB14 File Offset: 0x0003CD14
        public void UpdateOldFields(MeetingRequest mtgReq)
        {
            ExDateTime?oldStartTime = null;
            ExDateTime?oldEndTime   = null;

            CalendarInfo.GetOldFields(mtgReq, out oldStartTime, out oldEndTime);
            this.UpdateOldFields(oldStartTime, oldEndTime);
        }
 // Token: 0x06000A7E RID: 2686 RVA: 0x00044E5C File Offset: 0x0004305C
 internal override bool TryCreateEmitter(CalendarInfo calendarInfo, MailboxData mailboxData, out ICalendarNotificationEmitter emitter)
 {
     emitter = null;
     if (this.IsFeatureEnabled(mailboxData.Settings) && calendarInfo.IsVoiceReminderEnabled && !string.IsNullOrEmpty(calendarInfo.VoiceReminderPhoneNumber))
     {
         emitter = new VoiceNotificationFactory.VoiceMessagingEmitter(mailboxData.Settings.ExternalDirectoryOrganizationId, mailboxData.Settings.LegacyDN);
     }
     return(emitter != null);
 }
Beispiel #3
0
        // Token: 0x06000953 RID: 2387 RVA: 0x0003E918 File Offset: 0x0003CB18
        public static CalendarInfo FromMasterCalendarItemAndOccurrenceInfo(ExDateTime creationRequestTime, ExTimeZone timeZoneAdjustment, CalendarItem masterItem, OccurrenceInfo occInfo)
        {
            CalendarInfo calendarInfo = CalendarInfo.FromCalendarItemBase(creationRequestTime, timeZoneAdjustment, masterItem);

            if (occInfo != null)
            {
                calendarInfo.CalendarItemOccurrenceIdentity = ((occInfo.VersionedId == null) ? null : occInfo.VersionedId.ObjectId);
                calendarInfo.StartTime = occInfo.StartTime;
                calendarInfo.EndTime   = occInfo.EndTime;
            }
            return(calendarInfo);
        }
 // Token: 0x06000923 RID: 2339 RVA: 0x0003DA68 File Offset: 0x0003BC68
 private static void UpdateReminderAccordingToDeletedUpdate(MailboxData mailboxData, StoreObjectId calItemId, StoreObjectId calItemOccId)
 {
     mailboxData.Actions.ForEach(delegate(CalendarNotificationAction action)
     {
         if (typeof(ReminderEmitting) != action.GetType())
         {
             return;
         }
         CalendarInfo calendarInfo = ((ReminderEmitting)action).CalendarInfo;
         if (!object.Equals(calItemId, calendarInfo.CalendarItemIdentity) || !object.Equals(calItemOccId, calendarInfo.CalendarItemOccurrenceIdentity))
         {
             return;
         }
         CalendarNotificationInitiator.CompleteAction(action, "UpdateReminderAccordingToDeletedUpdate");
     });
 }
Beispiel #5
0
        // Token: 0x0600095E RID: 2398 RVA: 0x0003F034 File Offset: 0x0003D234
        public static IList <CalendarInfo> Load(ExDateTime creationRequestTime, ExTimeZone timeZoneAdjustment, MailboxSession session, StoreObjectId calFldrId, StorageWorkingHours workingHours, ExDateTime actualizationTime, ExDateTime endTime)
        {
            List <CalendarInfo> list = new List <CalendarInfo>();

            using (CalendarFolder calendarFolder = CalendarFolder.Bind(session, calFldrId))
            {
                foreach (object[] propVals in calendarFolder.GetCalendarView(actualizationTime, endTime, CalendarInfo.InterestedProperties))
                {
                    CalendarInfo calendarInfo = CalendarInfo.FromInterestedProperties(creationRequestTime, timeZoneAdjustment, session, true, propVals);
                    if (calendarInfo.IsInteresting(CalendarNotificationType.Summary) && (workingHours == null || Utils.InWorkingHours(calendarInfo.StartTime, calendarInfo.EndTime, workingHours)))
                    {
                        list.Add(calendarInfo);
                    }
                }
            }
            return(list.AsReadOnly());
        }
 // Token: 0x06000A25 RID: 2597 RVA: 0x00042DF4 File Offset: 0x00040FF4
 internal override bool TryCreateEmitter(CalendarInfo calendarInfo, MailboxData mailboxData, out ICalendarNotificationEmitter emitter)
 {
     emitter = null;
     if (this.IsFeatureEnabled(mailboxData.Settings) && mailboxData.Settings.Text.TextNotification.CalendarNotificationSettings.ReminderSettings.Enabled)
     {
         if (mailboxData.Settings.Text.TextNotification.CalendarNotificationSettings.ReminderSettings.Duration.NonWorkHoursExcluded && !Utils.InWorkingHours(calendarInfo.StartTime, calendarInfo.EndTime, mailboxData.Settings.Text.WorkingHours))
         {
             ExTraceGlobals.AssistantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Reminder is not in working hours, subj: {0}, user: {1}", calendarInfo.NormalizedSubject, mailboxData.Settings.LegacyDN);
         }
         else
         {
             ExTraceGlobals.AssistantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Create text emitter for calendar subj: {0}, user: {1}", calendarInfo.NormalizedSubject, mailboxData.Settings.LegacyDN);
             emitter = new TextNotificationFactory.TextMessagingEmitter(mailboxData);
         }
     }
     return(emitter != null);
 }
        // Token: 0x060009C9 RID: 2505 RVA: 0x00040FA4 File Offset: 0x0003F1A4
        internal bool TryCreateReminderEmitting(CalendarInfo CalendarInfo, MailboxData mailboxData, out ReminderEmitting reminderEmitting)
        {
            reminderEmitting = null;
            List <ICalendarNotificationEmitter> list = new List <ICalendarNotificationEmitter>();

            foreach (NotificationFactoryBase notificationFactoryBase in this.factories)
            {
                ICalendarNotificationEmitter item;
                if (notificationFactoryBase.TryCreateEmitter(CalendarInfo, mailboxData, out item))
                {
                    list.Add(item);
                }
            }
            if (list.Count > 0)
            {
                reminderEmitting = new ReminderEmitting(CalendarInfo.ReminderTime, mailboxData, CalendarInfo, list);
            }
            return(reminderEmitting != null);
        }
Beispiel #8
0
        // Token: 0x06000952 RID: 2386 RVA: 0x0003E760 File Offset: 0x0003C960
        public static CalendarInfo FromInterestedProperties(ExDateTime creationRequestTime, ExTimeZone timeZoneAdjustment, MailboxSession session, bool online, object[] propVals)
        {
            CalendarInfo calendarInfo = new CalendarInfo();

            calendarInfo.CreationRequestTime = creationRequestTime;
            calendarInfo.CalendarItemType    = CalendarInfo.GetProperty <CalendarItemType>(propVals[8], CalendarItemType.Single);
            VersionedId property = CalendarInfo.GetProperty <VersionedId>(propVals[0], null);

            if (property != null)
            {
                StoreObjectId objectId = property.ObjectId;
                if (calendarInfo.CalendarItemType != CalendarItemType.Single && CalendarItemType.RecurringMaster != calendarInfo.CalendarItemType)
                {
                    calendarInfo.CalendarItemOccurrenceIdentity = objectId;
                    if (!online)
                    {
                        goto IL_79;
                    }
                    using (CalendarItemOccurrence calendarItemOccurrence = CalendarItemOccurrence.Bind(session, objectId))
                    {
                        calendarInfo.CalendarItemIdentity = calendarItemOccurrence.MasterId.ObjectId;
                        goto IL_79;
                    }
                }
                calendarInfo.CalendarItemIdentity = objectId;
            }
IL_79:
            calendarInfo.Location                   = CalendarInfo.GetProperty <string>(propVals[4], string.Empty);
            calendarInfo.ReminderIsSet              = CalendarInfo.GetProperty <bool>(propVals[3], false);
            calendarInfo.StartTime                  = CalendarInfo.GetProperty <ExDateTime>(propVals[5], ExDateTime.MinValue);
            calendarInfo.EndTime                    = CalendarInfo.GetProperty <ExDateTime>(propVals[6], ExDateTime.MinValue);
            calendarInfo.FreeBusyStatus             = (BusyType)CalendarInfo.GetProperty <int>(propVals[7], -1);
            calendarInfo.ChangeHighlight            = (ChangeHighlightProperties)CalendarInfo.GetProperty <int>(propVals[1], 0);
            calendarInfo.AppointmentState           = (AppointmentStateFlags)CalendarInfo.GetProperty <int>(propVals[2], 0);
            calendarInfo.NormalizedSubject          = CalendarInfo.GetProperty <string>(propVals[9], string.Empty);
            calendarInfo.ResponseType               = CalendarInfo.GetProperty <ResponseType>(propVals[10], ResponseType.None);
            calendarInfo.ReminderMinutesBeforeStart = (calendarInfo.ReminderIsSet ? CalendarInfo.GetProperty <int>(propVals[11], 0) : 0);
            calendarInfo.IsVoiceReminderEnabled     = CalendarInfo.GetProperty <bool>(propVals[14], false);
            calendarInfo.VoiceReminderPhoneNumber   = CalendarInfo.GetProperty <string>(propVals[15], string.Empty);
            calendarInfo.ReminderTime               = ((ExDateTime.MinValue < calendarInfo.StartTime) ? (calendarInfo.StartTime - TimeSpan.FromMinutes((double)calendarInfo.ReminderMinutesBeforeStart)) : ExDateTime.MinValue);
            calendarInfo.AdjustTimeZone(timeZoneAdjustment);
            return(calendarInfo);
        }
Beispiel #9
0
 // Token: 0x06000958 RID: 2392 RVA: 0x0003EB44 File Offset: 0x0003CD44
 public void CopyFrom(CalendarInfo other)
 {
     this.CalendarItemIdentity           = other.CalendarItemIdentity;
     this.CalendarItemOccurrenceIdentity = other.CalendarItemOccurrenceIdentity;
     this.CalendarItemType         = other.CalendarItemType;
     this.Location                 = other.Location;
     this.ReminderIsSet            = other.ReminderIsSet;
     this.ReminderTime             = other.ReminderTime;
     this.StartTime                = other.StartTime;
     this.EndTime                  = other.EndTime;
     this.FreeBusyStatus           = other.FreeBusyStatus;
     this.ChangeHighlight          = other.ChangeHighlight;
     this.AppointmentState         = other.AppointmentState;
     this.CreationRequestTime      = other.CreationRequestTime;
     this.NormalizedSubject        = other.NormalizedSubject;
     this.ResponseType             = other.ResponseType;
     this.OldStartTime             = other.OldStartTime;
     this.OldEndTime               = other.OldEndTime;
     this.IsVoiceReminderEnabled   = other.IsVoiceReminderEnabled;
     this.VoiceReminderPhoneNumber = other.VoiceReminderPhoneNumber;
 }
Beispiel #10
0
        // Token: 0x06000954 RID: 2388 RVA: 0x0003E968 File Offset: 0x0003CB68
        public static CalendarInfo FromCalendarItemBase(ExDateTime creationRequestTime, ExTimeZone timeZoneAdjustment, CalendarItemBase cal)
        {
            CalendarInfo calendarInfo = new CalendarInfo();

            calendarInfo.CreationRequestTime = creationRequestTime;
            calendarInfo.CalendarItemType    = cal.CalendarItemType;
            CalendarItemOccurrence calendarItemOccurrence = cal as CalendarItemOccurrence;

            if (cal.Id != null)
            {
                if (calendarInfo.CalendarItemType == CalendarItemType.Single || CalendarItemType.RecurringMaster == calendarInfo.CalendarItemType)
                {
                    calendarInfo.CalendarItemIdentity = cal.Id.ObjectId;
                }
                else
                {
                    calendarInfo.CalendarItemOccurrenceIdentity = cal.Id.ObjectId;
                    if (calendarItemOccurrence.MasterId != null)
                    {
                        calendarInfo.CalendarItemIdentity = calendarItemOccurrence.MasterId.ObjectId;
                    }
                }
            }
            calendarInfo.Location                   = cal.Location;
            calendarInfo.ReminderIsSet              = cal.Reminder.IsSet;
            calendarInfo.StartTime                  = cal.StartTime;
            calendarInfo.EndTime                    = cal.EndTime;
            calendarInfo.FreeBusyStatus             = cal.FreeBusyStatus;
            calendarInfo.ResponseType               = cal.ResponseType;
            calendarInfo.ReminderMinutesBeforeStart = (calendarInfo.ReminderIsSet ? cal.Reminder.MinutesBeforeStart : 0);
            calendarInfo.IsVoiceReminderEnabled     = cal.IsVoiceReminderEnabled;
            calendarInfo.VoiceReminderPhoneNumber   = cal.VoiceReminderPhoneNumber;
            calendarInfo.ReminderTime               = ((ExDateTime.MinValue < calendarInfo.StartTime) ? (calendarInfo.StartTime - TimeSpan.FromMinutes((double)calendarInfo.ReminderMinutesBeforeStart)) : ExDateTime.MinValue);
            calendarInfo.ChangeHighlight            = cal.GetValueOrDefault <ChangeHighlightProperties>(CalendarItemBaseSchema.ChangeHighlight);
            calendarInfo.AppointmentState           = cal.GetValueOrDefault <AppointmentStateFlags>(CalendarItemBaseSchema.AppointmentState);
            calendarInfo.NormalizedSubject          = cal.GetValueOrDefault <string>(ItemSchema.NormalizedSubject);
            calendarInfo.AdjustTimeZone(timeZoneAdjustment);
            return(calendarInfo);
        }
 // Token: 0x0600090D RID: 2317 RVA: 0x0003D028 File Offset: 0x0003B228
 public UpdateEmitting(MailboxData mailboxData, CalendarInfo calInfo, CalendarNotificationType type) : base(ExDateTime.Now, mailboxData, calInfo)
 {
     this.Type = type;
 }
Beispiel #12
0
 // Token: 0x06000906 RID: 2310 RVA: 0x0003CF3D File Offset: 0x0003B13D
 public ReminderEmitting(ExDateTime expectedTime, MailboxData mailboxData, CalendarInfo calInfo) : base(expectedTime, mailboxData)
 {
     this.CalendarInfo = calInfo;
     this.Emitters     = new List <ICalendarNotificationEmitter>();
     this.Emitters.Add(new TextNotificationFactory.TextMessagingEmitter(mailboxData));
 }
Beispiel #13
0
 // Token: 0x06000905 RID: 2309 RVA: 0x0003CF24 File Offset: 0x0003B124
 public ReminderEmitting(ExDateTime expectedTime, MailboxData mailboxData, CalendarInfo calInfo, List <ICalendarNotificationEmitter> emitters) : base(expectedTime, mailboxData)
 {
     this.CalendarInfo = calInfo;
     this.Emitters     = emitters;
 }
 // Token: 0x060009CC RID: 2508
 internal abstract bool TryCreateEmitter(CalendarInfo calendarInfo, MailboxData mailboxData, out ICalendarNotificationEmitter emitter);
        // Token: 0x06000924 RID: 2340 RVA: 0x0003DBB0 File Offset: 0x0003BDB0
        private static void UpdateReminderAccordingToChangedUpdate(MailboxData mailboxData, IList <CalendarInfo> calEvents, IList <CalendarInfo> eventsToBeRemoved)
        {
            List <CalendarInfo> eventsToBeAdded        = new List <CalendarInfo>(calEvents);
            ExDateTime          nextReminderReloadTime = ExDateTime.MinValue;

            mailboxData.Actions.ForEach(delegate(CalendarNotificationAction action)
            {
                if (typeof(ReminderReloading) == action.GetType())
                {
                    nextReminderReloadTime = action.ExpectedTime;
                    return;
                }
                if (typeof(ReminderEmitting) != action.GetType())
                {
                    return;
                }
                CalendarInfo calendarInfo2 = ((ReminderEmitting)action).CalendarInfo;
                IList <CalendarInfo> list  = null;
                CalendarInfo calendarInfo3 = null;
                if (CalendarChangeProcessor.TryGetMatched(eventsToBeRemoved, calendarInfo2.CalendarItemIdentity, calendarInfo2.CalendarItemOccurrenceIdentity, true, out list, out calendarInfo3) && calendarInfo3 != null)
                {
                    CalendarNotificationInitiator.CompleteAction(action, "UpdateReminderAccordingToChangedUpdate");
                }
                list          = null;
                calendarInfo3 = null;
                if (CalendarChangeProcessor.TryGetMatched(eventsToBeAdded, calendarInfo2.CalendarItemIdentity, calendarInfo2.CalendarItemOccurrenceIdentity, true, out list, out calendarInfo3))
                {
                    eventsToBeAdded.Remove(calendarInfo3);
                    ReminderEmitting action3;
                    if (!calendarInfo3.ReminderIsSet || !calendarInfo3.IsInteresting(CalendarNotificationType.ChangedUpdate) || calendarInfo3.ReminderTime < calendarInfo3.CreationRequestTime || !NotificationFactories.Instance.TryCreateReminderEmitting(calendarInfo3, action.Context, out action3))
                    {
                        CalendarNotificationInitiator.CompleteAction(action, "UpdateReminderAccordingToChangedUpdate");
                        return;
                    }
                    CalendarNotificationInitiator.UpdateAction(action, action3, "UpdateReminderAccordingToChangedUpdate");
                }
            });
            foreach (CalendarInfo calendarInfo in eventsToBeAdded)
            {
                if (calendarInfo.ReminderIsSet)
                {
                    if (calendarInfo.ReminderTime < calendarInfo.CreationRequestTime)
                    {
                        ExTraceGlobals.AssistantTracer.TraceDebug((long)typeof(CalendarChangeProcessor).GetHashCode(), "Reminder is out of date, subj: {0}, usr: {1}, event_t: {2}, rmd_t: {3}, s_t: {4}, e_t: {5}", new object[]
                        {
                            calendarInfo.NormalizedSubject,
                            mailboxData.Settings.LegacyDN,
                            calendarInfo.CreationRequestTime,
                            calendarInfo.ReminderTime,
                            calendarInfo.StartTime,
                            calendarInfo.EndTime
                        });
                    }
                    else if (nextReminderReloadTime == ExDateTime.MinValue || calendarInfo.ReminderTime <= nextReminderReloadTime)
                    {
                        ReminderEmitting action2;
                        if (NotificationFactories.Instance.TryCreateReminderEmitting(calendarInfo, mailboxData, out action2))
                        {
                            CalendarNotificationInitiator.ScheduleAction(action2, "UpdateReminderAccordingToChangedUpdate");
                        }
                    }
                    else
                    {
                        ExTraceGlobals.AssistantTracer.TraceDebug <ExDateTime, ExDateTime>((long)typeof(CalendarChangeProcessor).GetHashCode(), "We didn't process this event because reminderTime {0} is greater nextReminderReloadTime {1}. ", calendarInfo.ReminderTime, nextReminderReloadTime);
                    }
                }
            }
        }
        // Token: 0x06000921 RID: 2337 RVA: 0x0003D8D4 File Offset: 0x0003BAD4
        private static bool TryGetMatched(IList <CalendarInfo> calEvents, StoreObjectId calItemId, StoreObjectId calItemOccId, bool returnExactlyMatchedOnly, out IList <CalendarInfo> eventsOnlyItemIdMatched, out CalendarInfo eventExactlyMatched)
        {
            eventsOnlyItemIdMatched = null;
            eventExactlyMatched     = null;
            bool result = false;

            foreach (CalendarInfo calendarInfo in calEvents)
            {
                if (object.Equals(calItemId, calendarInfo.CalendarItemIdentity))
                {
                    if (object.Equals(calItemOccId, calendarInfo.CalendarItemOccurrenceIdentity))
                    {
                        eventExactlyMatched = calendarInfo;
                        if (returnExactlyMatchedOnly)
                        {
                            break;
                        }
                    }
                    else if (returnExactlyMatchedOnly)
                    {
                        result = true;
                    }
                    else
                    {
                        if (eventsOnlyItemIdMatched == null)
                        {
                            eventsOnlyItemIdMatched = new List <CalendarInfo>();
                        }
                        eventsOnlyItemIdMatched.Add(calendarInfo);
                    }
                }
            }
            if (!returnExactlyMatchedOnly)
            {
                return(result);
            }
            return(null != eventExactlyMatched);
        }
Beispiel #17
0
        // Token: 0x0600095F RID: 2399 RVA: 0x0003F0D0 File Offset: 0x0003D2D0
        public static List <CalendarInfo> Load(ExDateTime creationRequestTime, ExTimeZone timeZoneAdjustment, MailboxSession session, MeetingRequest mtgReq, CalendarItemBase calItemBase, StorageWorkingHours workingHours, ExDateTime actualizationTime, ExDateTime endTime)
        {
            List <CalendarInfo>   list        = new List <CalendarInfo>();
            Interval <ExDateTime> timeslot    = new Interval <ExDateTime>(actualizationTime, false, endTime, true);
            ExDateTime?           exDateTime  = null;
            ExDateTime?           exDateTime2 = null;

            if (mtgReq != null)
            {
                CalendarInfo.GetOldFields(mtgReq, out exDateTime, out exDateTime2);
            }
            if (CalendarItemType.RecurringMaster != calItemBase.CalendarItemType || ((CalendarItem)calItemBase).Recurrence == null)
            {
                CalendarInfo calendarInfo = CalendarInfo.FromCalendarItemBase(creationRequestTime, timeZoneAdjustment, calItemBase);
                calendarInfo.UpdateOldFields(exDateTime, exDateTime2);
                if (OccurrenceLoader.IsInteresing(timeslot, calendarInfo.OldStartTime, calendarInfo.OldEndTime, calendarInfo.StartTime, calendarInfo.EndTime, workingHours))
                {
                    list.Add(calendarInfo);
                }
                else
                {
                    ExTraceGlobals.AssistantTracer.TraceDebug((long)typeof(ReminderLoader).GetHashCode(), "The calendar update/reminder is out of the valid scope. subj: {0}, calItemId: {1}, calItemOccId: {2}, event_t: {3}, rmd_t: {4}, s_t: {5}, e_t: {6}, S_T: {7} E_T: {8}, scope_s: {9}, scope_e: {10}", new object[]
                    {
                        calendarInfo.NormalizedSubject,
                        calendarInfo.CalendarItemIdentity,
                        calendarInfo.CalendarItemOccurrenceIdentity,
                        calendarInfo.CreationRequestTime,
                        calendarInfo.ReminderTime,
                        calendarInfo.OldStartTime,
                        calendarInfo.OldEndTime,
                        calendarInfo.StartTime,
                        calendarInfo.EndTime,
                        actualizationTime,
                        endTime
                    });
                }
                return(list);
            }
            foreach (OccurrenceInfo occurrenceInfo in ((CalendarItem)calItemBase).Recurrence.GetOccurrenceInfoList(actualizationTime, endTime))
            {
                if (!OccurrenceLoader.IsInteresing(timeslot, exDateTime, exDateTime2, occurrenceInfo.StartTime, occurrenceInfo.EndTime, workingHours))
                {
                    ExTraceGlobals.AssistantTracer.TraceDebug((long)typeof(ReminderLoader).GetHashCode(), "The calendar update/reminder is out of the valid scope.calItemId: {0}, calItemOccId: {1}, event_t: {2}, rmd_m: {3}, s_t: {4}, e_t: {5}, S_T: {6} E_T: {7}, scope_s: {8}, scope_e: {9}", new object[]
                    {
                        (calItemBase.Id == null) ? null : calItemBase.Id.ObjectId,
                        occurrenceInfo.OccurrenceDateId,
                        actualizationTime,
                        (calItemBase.Reminder == null) ? -1 : calItemBase.Reminder.MinutesBeforeStart,
                        exDateTime,
                        exDateTime2,
                        occurrenceInfo.StartTime,
                        occurrenceInfo.EndTime,
                        actualizationTime,
                        endTime
                    });
                }
                else
                {
                    CalendarInfo calendarInfo2 = null;
                    if (occurrenceInfo.VersionedId == null)
                    {
                        calendarInfo2 = CalendarInfo.FromMasterCalendarItemAndOccurrenceInfo(creationRequestTime, timeZoneAdjustment, (CalendarItem)calItemBase, occurrenceInfo);
                    }
                    else
                    {
                        using (CalendarItemOccurrence calendarItemOccurrence = ((CalendarItem)calItemBase).OpenOccurrenceByOriginalStartTime(occurrenceInfo.OriginalStartTime, new PropertyDefinition[0]))
                        {
                            calendarInfo2 = CalendarInfo.FromCalendarItemBase(creationRequestTime, timeZoneAdjustment, calendarItemOccurrence);
                        }
                    }
                    calendarInfo2.UpdateOldFields(exDateTime, exDateTime2);
                    list.Add(calendarInfo2);
                }
            }
            return(list);
        }
        // Token: 0x0600095D RID: 2397 RVA: 0x0003ED90 File Offset: 0x0003CF90
        public static IList <CalendarInfo> Load(ExDateTime creationRequestTime, ExTimeZone timeZoneAdjustment, MailboxSession session, StoreObjectId calFldrId, StorageWorkingHours workingHours, ExDateTime actualizationTime, ExDateTime endTime)
        {
            StoreObjectId defaultFolderId = session.GetDefaultFolderId(DefaultFolderType.Reminders);

            if (defaultFolderId == null)
            {
                ExTraceGlobals.AssistantTracer.TraceDebug <IExchangePrincipal, string>((long)typeof(ReminderLoader).GetHashCode(), "cannot open reminder folder for user {0}, Time {1}", session.MailboxOwner, ExDateTime.GetNow(timeZoneAdjustment).ToLongTimeString());
                return(new CalendarInfo[0]);
            }
            List <CalendarInfo> list          = new List <CalendarInfo>();
            StoreObjectId       storeObjectId = calFldrId;

            if (calFldrId.IsFolderId && StoreObjectType.Folder != calFldrId.ObjectType)
            {
                storeObjectId = calFldrId.Clone();
                storeObjectId.UpdateItemType(StoreObjectType.Folder);
            }
            QueryFilter queryFilter = new AndFilter(new QueryFilter[]
            {
                new ComparisonFilter(ComparisonOperator.GreaterThanOrEqual, ItemSchema.ReminderNextTime, actualizationTime),
                new ComparisonFilter(ComparisonOperator.LessThan, ItemSchema.ReminderNextTime, endTime),
                new ComparisonFilter(ComparisonOperator.Equal, ItemSchema.ReminderIsSet, true),
                new ComparisonFilter(ComparisonOperator.Equal, StoreObjectSchema.ParentItemId, storeObjectId)
            });

            SortBy[] sortColumns = new SortBy[]
            {
                new SortBy(ItemSchema.ReminderNextTime, SortOrder.Ascending)
            };
            new Interval <ExDateTime>(actualizationTime, false, endTime, true);
            using (SearchFolder searchFolder = SearchFolder.Bind(session, defaultFolderId))
            {
                using (QueryResult queryResult = searchFolder.ItemQuery(ItemQueryType.None, queryFilter, sortColumns, CalendarInfo.InterestedProperties))
                {
                    ExDateTime exDateTime = ExDateTime.MinValue;
                    foreach (object[] propVals in queryResult.GetRows(100))
                    {
                        CalendarInfo calendarInfo = CalendarInfo.FromInterestedProperties(creationRequestTime, timeZoneAdjustment, session, true, propVals);
                        if (CalendarItemType.RecurringMaster == calendarInfo.CalendarItemType)
                        {
                            using (CalendarItem calendarItem = CalendarItem.Bind(session, calendarInfo.CalendarItemIdentity))
                            {
                                using (CalendarItemOccurrence calendarItemOccurrence = (CalendarItemOccurrence)calendarItem.Reminder.GetPertinentItem(actualizationTime))
                                {
                                    if (calendarItemOccurrence != null)
                                    {
                                        calendarInfo = CalendarInfo.FromCalendarItemBase(creationRequestTime, timeZoneAdjustment, calendarItemOccurrence);
                                    }
                                }
                            }
                        }
                        if (!(calendarInfo.ReminderTime < actualizationTime) && calendarInfo.IsInteresting(CalendarNotificationType.Reminder) && (workingHours == null || Utils.InWorkingHours(calendarInfo.StartTime, calendarInfo.EndTime, workingHours)))
                        {
                            if (ExDateTime.MinValue == exDateTime)
                            {
                                exDateTime = calendarInfo.ReminderTime;
                            }
                            else if (calendarInfo.ReminderTime > exDateTime)
                            {
                                break;
                            }
                            list.Add(calendarInfo);
                        }
                    }
                }
            }
            return(list.AsReadOnly());
        }