// 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); }
// 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"); }); }
// 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); }
// 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); }
// 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; }
// 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; }
// 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)); }
// 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); }
// 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()); }