Esempio n. 1
0
        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);
        }