// Token: 0x06000E0C RID: 3596 RVA: 0x00054E78 File Offset: 0x00053078 protected override void InvokeInternal(InvokeArgs invokeArgs, List <KeyValuePair <string, object> > customDataToLog) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); MailboxSession mailboxSession = invokeArgs.StoreSession as MailboxSession; if (mailboxSession == null) { return; } if (mailboxSession.MailboxOwner.RecipientTypeDetails != RecipientTypeDetails.UserMailbox && mailboxSession.MailboxOwner.RecipientTypeDetails != RecipientTypeDetails.LinkedMailbox && mailboxSession.MailboxOwner.RecipientTypeDetails != RecipientTypeDetails.GroupMailbox) { CalendarRepairAssistant.CachedStateTracer.TraceDebug <Guid, string, string>((long)this.GetHashCode(), "Skipping mailbox with guid {0} and display name {1} since this is a {2} and not a UserMailbox or a LinkedMailbox", mailboxSession.MailboxGuid, mailboxSession.MailboxOwner.MailboxInfo.DisplayName, mailboxSession.MailboxOwner.RecipientTypeDetails.ToString()); return; } ExDateTime now = ExDateTime.Now; ExDateTime rangeStart = now.AddDays((double)(-(double)this.RepairPolicy.DaysInWindowBackward)); ExDateTime rangeEnd = now.AddDays((double)this.RepairPolicy.DaysInWindowForward); CachedState cachedState = AssistantsService.CachedObjectsList.GetCachedState(mailboxSession.MailboxGuid); bool flag = ResourceCheck.DetailedCheckForAutomatedBooking(mailboxSession, cachedState); if (flag) { CalendarRepairAssistant.CachedStateTracer.TraceDebug((long)this.GetHashCode(), "{0}: Calendar Repair Assistant is skipping resource mailbox.", new object[] { TraceContext.Get() }); return; } CalendarRepairAssistantLogEntry calendarRepairAssistantLogEntry = new CalendarRepairAssistantLogEntry { DatabaseGuid = mailboxSession.MailboxOwner.MailboxInfo.GetDatabaseGuid(), MailboxGuid = mailboxSession.MailboxGuid, TenantGuid = mailboxSession.MailboxOwner.MailboxInfo.OrganizationId.GetTenantGuid(), RepairMode = this.RepairPolicy.RepairMode.ToString(), RangeStartTime = string.Format("{0:O}", rangeStart.ToUtc()), RangeEndTime = string.Format("{0:O}", rangeEnd.ToUtc()) }; this.MarkMailboxForUpgrade(mailboxSession, calendarRepairAssistantLogEntry); try { CalendarRepairAssistant.CachedStateTracer.TraceDebug <object, string>((long)this.GetHashCode(), "{0}: Calendar Repair Assistant starting to validate mailbox: {1}.", TraceContext.Get(), mailboxSession.MailboxOwner.MailboxInfo.DisplayName); CalendarValidator calendarValidator = CalendarValidator.CreateRepairingInstance(mailboxSession, rangeStart, rangeEnd, this.RepairPolicy, CalendarRepairAssistant.cvsPopulationTimeout); calendarValidator.OnItemInspected += this.incrementTotalItemsInspected; calendarValidator.OnItemRepaired += this.incrementTotalItemsRepaired; List <MeetingValidationResult> validationResults = calendarValidator.Run(); calendarValidator.OnItemInspected -= this.incrementTotalItemsInspected; calendarValidator.OnItemRepaired -= this.incrementTotalItemsRepaired; calendarRepairAssistantLogEntry.AddValidationResults(validationResults); CalendarRepairLogger.Instance.Log(validationResults, mailboxSession.MailboxOwner, rangeStart, rangeEnd); if (CalendarRepairAssistant.IsCRAReliabilityLoggerEnabled(mailboxSession)) { CalendarReliabilityInsigntLogger.Instance.Log(calendarRepairAssistantLogEntry, validationResults); } CalendarRepairAssistant.CachedStateTracer.TraceDebug <object, string>((long)this.GetHashCode(), "{0}: Calendar Repair Assistant completed validating mailbox: {1}.", TraceContext.Get(), mailboxSession.MailboxOwner.MailboxInfo.DisplayName); } catch (WrongServerException ex) { string message = string.Format("Could not access the mailbox (ExchangePrincipal:'{0}'). Exception: {1}.", mailboxSession.MailboxOwner, ex); CalendarRepairAssistant.Tracer.TraceDebug((long)this.GetHashCode(), message); calendarRepairAssistantLogEntry.AddExceptionToLog(ex); } catch (MailboxUserNotFoundException ex2) { CalendarRepairAssistant.Tracer.TraceDebug <MailboxUserNotFoundException>((long)this.GetHashCode(), "MailboxUserNotFoundException:{0}", ex2); calendarRepairAssistantLogEntry.AddExceptionToLog(ex2); } catch (CorruptDataException ex3) { CalendarRepairAssistant.Tracer.TraceDebug <CorruptDataException>((long)this.GetHashCode(), "CorruptDataException:{0}", ex3); calendarRepairAssistantLogEntry.AddExceptionToLog(ex3); } catch (SubmissionQuotaExceededException ex4) { CalendarRepairAssistant.Tracer.TraceDebug <SubmissionQuotaExceededException>((long)this.GetHashCode(), "SubmissionQuotaExceededException:{0}", ex4); calendarRepairAssistantLogEntry.AddExceptionToLog(ex4); } catch (StoragePermanentException ex5) { CalendarRepairAssistant.Tracer.TraceDebug <StoragePermanentException>((long)this.GetHashCode(), "StoragePermanentException:{0}", ex5); calendarRepairAssistantLogEntry.AddExceptionToLog(ex5); } catch (Exception ex6) { CalendarRepairAssistant.Tracer.TraceDebug <Exception>((long)this.GetHashCode(), "Exception:{0}", ex6); calendarRepairAssistantLogEntry.AddExceptionToLog(ex6); throw ex6; } finally { stopwatch.Stop(); calendarRepairAssistantLogEntry.TotalProcessingTime = stopwatch.Elapsed.TotalMilliseconds.ToString(); customDataToLog.AddRange(calendarRepairAssistantLogEntry.FormatCustomData()); } }
private void DoCalendarValidation(ADUser user) { List <MeetingValidationResult> list = null; base.WriteProgress(Strings.CalendarValidationTask, Strings.ValidatingCalendar(this.Identity.ToString()), 0); try { TopologyProvider.SetProcessTopologyMode(false, false); string mailboxUserAddress = string.Format("SMTP:{0}", user.PrimarySmtpAddress); CalendarValidator calendarValidator; if (!string.IsNullOrEmpty(this.MeetingID)) { VersionedId meetingId = new VersionedId(this.MeetingID); calendarValidator = CalendarValidator.CreateMeetingSpecificValidatingInstance(mailboxUserAddress, user.OrganizationId, base.RootOrgContainerId, meetingId); } else { calendarValidator = CalendarValidator.CreateRangeValidatingInstance(mailboxUserAddress, user.OrganizationId, base.RootOrgContainerId, this.IntervalStartDate, this.IntervalEndDate, this.Location, this.Subject); } list = calendarValidator.Run(); } catch (WrongServerException exception) { base.WriteError(exception, ErrorCategory.InvalidArgument, this); } catch (MailboxUserNotFoundException exception2) { base.WriteError(exception2, ErrorCategory.InvalidData, this); } catch (CorruptDataException exception3) { base.WriteError(exception3, ErrorCategory.InvalidData, this); } finally { TopologyProvider.SetProcessTopologyMode(true, false); } this.validatorObjectCount = 0; int num = (list.Count > 0) ? list.Count : 1; foreach (MeetingValidationResult meetingValidationResult in list) { if (!this.OnlyReportErrors || !meetingValidationResult.IsConsistent || !meetingValidationResult.WasValidationSuccessful || meetingValidationResult.DuplicatesDetected) { MeetingValidationResult meetingValidationResult2 = MeetingValidationResult.CreateOutputObject(meetingValidationResult); MeetingValidationResult.FilterResultsLists(meetingValidationResult2, meetingValidationResult, this.FailureCategoryType, this.OnlyReportErrors); this.validatorObjectCount++; bool flag = true; if (meetingValidationResult2.ResultsPerAttendee.Length < 1) { flag = false; } if ((this.FailureCategoryType & FailureCategory.CorruptMeetings) == FailureCategory.CorruptMeetings && !meetingValidationResult2.WasValidationSuccessful) { flag = true; } else if ((this.FailureCategoryType & FailureCategory.DuplicateMeetings) == FailureCategory.DuplicateMeetings && meetingValidationResult2.DuplicatesDetected) { flag = true; } if (flag) { meetingValidationResult2.SetIsReadOnly(true); base.WriteResult(meetingValidationResult2); } base.WriteProgress(Strings.CalendarValidationTask, Strings.ValidatingCalendar(this.Identity.ToString()), this.validatorObjectCount / num * 100); } } base.WriteProgress(Strings.CalendarValidationTask, Strings.ValidatingCalendar(this.Identity.ToString()), 100); }
public Results Conclude() { var trashValidator = new TrashValidator(); var trashResult = trashValidator.Validate(_questions); if (trashResult.IsValid) { return(Results.Trash); } var referenceValidator = new ReferenceValidator(); var referenceResult = referenceValidator.Validate(_questions); if (referenceResult.IsValid) { return(Results.Reference); } var maybeValidator = new MaybeValidator(); var maybeResult = maybeValidator.Validate(_questions); if (maybeResult.IsValid) { return(Results.MaybeLater); } var projectsValidator = new ProjectsValidator(); var projectsResult = projectsValidator.Validate(_questions); if (projectsResult.IsValid) { return(Results.Projects); } var nowValidator = new NowValidator(); var nowResult = nowValidator.Validate(_questions); if (nowResult.IsValid) { return(Results.DoItNow); } var rightPersonValidator = new RightPersonValidator(); var rightPersonResult = rightPersonValidator.Validate(_questions); if (rightPersonResult.IsValid) { return(Results.Delegate); } var calendarValidator = new CalendarValidator(); var calendarResult = calendarValidator.Validate(_questions); if (calendarResult.IsValid) { return(Results.Calendar); } var nextActionValidator = new NextActionValidator(); var nextActionResult = nextActionValidator.Validate(_questions); if (nextActionResult.IsValid) { return(Results.NextAction); } return(Results.None); }