Example #1
0
        public TaxonomyMetrics CalculateFactsForGroup(VisitGroupMeasurement <string> groupMeasurement, IInteractionAggregationContext context)
        {
            var calculatedInteraction = CalculateInteraction(context);

            return(new TaxonomyMetrics
            {
                EngagementValue = calculatedInteraction.EngagementValue,
                Visits = 1
            });
        }
Example #2
0
        public T CalculateFactsForGroup(
            VisitGroupMeasurement <U> groupMeasurement,
            IInteractionAggregationContext context)
        {
            if (groupMeasurement == null)
            {
                throw new ArgumentNullException(nameof(groupMeasurement));
            }
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var itemId    = groupMeasurement.Occurrences.First().ItemId;
            var productId = groupMeasurement.Id.Id.Split('_').Last();

            var visitPageEventList    = context.Interaction.Events.OfType <PageViewEvent>().ToList();
            var visitGoalList         = context.Interaction.Events.OfType <Goal>().ToList();
            var visitOrderOutcomeList = context.Interaction.Events.OfType <SubmittedOrderOutcome>().ToList();
            var itemPageEventList     = visitPageEventList.Where(pageEvent => pageEvent.ItemId.Equals(itemId)).ToList();
            var itemGoalList          = visitGoalList.Where(goal =>
                                                            (goal.DataKey?.Equals("productId")).GetValueOrDefault() &&
                                                            (goal.Data?.Equals(productId)).GetValueOrDefault());

            var cartLineList = visitOrderOutcomeList
                               .SelectMany(outcome => outcome.Order.CartLines
                                           .Select(cartLine => new {
                outcomeId = outcome.Id,
                cartLine.Product.ProductId,
                cartLine.Total,
                outcome.Timestamp
            }))
                               .Where(cartLineSummary => cartLineSummary.ProductId.Equals(productId))
                               .ToList();

            T metric = new T
            {
                Visits                 = 1,
                Value                  = context.Interaction.EngagementValue,
                ItemValue              = itemGoalList.Sum(goal => goal.EngagementValue),
                MonetaryValue          = visitOrderOutcomeList.Sum(outcome => outcome.MonetaryValue),
                ItemMonetaryValue      = cartLineList.Sum(item => ConvertCurrency(item.Timestamp, item.Total.Amount, item.Total.CurrencyCode)),
                Conversions            = visitGoalList.Count,
                ItemConversions        = itemGoalList.Count(),
                Pageviews              = visitPageEventList.Count,
                ItemPageviews          = groupMeasurement.Occurrences.Count(),
                Bounces                = visitPageEventList.Count == 1 ? 1 : 0,
                TimeOnPage             = ConvertDurationToSeconds(itemPageEventList.Sum(pageEvent => pageEvent.Duration.TotalMilliseconds)),
                TimeOnSite             = ConvertDurationToSeconds(visitPageEventList.Sum(pageEvent => pageEvent.Duration.TotalMilliseconds)),
                OutcomeOccurrences     = visitOrderOutcomeList.Count,
                ItemOutcomeOccurrences = cartLineList.Select(line => line.outcomeId).Distinct().Count()
            };

            return(metric);
        }
Example #3
0
        public OperatingSystemMetrics CalculateFactsForGroup(VisitGroupMeasurement <OperatingSystemData> groupMeasurement, IInteractionAggregationContext context)
        {
            return(new OperatingSystemMetrics
            {
                Visits = 1

                         // Depending on our Metric we could use the context to Calculate some other values
                         // (example) instance.Value = context.Interaction.EngagementValue;
                         // (example) instance.Count = groupMeasurement.Occurrences.Count<DownloadEvent>();
                         // (example) instance.Conversions = context.Interaction.Events.OfType<Goal>().ToList<Goal>();
            });
        }