Example #1
0
        protected override ConsistencyCheckResult DetectInconsistencies()
        {
            RoleType               checkingRole           = (RoleType)(-1);
            UserObject             checkingUser           = null;
            ConsistencyCheckResult consistencyCheckResult = ConsistencyCheckResult.CreateInstance(base.Type, base.Description);

            try
            {
                Recurrence recurrence  = null;
                Recurrence recurrence2 = null;
                if (base.Context.OrganizerItem != null && base.Context.OrganizerItem is CalendarItem)
                {
                    checkingRole = RoleType.Organizer;
                    checkingUser = base.Context.Organizer;
                    recurrence   = ((CalendarItem)base.Context.OrganizerItem).Recurrence;
                }
                if (base.Context.AttendeeItem != null && base.Context.AttendeeItem is CalendarItem)
                {
                    checkingRole = RoleType.Attendee;
                    checkingUser = base.Context.Attendee;
                    recurrence2  = ((CalendarItem)base.Context.AttendeeItem).Recurrence;
                }
                consistencyCheckResult.ComparedRecurrenceBlobs  = false;
                consistencyCheckResult.RecurrenceBlobComparison = true;
                if (recurrence != null)
                {
                    checkingRole = (RoleType)(-1);
                    checkingUser = null;
                    if (recurrence2 != null)
                    {
                        consistencyCheckResult.ComparedRecurrenceBlobs  = true;
                        consistencyCheckResult.RecurrenceBlobComparison = recurrence.Equals(recurrence2);
                        checkingRole = RoleType.Attendee;
                        checkingUser = base.Context.Attendee;
                        RecurrenceInfo recurrenceInfo = recurrence2.GetRecurrenceInfo();
                        this.DetectRecurrenceInfoInconsistencies(recurrenceInfo, consistencyCheckResult);
                        base.Context.AttendeeRecurrence = recurrenceInfo;
                    }
                    else if (base.Context.AttendeeItem != null)
                    {
                        this.FailCheck(consistencyCheckResult, "Attendee's missing the recurrence in a recurring meeting.", RecurrenceInconsistencyType.MissingRecurrence, base.Context.OrganizerItem.StartTime);
                    }
                    checkingRole = RoleType.Organizer;
                    checkingUser = base.Context.Organizer;
                    RecurrenceInfo recurrenceInfo2 = recurrence.GetRecurrenceInfo();
                    this.DetectRecurrenceInfoInconsistencies(recurrenceInfo2, consistencyCheckResult);
                    base.Context.OrganizerRecurrence = recurrenceInfo2;
                }
                else if (recurrence2 != null)
                {
                    if (base.Context.OrganizerItem != null)
                    {
                        this.FailCheck(consistencyCheckResult, "A single meeting is recurring in the attendee's calendar.", RecurrenceInconsistencyType.ExtraRecurrence, base.Context.OrganizerItem.StartTime);
                    }
                    checkingRole = RoleType.Attendee;
                    checkingUser = base.Context.Attendee;
                    RecurrenceInfo recurrenceInfo3 = recurrence2.GetRecurrenceInfo();
                    this.DetectRecurrenceInfoInconsistencies(recurrenceInfo3, consistencyCheckResult);
                    base.Context.AttendeeRecurrence = recurrenceInfo3;
                }
            }
            catch (RecurrenceFormatException exception)
            {
                this.FailCheck(consistencyCheckResult, checkingRole, checkingUser, exception);
            }
            catch (StorageTransientException exception2)
            {
                this.RegisterStorageException(consistencyCheckResult, exception2);
            }
            catch (StoragePermanentException exception3)
            {
                this.RegisterStorageException(consistencyCheckResult, exception3);
            }
            return(consistencyCheckResult);
        }