internal InternalRecurrence GetTruncatedRecurrence(ExDateTime firstOccurrenceId, ExDateTime lastOccurrenceId, bool keepNoEndDateRange) { RecurrenceRange recurrenceRange = (keepNoEndDateRange && this.recurrence.Range is NoEndRecurrenceRange) ? new NoEndRecurrenceRange(firstOccurrenceId) : new EndDateRecurrenceRange(firstOccurrenceId, lastOccurrenceId); if (!recurrenceRange.Equals(this.recurrence.Range)) { InternalRecurrence internalRecurrence = new InternalRecurrence(this.recurrence.Pattern, recurrenceRange, this.recurrence.MasterItem as CalendarItem, this.recurrence.CreatedExTimeZone, this.recurrence.ReadExTimeZone, this.recurrence.StartOffset, this.recurrence.EndOffset); RecurrenceBlobMerger.Merge(this.storeSession, null, null, this.recurrence, internalRecurrence); return(internalRecurrence); } return(null); }
private void CopyRecurrenceBlob(CalendarItem calendarItem, byte[] recurrenceBlob, bool preserveLocalExceptions) { InternalRecurrence originalRecurrence = preserveLocalExceptions ? CalendarItem.GetRecurrenceFromItem(calendarItem) : null; calendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(46197U); calendarItem[InternalSchema.AppointmentRecurrenceBlob] = recurrenceBlob; if (preserveLocalExceptions) { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, string>((long)this.GetHashCode(), "Storage.MeetingRequest.CopyMeetingRequestProperties: GOID={0}; {1}", this.GlobalObjectId, "Will merge the recurrence blob."); CalendarItemBase.CopyPropertiesTo(this, calendarItem, new PropertyDefinition[] { CalendarItemBaseSchema.TimeZone, CalendarItemBaseSchema.TimeZoneBlob, CalendarItemBaseSchema.TimeZoneDefinitionRecurring }); InternalRecurrence recurrenceFromItem = CalendarItem.GetRecurrenceFromItem(calendarItem); if (RecurrenceBlobMerger.Merge(base.Session, calendarItem, this.GlobalObjectId, originalRecurrence, recurrenceFromItem)) { calendarItem[InternalSchema.AppointmentRecurrenceBlob] = recurrenceFromItem.ToByteArray(); } } }
private void CopyToCalendarItem(Item promotedItem, CalendarItemBase calendarItem, bool itemCreated) { foreach (PropertyDefinition propertyDefinition in InternetCalendarSchema.ImportUpdate) { object obj = promotedItem.TryGetProperty(propertyDefinition); if (obj != null && !PropertyError.IsPropertyNotFound(obj)) { if (propertyDefinition == CalendarItemBaseSchema.AppointmentRecurrenceBlob && !itemCreated) { CalendarItem calendarItem2 = calendarItem as CalendarItem; if (calendarItem2 != null) { InternalRecurrence recurrenceFromItem = CalendarItem.GetRecurrenceFromItem(promotedItem); InternalRecurrence internalRecurrence = new InternalRecurrence(recurrenceFromItem.Pattern, recurrenceFromItem.Range, calendarItem2, recurrenceFromItem.CreatedExTimeZone, recurrenceFromItem.ReadExTimeZone, recurrenceFromItem.StartOffset, recurrenceFromItem.EndOffset); RecurrenceBlobMerger.Merge(null, null, calendarItem.GlobalObjectId, recurrenceFromItem, internalRecurrence); calendarItem2.Recurrence = internalRecurrence; goto IL_9C; } } calendarItem[propertyDefinition] = obj; } else { calendarItem.Delete(propertyDefinition); } IL_9C :; } using (TextReader textReader = promotedItem.Body.OpenTextReader(BodyFormat.ApplicationRtf)) { using (TextWriter textWriter = calendarItem.Body.OpenTextWriter(BodyFormat.ApplicationRtf)) { Util.StreamHandler.CopyText(textReader, textWriter); } } calendarItem.CoreItem.Recipients.CopyRecipientsFrom(promotedItem.CoreItem.Recipients); }