private bool EventMeetsCriteriaForSummaryReport(RecipientTrackingEvent recipEvent) { if (!this.Identity.IsSender && !this.trackedUser.IsAddressOneOfProxies((string)recipEvent.RecipientAddress)) { return(false); } if (this.Identity.IsSender && this.Recipients != null && this.Recipients.Length > 0) { bool flag = false; string text = recipEvent.RecipientAddress.ToString(); foreach (string value in this.Recipients) { if (text.IndexOf(value, StringComparison.OrdinalIgnoreCase) != -1) { flag = true; break; } } if (!flag && !this.IsAddressOneOfRecipientFilterProxies(text)) { return(false); } } return(this.status == null || !(recipEvent.Status != this.status)); }
private bool EventMeetsCriteriaForPathReport(RecipientTrackingEvent recipEvent) { bool result = this.BypassDelegateChecking; if (this.Identity.IsSender) { if (recipEvent.EventDescriptionEnum == EventDescription.MovedToFolderByInboxRule || recipEvent.EventDescriptionEnum == EventDescription.ForwardedToDelegateAndDeleted) { return(result); } } else if (recipEvent.BccRecipient) { if (recipEvent.EventDescriptionEnum == EventDescription.Expanded) { return(result); } if (!recipEvent.RecipientAddress.Equals(this.trackedUser.SmtpAddress)) { if (recipEvent.EventDescriptionEnum == EventDescription.PendingModeration || recipEvent.EventDescriptionEnum == EventDescription.ApprovedModeration || recipEvent.EventDescriptionEnum == EventDescription.FailedModeration) { return(result); } recipEvent.RecipientAddress = this.trackedUser.SmtpAddress; recipEvent.RecipientDisplayName = this.trackedUser.DisplayName; } } return(true); }
private static RecipientTrackingEvent[] GetRecipientEventsForSummaryReport(IConfigurationSession configurationSession, IRecipientSession recipientSession, MultiValuedProperty <CultureInfo> userLanguages, bool returnHelpDeskMessages, bool trackingAsSender, RecipientTrackingEvent[] internalRecipientTrackingEvents) { Dictionary <string, RecipientTrackingEvent> dictionary = new Dictionary <string, RecipientTrackingEvent>(StringComparer.OrdinalIgnoreCase); for (int i = 0; i < internalRecipientTrackingEvents.Length; i++) { if (!MessageTrackingReport.ShouldHideEvent(true, internalRecipientTrackingEvents[i], returnHelpDeskMessages, trackingAsSender)) { RecipientTrackingEvent recipientTrackingEvent = RecipientTrackingEvent.Create(true, configurationSession, userLanguages, returnHelpDeskMessages, internalRecipientTrackingEvents[i]); if (recipientTrackingEvent == null) { ExTraceGlobals.TaskTracer.TraceDebug <string, SmtpAddress>(0L, "Event: {0} not translateable for end-user for recipient: {1}, substituting with generic pending event", Names <EventDescription> .Map[(int)internalRecipientTrackingEvents[i].EventDescription], internalRecipientTrackingEvents[i].RecipientAddress); RecipientTrackingEvent internalRecipientTrackingEvent = new RecipientTrackingEvent(null, internalRecipientTrackingEvents[i].RecipientAddress, internalRecipientTrackingEvents[i].RecipientDisplayName, DeliveryStatus.Pending, EventType.Pending, EventDescription.Pending, null, internalRecipientTrackingEvents[i].Server, internalRecipientTrackingEvents[i].Date, internalRecipientTrackingEvents[i].InternalMessageId, null, internalRecipientTrackingEvents[i].HiddenRecipient, new bool?(internalRecipientTrackingEvents[i].BccRecipient), internalRecipientTrackingEvents[i].RootAddress, null, null); recipientTrackingEvent = RecipientTrackingEvent.Create(true, configurationSession, userLanguages, returnHelpDeskMessages, internalRecipientTrackingEvent); if (recipientTrackingEvent == null) { throw new InvalidOperationException("Generic pending event should always be creatable"); } } RecipientTrackingEvent recipientTrackingEvent2; if (!dictionary.TryGetValue(recipientTrackingEvent.RecipientAddress.ToString(), out recipientTrackingEvent2) || recipientTrackingEvent2.Status != _DeliveryStatus.Delivered) { dictionary[recipientTrackingEvent.RecipientAddress.ToString()] = recipientTrackingEvent; } } } if (dictionary.Count == 0) { return(null); } return(dictionary.Values.ToArray <RecipientTrackingEvent>()); }
private static RecipientTrackingEvent GetIntermediateTransferredEvent(RecipientTrackingEvent originalInternalEvent) { if (originalInternalEvent.EventDescription != Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.TransferredToPartnerOrg && originalInternalEvent.EventDescription != Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.SmtpSendCrossForest) { throw new ArgumentException("GetIntermediateTransferredEvent can only be called for TransferredToPartnerOrg or SmtpSendCrossForest"); } return(new RecipientTrackingEvent(CoreStrings.EventTransferredIntermediate.ToString(Thread.CurrentThread.CurrentCulture), originalInternalEvent.EventDescription, originalInternalEvent.InternalMessageId, originalInternalEvent.BccRecipient, originalInternalEvent.Date, _DeliveryStatus.Transferred, null, EventType.Transferred, originalInternalEvent.RecipientAddress, originalInternalEvent.RecipientDisplayName, originalInternalEvent.Server)); }
private static bool ShouldHideEvent(bool isLastKnownStatus, RecipientTrackingEvent trackingEvent, bool returnHelpDeskMessages, bool trackingAsSender) { if (isLastKnownStatus && (trackingEvent.EventDescription == EventDescription.TransferredToPartnerOrg || trackingEvent.EventDescription == EventDescription.SmtpSendCrossForest)) { return(false); } if (trackingEvent.HiddenRecipient && trackingAsSender && !returnHelpDeskMessages) { ExTraceGlobals.TaskTracer.TraceDebug <SmtpAddress>(0L, "Should hide recipient {0}, as it is a hidden recipient and may not be shown to InfoWorker role", trackingEvent.RecipientAddress); return(true); } return(false); }
private RecipientTrackingEvent(RecipientTrackingEvent internalRecipientTrackingEvent, string eventDescription) { this.eventDescriptionEnum = internalRecipientTrackingEvent.EventDescription; this.internalMessageId = internalRecipientTrackingEvent.InternalMessageId; this.bccRecipient = internalRecipientTrackingEvent.BccRecipient; this[RecipientTrackingEventSchema.EventDescription] = eventDescription; this[RecipientTrackingEventSchema.Date] = internalRecipientTrackingEvent.Date; this[RecipientTrackingEventSchema.DeliveryStatus] = (_DeliveryStatus)internalRecipientTrackingEvent.Status; this[RecipientTrackingEventSchema.EventData] = internalRecipientTrackingEvent.EventData; this[RecipientTrackingEventSchema.EventTypeValue] = internalRecipientTrackingEvent.EventType; this[RecipientTrackingEventSchema.RecipientAddress] = internalRecipientTrackingEvent.RecipientAddress; this[RecipientTrackingEventSchema.RecipientDisplayName] = internalRecipientTrackingEvent.RecipientDisplayName; this[RecipientTrackingEventSchema.Server] = internalRecipientTrackingEvent.Server; }
private static RecipientTrackingEvent.FormatterMethod[] CreateIWFormatTable() { RecipientTrackingEvent.FormatterMethod[] array = new RecipientTrackingEvent.FormatterMethod[RecipientTrackingEvent.EventDescriptionsLength]; array[0] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventSubmitted); array[1] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventSubmittedCrossSite); array[2] = null; array[3] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("Expanded must have group name and group email address arguments"); } return(CoreStrings.EventExpanded(args[1])); }; array[4] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventDelivered); array[5] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 1) { throw new FormatException("MovedToFolderByInboxRule must have folder name argument"); } return(CoreStrings.EventMovedToFolderByInboxRuleIW(args[0])); }; array[6] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventRulesCc); array[7] = RecipientTrackingEvent.FailedGeneralDelegate(); array[8] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventFailedModerationIW); array[9] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventFailedTransportRulesIW); array[10] = null; array[11] = null; array[12] = null; array[13] = null; array[14] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventForwarded); array[15] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventPending); array[16] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventPendingModerationIW); array[17] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventApprovedModerationIW); array[18] = null; array[20] = null; array[21] = RecipientTrackingEvent.ForeignOrgDelegate(); array[22] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventTransferredToLegacyExchangeServer); array[24] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventDelayedAfterTransferToPartnerOrgIW); array[25] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventRead); array[26] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventNotRead); array[27] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventForwardedToDelegateAndDeleted); array[28] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventModerationExpired); return(array); }
private static RecipientTrackingEvent[] GetRecipientEventsForRecipientPathReport(IConfigurationSession configurationSession, IRecipientSession recipientSession, MultiValuedProperty <CultureInfo> userLanguages, bool returnHelpDeskMessages, bool trackingAsSender, RecipientTrackingEvent[] internalRecipientTrackingEvents, bool isCompleteReport) { List <RecipientTrackingEvent> list = new List <RecipientTrackingEvent>(internalRecipientTrackingEvents.Length); RecipientTrackingEvent recipientTrackingEvent = null; if (isCompleteReport) { recipientTrackingEvent = RecipientTrackingEvent.GetExplanatoryMessage(internalRecipientTrackingEvents); } bool flag = false; for (int i = 0; i < internalRecipientTrackingEvents.Length; i++) { bool flag2 = i == internalRecipientTrackingEvents.Length - 1; if (!MessageTrackingReport.ShouldHideEvent(flag2, internalRecipientTrackingEvents[i], returnHelpDeskMessages, trackingAsSender) && (!flag || internalRecipientTrackingEvents[i].EventDescription != EventDescription.FailedGeneral) && (internalRecipientTrackingEvents[i].EventDescription != EventDescription.TransferredToForeignOrg || flag2) && (internalRecipientTrackingEvents[i].EventDescription != EventDescription.FailedTransportRules || returnHelpDeskMessages || (!flag && (i + 1 >= internalRecipientTrackingEvents.Length || (internalRecipientTrackingEvents[i + 1].EventDescription != EventDescription.FailedTransportRules && internalRecipientTrackingEvents[i + 1].EventDescription != EventDescription.FailedGeneral))))) { RecipientTrackingEvent recipientTrackingEvent2 = RecipientTrackingEvent.Create(flag2, configurationSession, userLanguages, returnHelpDeskMessages, internalRecipientTrackingEvents[i]); if (recipientTrackingEvent2 != null) { if (internalRecipientTrackingEvents[i].EventDescription == EventDescription.FailedTransportRules || internalRecipientTrackingEvents[i].EventDescription == EventDescription.FailedGeneral) { flag = true; } list.Add(recipientTrackingEvent2); } else { ExTraceGlobals.TaskTracer.TraceDebug <string, SmtpAddress>(0L, "Event: {0} for recipient {1} not translateable for end-user. It will be dropped", Names <EventDescription> .Map[(int)internalRecipientTrackingEvents[i].EventDescription], internalRecipientTrackingEvents[i].RecipientAddress); } } } if (list.Count == 0) { return(null); } if (recipientTrackingEvent != null) { list.Add(recipientTrackingEvent); } return(list.ToArray()); }
private static RecipientTrackingEvent.FormatterMethod FailedGeneralDelegate() { return(delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args != null && args.Length > 0) { string text; if (!LastError.TryParseSmtpResponseString(args[0], out text)) { text = args[0]; } SmtpResponse key; if (SmtpResponse.TryParse(text, out key)) { if (key.SmtpResponseType == SmtpResponseType.PermanentError && args.Length >= 2 && string.Equals(args[1], "Content Filter Agent")) { return CoreStrings.RejectedExplanationContentFiltering; } LocalizedString result; if (AckReason.EnhancedTextGetter.TryGetValue(key, out result)) { return result; } if (!string.IsNullOrEmpty(key.EnhancedStatusCode)) { if (DsnShortMessages.TryGetResourceRecipientExplanation(key.EnhancedStatusCode, out result)) { return result; } LocalizedString?customDsnCode = RecipientTrackingEvent.GetCustomDsnCode(key.EnhancedStatusCode, source.ConfigSession, source.UserLanguages); if (customDsnCode != null) { return customDsnCode.Value; } } } } return CoreStrings.EventFailedGeneral; }); }
internal static RecipientTrackingEvent GetExplanatoryMessage(IList <RecipientTrackingEvent> events) { if (events.Count == 0) { return(null); } DateTime utcNow = DateTime.UtcNow; RecipientTrackingEvent recipientTrackingEvent = events[0]; RecipientTrackingEvent recipientTrackingEvent2 = events[events.Count - 1]; if (recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.SmtpSendCrossSite || recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.SmtpSend) { if (utcNow > recipientTrackingEvent2.Date && utcNow - recipientTrackingEvent2.Date > RecipientTrackingEvent.SmtpHandshakeMaximumSkew) { return(new RecipientTrackingEvent(CoreStrings.TrackingExplanationLogsDeleted.ToString(Thread.CurrentThread.CurrentCulture), Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.Pending, recipientTrackingEvent2.InternalMessageId, recipientTrackingEvent2.BccRecipient, utcNow, _DeliveryStatus.Pending, null, EventType.Pending, recipientTrackingEvent2.RecipientAddress, recipientTrackingEvent2.RecipientDisplayName, recipientTrackingEvent2.Server)); } } else if (recipientTrackingEvent2.Status == DeliveryStatus.Pending) { if (recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.PendingModeration || recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.SmtpSendCrossForest || recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.TransferredToPartnerOrg) { return(null); } TimeSpan t = utcNow.Subtract(recipientTrackingEvent.Date); if (t < RecipientTrackingEvent.MaximumDelayForNormalMessage) { if (recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.QueueRetry || recipientTrackingEvent2.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.QueueRetryNoRetryTime) { return(null); } return(new RecipientTrackingEvent(CoreStrings.TrackingExplanationNormalTimeSpan.ToString(Thread.CurrentThread.CurrentCulture), Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.Pending, recipientTrackingEvent2.InternalMessageId, recipientTrackingEvent2.BccRecipient, utcNow, _DeliveryStatus.Pending, null, EventType.Pending, recipientTrackingEvent2.RecipientAddress, recipientTrackingEvent2.RecipientDisplayName, recipientTrackingEvent2.Server)); } else if (t >= RecipientTrackingEvent.ExcessiveDelayTimeSpan) { return(new RecipientTrackingEvent(CoreStrings.TrackingExplanationExcessiveTimeSpan.ToString(Thread.CurrentThread.CurrentCulture), Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.Pending, recipientTrackingEvent2.InternalMessageId, recipientTrackingEvent2.BccRecipient, utcNow, _DeliveryStatus.Pending, null, EventType.Pending, recipientTrackingEvent2.RecipientAddress, recipientTrackingEvent2.RecipientDisplayName, recipientTrackingEvent2.Server)); } } return(null); }
internal static MessageTrackingReport Create(IConfigurationSession configurationSession, IRecipientSession recipientSession, MultiValuedProperty <CultureInfo> userLanguages, bool summaryEvents, bool returnHelpDeskMessages, bool trackingAsSender, MessageTrackingReport internalMessageTrackingReport, bool doNotResolve, bool isCompleteReport) { RecipientTrackingEvent[] recipientTrackingEvents = internalMessageTrackingReport.RecipientTrackingEvents; if (!doNotResolve && recipientTrackingEvents.Length > 256) { ExTraceGlobals.TaskTracer.TraceDebug <int, int>(0L, "Recipient events ({0}) are more than MaxDisplaynameLookupsAllowed ({1}), turning off display-names", recipientTrackingEvents.Length, 256); doNotResolve = true; } RecipientTrackingEvent[] array; if (summaryEvents) { array = MessageTrackingReport.GetRecipientEventsForSummaryReport(configurationSession, recipientSession, userLanguages, returnHelpDeskMessages, trackingAsSender, recipientTrackingEvents); } else { array = MessageTrackingReport.GetRecipientEventsForRecipientPathReport(configurationSession, recipientSession, userLanguages, returnHelpDeskMessages, trackingAsSender, recipientTrackingEvents, isCompleteReport); } if (array == null) { return(null); } int capacity = summaryEvents ? array.Length : 1; BulkRecipientLookupCache bulkRecipientLookupCache = new BulkRecipientLookupCache(capacity); if (!doNotResolve) { RecipientTrackingEvent.FillDisplayNames(bulkRecipientLookupCache, array, recipientSession); } MessageTrackingReport messageTrackingReport = new MessageTrackingReport(internalMessageTrackingReport, array); if (summaryEvents) { messageTrackingReport.FillDisplayNames(bulkRecipientLookupCache, recipientSession); } messageTrackingReport.PrepareRecipientTrackingEvents(returnHelpDeskMessages, summaryEvents); return(messageTrackingReport); }
internal static RecipientTrackingEvent Create(bool isLastKnownStatus, IConfigurationSession session, MultiValuedProperty <CultureInfo> userLanguages, bool returnHelpDeskMessages, RecipientTrackingEvent internalRecipientTrackingEvent) { if (isLastKnownStatus && (internalRecipientTrackingEvent.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.SmtpSendCrossForest || internalRecipientTrackingEvent.EventDescription == Microsoft.Exchange.InfoWorker.Common.MessageTracking.EventDescription.TransferredToPartnerOrg)) { return(RecipientTrackingEvent.GetIntermediateTransferredEvent(internalRecipientTrackingEvent)); } RecipientTrackingEvent.FormatterMethod[] array = returnHelpDeskMessages ? RecipientTrackingEvent.helpDeskFormatters : RecipientTrackingEvent.iWFormatters; RecipientTrackingEvent.FormatterSource source = new RecipientTrackingEvent.FormatterSource(session, userLanguages, internalRecipientTrackingEvent); RecipientTrackingEvent.FormatterMethod formatterMethod = array[(int)internalRecipientTrackingEvent.EventDescription]; if (formatterMethod != null) { LocalizedString localizedString; try { localizedString = formatterMethod(source, internalRecipientTrackingEvent.EventData); } catch (FormatException ex) { ExTraceGlobals.SearchLibraryTracer.TraceError(0L, ex.Message); return(null); } string eventDescription = localizedString.ToString(Thread.CurrentThread.CurrentCulture); RecipientTrackingEvent recipientTrackingEvent = new RecipientTrackingEvent(internalRecipientTrackingEvent, eventDescription); EventType eventType; if (RecipientTrackingEvent.descriptionToTypeMap.TryGetValue(internalRecipientTrackingEvent.EventDescription, out eventType)) { recipientTrackingEvent.EventType = eventType; } else { recipientTrackingEvent.EventType = EventType.Pending; } return(recipientTrackingEvent); } return(null); }
internal FormatterSource(IConfigurationSession configSession, MultiValuedProperty <CultureInfo> userLanguages, RecipientTrackingEvent recipientTrackingEvent) { this.ConfigSession = configSession; this.UserLanguages = userLanguages; this.RecipientTrackingEvent = recipientTrackingEvent; }
private static RecipientTrackingEvent.FormatterMethod[] CreateHelpDeskFormatTable() { RecipientTrackingEvent.FormatterMethod[] array = new RecipientTrackingEvent.FormatterMethod[RecipientTrackingEvent.EventDescriptionsLength]; array[0] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args == null || args.Length < 1) { return(CoreStrings.EventSubmitted); } return(CoreStrings.EventSubmittedHelpDesk(args[0])); }; array[1] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args == null || args.Length < 1) { return(CoreStrings.EventSubmittedCrossSite); } return(CoreStrings.EventSubmittedCrossSiteHelpDesk(args[0])); }; array[2] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args == null || args.Length < 2) { return(CoreStrings.EventResolvedHelpDesk); } return(CoreStrings.EventResolvedWithDetailsHelpDesk(args[0], args[1])); }; array[3] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("Expanded must have group name and group email address arguments"); } return(CoreStrings.EventExpanded(args[1])); }; array[4] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventDelivered); array[5] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 1) { throw new FormatException("MovedToFolderByInboxRule must have folder name argument"); } return(CoreStrings.EventMovedToFolderByInboxRuleHelpDesk(args[0])); }; array[6] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventRulesCc); array[7] = RecipientTrackingEvent.FailedGeneralDelegate(); array[8] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventFailedModerationHelpDesk); array[9] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventFailedTransportRulesHelpDesk); array[10] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("SmtpSend must have sending and receiving server names"); } return(CoreStrings.EventSmtpSendHelpDesk(args[0], args[1])); }; array[11] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("SmtpSendCrossSite must have sending and receiving server names"); } return(CoreStrings.EventSmtpSendHelpDesk(args[0], args[1])); }; array[12] = ((RecipientTrackingEvent.FormatterSource source, string[] args) => CoreStrings.EventSmtpSendHelpDesk(args[0], args[1])); array[13] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("SmtpReceive must have sending and receiving server names"); } return(CoreStrings.EventSmtpReceiveHelpDesk(args[0], args[1])); }; array[14] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventForwarded); array[15] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventPending); array[16] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventPendingModerationHelpDesk); array[17] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventApprovedModerationHelpDesk); array[18] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 5) { throw new FormatException("QueueRetry must have server, inRetrySinceTime, lastAttemptTime, serverTimeZone, errorMessage arguments"); } if (!string.IsNullOrEmpty(args[4])) { return(CoreStrings.EventQueueRetryHelpDesk(args[0], args[1], args[2], args[3], args[4])); } return(CoreStrings.EventQueueRetryNoErrorHelpDesk(args[0], args[1], args[2], args[3])); }; array[19] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("QueueRetryNoRetryTime must have queue name and error message"); } return(CoreStrings.EventQueueRetryNoRetryTimeHelpDesk(args[0], args[1])); }; array[20] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventMessageDefer); array[21] = RecipientTrackingEvent.ForeignOrgDelegate(); array[22] = delegate(RecipientTrackingEvent.FormatterSource source, string[] args) { if (args.Length < 2) { throw new FormatException("TransferredToLegacyExchangeServer must have both local exchange server name and remote legacy exchange server name"); } return(CoreStrings.EventTransferredToLegacyExchangeServerHelpDesk(args[0], args[1])); }; array[25] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventRead); array[26] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventNotRead); array[27] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventForwardedToDelegateAndDeleted); array[28] = RecipientTrackingEvent.SimpleDelegate(CoreStrings.EventModerationExpired); return(array); }
private MessageTrackingReport FilterReport(MessageTrackingReport report) { if (report == null) { return(report); } if (!this.Identity.IsSender) { report.RecipientAddresses = new SmtpAddress[] { this.trackedUser.SmtpAddress }; report.RecipientDisplayNames = new string[] { this.trackedUser.DisplayName }; } if (report.RecipientTrackingEvents.Length == 0) { return(report); } bool flag = false; List <RecipientTrackingEvent> list = null; RecipientTrackingEvent[] recipientTrackingEvents = report.RecipientTrackingEvents; int i = 0; while (i < recipientTrackingEvents.Length) { RecipientTrackingEvent recipientTrackingEvent = recipientTrackingEvents[i]; if (this.ReportTemplate == ReportTemplate.Summary) { if (this.EventMeetsCriteriaForSummaryReport(recipientTrackingEvent)) { report.IncrementEventTypeCount(recipientTrackingEvent.Status); goto IL_A7; } } else if (this.EventMeetsCriteriaForPathReport(recipientTrackingEvent)) { goto IL_A7; } IL_109: i++; continue; IL_A7: if (flag) { goto IL_109; } if (list != null && (long)list.Count >= (long)((ulong)this.ResultSize.Value)) { flag = true; if (this.ReportTemplate != ReportTemplate.Summary) { break; } goto IL_109; } else { if (list == null) { list = new List <RecipientTrackingEvent>(); } if (this.ResultSize.Value > 0U) { list.Add(recipientTrackingEvent); } if (this.Identity.IsSender || this.ReportTemplate != ReportTemplate.Summary) { goto IL_109; } break; } } if (flag && this.ReportTemplate != ReportTemplate.Summary) { this.WriteWarning(CoreStrings.TrackingWarningTooManyEvents); } if (list == null) { return(null); } if (0 < list.Count && !this.BypassDelegateChecking) { EventDescription eventDescription = EventDescription.Submitted; bool flag2 = false; if (!this.Identity.IsSender) { eventDescription = ((this.ReportTemplate == ReportTemplate.Summary) ? list[0].EventDescriptionEnum : list[list.Count - 1].EventDescriptionEnum); flag2 = true; } else if (ReportTemplate.RecipientPath == this.ReportTemplate) { eventDescription = list[list.Count - 1].EventDescriptionEnum; flag2 = true; } EventDescriptionInformation eventDescriptionInformation; if (!EnumAttributeInfo <EventDescription, EventDescriptionInformation> .TryGetValue((int)eventDescription, out eventDescriptionInformation)) { throw new InvalidOperationException(string.Format("Value {0} was not annotated", eventDescription)); } if (flag2 && eventDescriptionInformation.IsTerminal) { this.getMessageTrackingReport.Errors.ResetAllErrors(); } } report.RecipientTrackingEvents = list.ToArray(); return(report); }