Esempio n. 1
0
 static PreservableMeetingMessageProperty()
 {
     PreservableMeetingMessageProperty.CreatePreservableProperty(InternalSchema.Location, new ShouldPreservePropertyDelegate(PreservableMeetingMessageProperty.PreserveLocationTest));
     PreservableMeetingMessageProperty.CreatePreservableProperty(InternalSchema.Subject, new ShouldPreservePropertyDelegate(PreservableMeetingMessageProperty.IsRumTest));
     PreservableMeetingMessageProperty.CreatePreservableProperty(InternalSchema.SubjectPrefix, new ShouldPreservePropertyDelegate(PreservableMeetingMessageProperty.IsRumTest));
     PreservableMeetingMessageProperty.CreatePreservableProperty(InternalSchema.NormalizedSubject, new ShouldPreservePropertyDelegate(PreservableMeetingMessageProperty.IsRumTest));
 }
Esempio n. 2
0
        private void ProcessChangeHighlights(CalendarItemBase calendarItem, long meetingRequestBodySize, long calendarItemBodySize)
        {
            int num = base.GetValueOrDefault <int>(InternalSchema.ChangeHighlight, -1);

            if (calendarItem.IsNew && !(calendarItem is CalendarItemOccurrence))
            {
                num = 0;
                base.LocationIdentifierHelperInstance.SetLocationIdentifier(47221U);
                this[InternalSchema.ChangeHighlight] = num;
            }
            else
            {
                ChangeHighlightHelper changeHighlightHelper = MeetingRequest.CompareForChangeHighlightOnUpdatedItems(base.PropertyBag, meetingRequestBodySize, calendarItem.PropertyBag, calendarItemBodySize);
                if (this.ShouldPreserveAttendeesChanges(calendarItem))
                {
                    PreservablePropertyContext context = new PreservablePropertyContext(this, calendarItem, (ChangeHighlightProperties)num);
                    foreach (StorePropertyDefinition storePropertyDefinition in ChangeHighlightHelper.HighlightProperties)
                    {
                        if (changeHighlightHelper[storePropertyDefinition])
                        {
                            PreservableMeetingMessageProperty preservableMeetingMessageProperty = null;
                            if (PreservableMeetingMessageProperty.InstanceFromPropertyDefinition.TryGetValue(storePropertyDefinition, out preservableMeetingMessageProperty))
                            {
                                changeHighlightHelper[storePropertyDefinition] = !preservableMeetingMessageProperty.ShouldPreserve(context);
                            }
                        }
                    }
                }
                num = changeHighlightHelper.HighlightFlags;
                MeetingMessageType meetingMessageType = changeHighlightHelper.SuggestedMeetingType;
                if (meetingMessageType == MeetingMessageType.InformationalUpdate && calendarItem.IsCancelled)
                {
                    meetingMessageType = MeetingMessageType.FullUpdate;
                }
                if (this.MeetingRequestType != MeetingMessageType.PrincipalWantsCopy)
                {
                    this.MeetingRequestType = meetingMessageType;
                }
                else
                {
                    base.LocationIdentifierHelperInstance.SetLocationIdentifier(35701U);
                    this[InternalSchema.OriginalMeetingType] = meetingMessageType;
                }
                base.LocationIdentifierHelperInstance.SetLocationIdentifier(52085U);
                this[InternalSchema.ChangeHighlight] = num;
            }
            calendarItem.SetChangeHighlight(num);
        }
Esempio n. 3
0
        private void CopyMeetingRequestProperties(CalendarItemBase calendarItem, bool preserveLocalExceptions)
        {
            long size = calendarItem.Body.Size;

            calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(42101U);
            if (!base.IsRepairUpdateMessage || (this.ChangeHighlight & ChangeHighlightProperties.BodyProps) == ChangeHighlightProperties.BodyProps)
            {
                Body.CopyBody(this, calendarItem, false);
                this.CopyNlgPropertiesTo(calendarItem);
            }
            ChangeHighlightProperties changeHighlight = this.ChangeHighlight;

            this.ProcessChangeHighlights(calendarItem, calendarItem.Body.Size, size);
            MeetingMessageType meetingMessageType = base.GetValueOrDefault <MeetingMessageType>(InternalSchema.MeetingRequestType, MeetingMessageType.NewMeetingRequest);

            if (meetingMessageType == MeetingMessageType.PrincipalWantsCopy)
            {
                if (calendarItem.IsNew)
                {
                    meetingMessageType = MeetingMessageType.NewMeetingRequest;
                    ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingRequest.CopyMeetingRequestProperties: GOID={0}; Meeting type is PrincipalWantsCopy and calendar item just created.", this.GlobalObjectId);
                }
                else
                {
                    meetingMessageType = base.GetValueOrDefault <MeetingMessageType>(InternalSchema.OriginalMeetingType, MeetingMessageType.NewMeetingRequest);
                    ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, MeetingMessageType>((long)this.GetHashCode(), "Storage.MeetingRequest.CopyMeetingRequestProperties: GOID={0}; Meeting type is PrincipalWantsCopy. Will use OriginalMeetingType {1}", this.GlobalObjectId, meetingMessageType);
                }
            }
            base.LocationIdentifierHelperInstance.SetLocationIdentifier(60533U, LastChangeAction.CopyMeetingRequestProperties);
            calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(35957U, LastChangeAction.CopyMeetingRequestProperties);
            if (MeetingMessageType.NewMeetingRequest == meetingMessageType || calendarItem.IsNew)
            {
                ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, string>((long)this.GetHashCode(), "Storage.MeetingRequest.CopyMeetingRequestProperties: GOID={0}; {1}", this.GlobalObjectId, "Copying WriteOnCreate properties onto calendar item.");
                calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(52341U);
                CalendarItemBase.CopyPropertiesTo(this, calendarItem, MeetingMessage.WriteOnCreateProperties);
                if (base.IsSeriesMessage)
                {
                    CalendarItemBase.CopyPropertiesTo(this, calendarItem, MeetingMessage.WriteOnCreateSeriesProperties);
                }
                Reminder.EnsureMinutesBeforeStartIsInRange(calendarItem, this.consumerDefaultMinutesBeforeStart);
                if (base.IsRepairUpdateMessage)
                {
                    int?valueAsNullable = base.GetValueAsNullable <int>(CalendarItemBaseSchema.ItemVersion);
                    if (valueAsNullable != null)
                    {
                        calendarItem[CalendarItemBaseSchema.ItemVersion] = valueAsNullable;
                    }
                }
            }
            if (meetingMessageType == MeetingMessageType.NewMeetingRequest || (!base.IsRepairUpdateMessage && meetingMessageType == MeetingMessageType.FullUpdate))
            {
                calendarItem.ResponseType = ResponseType.NotResponded;
                BusyType valueOrDefault  = base.GetValueOrDefault <BusyType>(InternalSchema.IntendedFreeBusyStatus, BusyType.Busy);
                BusyType valueOrDefault2 = base.GetValueOrDefault <BusyType>(InternalSchema.FreeBusyStatus, BusyType.Tentative);
                calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(58485U);
                calendarItem[InternalSchema.IntendedFreeBusyStatus] = valueOrDefault;
                calendarItem[InternalSchema.FreeBusyStatus]         = ((valueOrDefault != BusyType.Free) ? valueOrDefault2 : BusyType.Free);
            }
            ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, string>((long)this.GetHashCode(), "Storage.MeetingRequest.CopyMeetingRequestProperties: GOID={0}; {1}", this.GlobalObjectId, "Copying properties onto calendar item.");
            byte[]       largeBinaryProperty = base.PropertyBag.GetLargeBinaryProperty(InternalSchema.AppointmentRecurrenceBlob);
            CalendarItem calendarItem2       = calendarItem as CalendarItem;
            bool         flag = false;

            if (largeBinaryProperty != null && calendarItem2 != null)
            {
                calendarItem2.SuppressUpdateRecurrenceTimeOffset = true;
                this.CopyRecurrenceBlob(calendarItem2, largeBinaryProperty, preserveLocalExceptions);
                flag = true;
            }
            else if (calendarItem.CalendarItemType == CalendarItemType.RecurringMaster)
            {
                CalendarItem calendarItem3 = calendarItem as CalendarItem;
                if (calendarItem3 != null)
                {
                    calendarItem3.Recurrence = null;
                }
            }
            calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(62581U);
            if (calendarItem is CalendarItem)
            {
                PropertyChangeMetadataProcessingFlags propertyChangeMetadataProcessingFlags = calendarItem.GetValueOrDefault <PropertyChangeMetadataProcessingFlags>(CalendarItemSchema.PropertyChangeMetadataProcessingFlags, PropertyChangeMetadataProcessingFlags.None);
                propertyChangeMetadataProcessingFlags |= PropertyChangeMetadataProcessingFlags.OverrideMetadata;
                calendarItem[CalendarItemSchema.PropertyChangeMetadataProcessingFlags] = propertyChangeMetadataProcessingFlags;
            }
            if (this.ShouldPreserveAttendeesChanges(calendarItem))
            {
                ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, string>((long)this.GetHashCode(), "Storage.MeetingRequest.CopyMeetingRequestProperties: GOID={0}; {1}", this.GlobalObjectId, "Will copy properties trying to preserve attendee's changes.");
                CalendarItemBase.CopyPropertiesTo(this, calendarItem, CalendarItemProperties.NonPreservableMeetingMessageProperties);
                PreservableMeetingMessageProperty.CopyPreserving(new PreservablePropertyContext(this, calendarItem, changeHighlight));
                if (calendarItem is CalendarItem)
                {
                    PropertyChangeMetadata valueOrDefault3        = calendarItem.GetValueOrDefault <PropertyChangeMetadata>(InternalSchema.PropertyChangeMetadata);
                    PropertyChangeMetadata valueOrDefault4        = base.GetValueOrDefault <PropertyChangeMetadata>(InternalSchema.PropertyChangeMetadata);
                    PropertyChangeMetadata propertyChangeMetadata = PropertyChangeMetadata.Merge(valueOrDefault3, valueOrDefault4);
                    if (propertyChangeMetadata != null)
                    {
                        calendarItem[InternalSchema.PropertyChangeMetadata] = propertyChangeMetadata;
                    }
                }
            }
            else
            {
                if (calendarItem.CalendarItemType == CalendarItemType.RecurringMaster || calendarItem.CalendarItemType == CalendarItemType.Single)
                {
                    calendarItem.DeleteProperties(MeetingMessage.DisplayTimeZoneProperties);
                }
                if (calendarItem is CalendarItem)
                {
                    CalendarItemBase.CopyPropertiesTo(this, calendarItem, new PropertyDefinition[]
                    {
                        InternalSchema.PropertyChangeMetadataRaw
                    });
                }
                CalendarItemBase.CopyPropertiesTo(this, calendarItem, MeetingMessage.MeetingMessageProperties);
            }
            string valueOrDefault5 = base.GetValueOrDefault <string>(InternalSchema.AppointmentClass);

            if (valueOrDefault5 != null && ObjectClass.IsDerivedClass(valueOrDefault5, "IPM.Appointment"))
            {
                calendarItem.ClassName = valueOrDefault5;
            }
            Microsoft.Exchange.Data.Storage.Item.CopyCustomPublicStrings(this, calendarItem);
            calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(54389U);
            CalendarItemBase.CopyPropertiesTo(this, calendarItem, new PropertyDefinition[]
            {
                InternalSchema.TimeZoneDefinitionRecurring
            });
            if (meetingMessageType == MeetingMessageType.InformationalUpdate && !calendarItem.IsCalendarItemTypeOccurrenceOrException)
            {
                Sensitivity?valueAsNullable2 = base.GetValueAsNullable <Sensitivity>(InternalSchema.Sensitivity);
                if (valueAsNullable2 != null && calendarItem.Sensitivity != Sensitivity.Private && Enum.IsDefined(typeof(Sensitivity), valueAsNullable2.Value))
                {
                    calendarItem.Sensitivity = valueAsNullable2.Value;
                }
            }
            calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(50293U);
            calendarItem.Reminder.Adjust();
            if (flag && calendarItem2 != null)
            {
                calendarItem2.ReloadRecurrence();
            }
        }
Esempio n. 4
0
 private static bool PreserveLocationTest(PreservablePropertyContext context)
 {
     return(context.MeetingRequest.IsRepairUpdateMessage && (context.OrganizerHighlights & ChangeHighlightProperties.Location) == ChangeHighlightProperties.None && PreservableMeetingMessageProperty.IsLocationConsistent(context));
 }
Esempio n. 5
0
 private static PreservableMeetingMessageProperty CreatePreservableProperty(StorePropertyDefinition propDef, ShouldPreservePropertyDelegate shouldPreserveTest)
 {
     return(PreservableMeetingMessageProperty.CreatePreservableProperty(propDef, shouldPreserveTest, new CopyPropertyDelegate(PreservableMeetingMessageProperty.DefaultCopy)));
 }