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