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);
 }
 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);
 }
 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);
 }