Exemplo n.º 1
0
        protected override List <DimensionData> GenerateDimensionData(IVisitAggregationContext context, SegmentMetricsValue metrics, OrderModel orderModel)
        {
            List <DimensionData> dimensionDataList = new List <DimensionData>();

            if (orderModel.Event.Order != null & orderModel.Event.Order.CartLines != null && orderModel.Event.Order.CartLines.Any())
            {
                foreach (var cartLine in orderModel.Event.Order.CartLines)
                {
                    if (orderModel.Event.CustomValues.ContainsKey($"PersonalizationId|{cartLine.ExternalCartLineId}"))
                    {
                        var personalizationId = orderModel.Event.CustomValues[$"PersonalizationId|{cartLine.ExternalCartLineId}"];
                        if (!string.IsNullOrEmpty(personalizationId))
                        {
                            SegmentMetricsValue segmentMetricsValue = metrics.Clone();
                            segmentMetricsValue.Count = 1;
                            DimensionData dimensionData = new DimensionData()
                            {
                                DimensionKey = personalizationId,
                                MetricsValue = segmentMetricsValue
                            };
                            dimensionDataList.Add(dimensionData);
                        }
                    }
                }
            }
            return(dimensionDataList);
        }
Exemplo n.º 2
0
 protected override IEnumerable<DimensionData> GetData(IVisitAggregationContext context, NervaDemoMockData data)
 {
     yield return new DimensionData
     {
         DimensionKey = data.DeviceType ?? "(Unkown)",
         MetricsValue = CalculateCommonMetrics(context),
     };
 }
Exemplo n.º 3
0
 protected override IEnumerable<DimensionData> GetData(IVisitAggregationContext context, NervaDemoMockData data)
 {
     if (data.ChannelTypeId.HasValue)
     {
         yield return new DimensionData
         {
             DimensionKey = "" + data.ChannelTypeId,
             MetricsValue = CalculateCommonMetrics(context),
         };
     }
 }
        public override IEnumerable <DimensionData> GetData(IVisitAggregationContext context)
        {
            foreach (PageData page in context.Visit.Pages)
            {
                PageData           data   = page;
                IEnumerable <bool> result = data.PageEvents.Select <PageEventData, bool>((Func <PageEventData, bool>)(p => p.PageEventDefinitionId == ItemIDs.PageEvents.PlaybackStarted.ToGuid()));
                var startedVideos         = data.PageEvents.Where(p => p.PageEventDefinitionId == ItemIDs.PageEvents.PlaybackStarted.ToGuid()).GroupBy(p => p.Data).Select(group => new
                {
                    Metric = group.Key,
                    Count  = group.Count <PageEventData>()
                }).OrderBy(x => x.Metric);
                var endedVideos = data.PageEvents.Where(p => p.PageEventDefinitionId == ItemIDs.PageEvents.PlaybackCompleted.ToGuid()).GroupBy(p => p.Data).Select(group => new
                {
                    Metric = group.Key,
                    Count  = group.Count <PageEventData>()
                }).OrderBy(x => x.Metric);
                var enumerator1 = startedVideos.GetEnumerator();
                SegmentMetricsValue calculations;
                while (enumerator1.MoveNext())
                {
                    var video = enumerator1.Current;
                    calculations        = this.CalculateCommonMetrics(context, 0);
                    calculations.Visits = video.Count;
                    yield return(new DimensionData()
                    {
                        DimensionKey = video.Metric,
                        MetricsValue = calculations
                    });

                    video = null;
                }
                enumerator1 = null;
                var enumerator2 = endedVideos.GetEnumerator();
                while (enumerator2.MoveNext())
                {
                    var video = enumerator2.Current;
                    calculations       = this.CalculateCommonMetrics(context, 0);
                    calculations.Count = video.Count;
                    yield return(new DimensionData()
                    {
                        DimensionKey = video.Metric,
                        MetricsValue = calculations
                    });

                    video = null;
                }
                enumerator2   = null;
                result        = (IEnumerable <bool>)null;
                startedVideos = null;
                endedVideos   = null;
                calculations  = (SegmentMetricsValue)null;
                data          = (PageData)null;
            }
        }
Exemplo n.º 5
0
        protected override string GetKey(IVisitAggregationContext context)
        {
            string browserMajor = "[UNKNOWN]";

            if (context.Visit.Browser != null && !string.IsNullOrEmpty(context.Visit.Browser.BrowserMajorName))
            {
                browserMajor = context.Visit.Browser.BrowserMajorName;
            }

            return(StringExtensions.ToCanonical(string.Concat(browserMajor)));
        }
Exemplo n.º 6
0
        public override IEnumerable<DimensionData> GetData(IVisitAggregationContext context)
        {
            object json;
            if (context.Visit.CustomValues.TryGetValue("NervaDemo", out json))
            {
                var jsonString = json as string;
                if (!string.IsNullOrEmpty(jsonString))
                {
                    return GetData(context, JsonConvert.DeserializeObject<NervaDemoMockData>(jsonString));
                }
            }

            return new DimensionData[0];
        }
Exemplo n.º 7
0
        public ConcurrentDictionary <string, int> GetDimensionKeys(IVisitAggregationContext context)
        {
            ConcurrentDictionary <string, int> concurrentDictionary = new ConcurrentDictionary <string, int>();

            foreach (PageData page in context.Visit.Pages)
            {
                string   url         = page.Url.ToString();
                string[] urlSegments = url.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                if (urlSegments.Length > 0 && urlSegments[0].IndexOf("?") < 0)
                {
                    string dimKey = urlSegments[0];
                    concurrentDictionary.AddOrUpdate(dimKey, 1, (Func <string, int, int>)((key, oldValue) => oldValue + 1));
                }
            }
            return(concurrentDictionary);
        }
Exemplo n.º 8
0
        public override IEnumerable <DimensionData> GetData(IVisitAggregationContext context)
        {
            SegmentMetricsValue metrics = this.CalculateCommonMetrics(context, 0);
            ConcurrentDictionary <string, int> keyCount = this.GetDimensionKeys(context);

            foreach (string index in (IEnumerable <string>)keyCount.Keys)
            {
                int count = keyCount[index];
                SegmentMetricsValue metricsValue = metrics.Clone();
                metricsValue.Count = count;
                yield return(new DimensionData()
                {
                    DimensionKey = index,
                    MetricsValue = metricsValue
                });
            }
        }
 public override SegmentMetricsValue CalculateCommonMetrics(IVisitAggregationContext context, int count = 0)
 {
     if (context == null)
     {
         throw new ArgumentNullException(nameof(context));
     }
     Assert.ArgumentNotNull(context, nameof(context));
     if (context.Visit.Pages == null)
     {
         return(null);
     }
     return(new SegmentMetricsValue()
     {
         Visits = 1,
         Value = context.Visit.Value,
         Bounces = context.Visit.Pages.Count == 1 ? 1 : 0,
         Conversions = context.Visit.Pages.SelectMany(page => page.PageEvents).Count(evt => evt.IsGoal),
         TimeOnSite = context.Visit.Pages.Sum(page => ConvertDuration(page.Duration)),
         PageViews = context.Visit.Pages.Count,
         Count = count
     });
 }
        public override IEnumerable <DimensionData> GetData(IVisitAggregationContext context)
        {
            List <DimensionData> dimensionDataList   = new List <DimensionData>();
            DateTime             startTime           = this.LogStartProcessingDimension();
            Interaction          xconnectInteraction = this.ToXConnectInteraction(context.Visit);
            SegmentMetricsValue  metrics             = this.CalculateCommonMetrics(context, 0);

            if (metrics == null)
            {
                this.LogEndProcessingDimension(startTime, 0);
            }
            else
            {
                Guid eventDefinitionId = this.GetPageEventDefinitionId();
                int  numberOfEntries   = 0;
                foreach (var @event in xconnectInteraction.Events)
                {
                    if (@event.DefinitionId == eventDefinitionId && @event.CustomValues.ContainsKey("PersonalizationId") && !string.IsNullOrEmpty(@event.CustomValues["PersonalizationId"]))
                    {
                        var personalizationId = @event.CustomValues["PersonalizationId"];
                        if (!dimensionDataList.Any(dimensionData => dimensionData.DimensionKey.Equals(personalizationId, StringComparison.OrdinalIgnoreCase)))
                        {
                            SegmentMetricsValue segmentMetricsValue = metrics.Clone();
                            segmentMetricsValue.PageViews = xconnectInteraction.Events.Count(e => e.DefinitionId == eventDefinitionId &&
                                                                                             e.CustomValues.ContainsKey("PersonalizationId") &&
                                                                                             e.CustomValues["PersonalizationId"].Equals(personalizationId, StringComparison.OrdinalIgnoreCase));
                            dimensionDataList.Add(new DimensionData()
                            {
                                DimensionKey = personalizationId,
                                MetricsValue = segmentMetricsValue
                            });
                            ++numberOfEntries;
                        }
                    }
                }
                this.LogEndProcessingDimension(startTime, numberOfEntries);
            }
            return(dimensionDataList);
        }
Exemplo n.º 11
0
 public override bool HasDimensionKey(IVisitAggregationContext context)
 {
     return(context.Visit.GeoData != null && !string.IsNullOrEmpty(context.Visit.GeoData.BusinessName));
 }
 protected override SegmentMetricsValue GetValue(IVisitAggregationContext context)
 {
     return(base.GetValue(context));
 }
 protected override bool HasDimensionKey(IVisitAggregationContext context)
 {
     return(true);
     // return !Sitecore.StringExtensions.StringExtensions.IsNullOrEmpty(context.Visit.Browser.BrowserMajorName);
 }
Exemplo n.º 14
0
 public SegmentMetricsValue CalculateMetrics(IVisitAggregationContext context)
 {
     return(CalculateCommonMetrics(context, 1));
 }
Exemplo n.º 15
0
 public override IEnumerable <DimensionData> GetData(IVisitAggregationContext context)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 16
0
 public override IEnumerable<DimensionData> GetData(IVisitAggregationContext context)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 17
0
        protected override string GetKey(IVisitAggregationContext context)
        {
            BrowserData browser = context.Visit.Browser;

            return(browser.BrowserMajorName + "-" + browser.BrowserVersion);
        }
Exemplo n.º 18
0
 public override string GetKey(IVisitAggregationContext context)
 {
     return((context.Visit.GeoData != null && !string.IsNullOrEmpty(context.Visit.GeoData.BusinessName)) ? context.Visit.GeoData.BusinessName : null);
 }
Exemplo n.º 19
0
 protected abstract IEnumerable<DimensionData> GetData(IVisitAggregationContext context, NervaDemoMockData data);
Exemplo n.º 20
0
 protected override bool HasDimensionKey(IVisitAggregationContext context)
 {
     // need to check the interaction type
     return(true);
     // return !string.IsNullOrEmpty(context.Visit.Browser.BrowserMajorName);
 }
Exemplo n.º 21
0
 public SegmentMetricsValue CalculateMetrics(IVisitAggregationContext context)
 {
     return CalculateCommonMetrics(context, 1);
 }
Exemplo n.º 22
0
 public static SegmentMetricsValue CalculateMetrics(IVisitAggregationContext context)
 {
     return(_calculator.CalculateMetrics(context));
 }
Exemplo n.º 23
0
        protected override bool HasDimensionKey(IVisitAggregationContext context)
        {
            BrowserData browser = context.Visit.Browser;

            return(!string.IsNullOrEmpty(browser.BrowserMajorName) && !string.IsNullOrEmpty(browser.BrowserVersion));
        }
Exemplo n.º 24
0
 public static SegmentMetricsValue CalculateMetrics(IVisitAggregationContext context)
 {
     return _calculator.CalculateMetrics(context);
 }