private static bool SearchForCalendarItem(MailboxSession session, StoreObjectId folderId, GlobalObjectId globalObjectId, out bool isOrganizer, out string subject, out string organizerEmailAddress) { StoreId arg = null; isOrganizer = false; subject = null; organizerEmailAddress = null; using (CalendarFolder calendarFolder = CalendarFolder.Bind(session, folderId, null)) { PropertyBag calendarItemProperties = calendarFolder.GetCalendarItemProperties(globalObjectId.Bytes, MeetingOrganizerValidator.CalendarOrganizerProperties); if (calendarItemProperties == null) { ExTraceGlobals.StorageTracer.TraceDebug <string>(0L, "Related Calendar Item not found in calendar folder : '{0}'", calendarFolder.DisplayName); return(false); } arg = calendarItemProperties.GetValueOrDefault <VersionedId>(InternalSchema.ItemId); string valueOrDefault = calendarItemProperties.GetValueOrDefault <string>(InternalSchema.ItemClass); AppointmentStateFlags valueOrDefault2 = calendarItemProperties.GetValueOrDefault <AppointmentStateFlags>(InternalSchema.AppointmentStateInternal); isOrganizer = IsOrganizerProperty.GetForCalendarItem(valueOrDefault, valueOrDefault2); subject = calendarItemProperties.GetValueOrDefault <string>(InternalSchema.MapiSubject); organizerEmailAddress = calendarItemProperties.GetValueOrDefault <string>(InternalSchema.SentRepresentingEmailAddress); } ExTraceGlobals.SyncTracer.TraceDebug <StoreId, bool>(0L, "Related Calendar Item found. Id: {0}. Is Organizer? {1}", arg, isOrganizer); return(true); }
protected override object InternalTryGetValue(PropertyBag.BasicPropertyStore propertyBag) { bool? flag = null; string valueOrDefault = propertyBag.GetValueOrDefault <string>(InternalSchema.ItemClass, string.Empty); if (ObjectClass.IsCalendarItemCalendarItemOccurrenceOrRecurrenceException(valueOrDefault) || ObjectClass.IsCalendarItemSeries(valueOrDefault)) { AppointmentStateFlags valueOrDefault2 = propertyBag.GetValueOrDefault <AppointmentStateFlags>(InternalSchema.AppointmentStateInternal); flag = new bool?(IsOrganizerProperty.GetForCalendarItem(valueOrDefault, valueOrDefault2)); } else if (ObjectClass.IsMeetingMessage(valueOrDefault)) { MeetingMessage meetingMessage = propertyBag.Context.StoreObject as MeetingMessage; if (meetingMessage != null) { CalendarItemBase calendarItemBase = null; try { calendarItemBase = meetingMessage.GetCorrelatedItemInternal(true); } catch (CorruptDataException) { } catch (CorrelationFailedException) { } if (calendarItemBase != null) { flag = new bool?(calendarItemBase.IsOrganizer()); } else if (!(meetingMessage is MeetingResponse)) { flag = new bool?(meetingMessage.IsMailboxOwnerTheSender()); } } } if (flag != null) { return(flag); } return(new PropertyError(this, PropertyErrorCode.NotFound)); }