예제 #1
0
        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);
        }
예제 #2
0
        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();
                }
            }
        }
예제 #3
0
 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);
 }