Beispiel #1
0
        /// <summary>
        /// Places the vote into Analytics.
        /// </summary>
        /// <param name="optionItem">The option item.</param>
        public static void PlaceVote(PollOptionItem optionItem)
        {
            //    //cancel pipeline handler (for CurrentPage)
            //Tracker.CurrentPage.Cancel();

            //    //Submit analytics tracking for poll item
            SubmitPollTracking(optionItem.Poll.InnerItem, optionItem.InnerItem);


            //    //event trigger on new poll option selected
            var peData = new PageEventData("Poll");

            string text = string.Format("Select {0} ({2}) in poll {1}", optionItem.Title, optionItem.Poll.Name, optionItem.Index);
            string data = string.Concat(new object[] { optionItem.Poll.Name, "|", optionItem.Title, "|", optionItem.Index });

            peData.Data    = data;
            peData.Text    = text;
            peData.DataKey = optionItem.Poll.Name;
            var row = Tracker.CurrentPage.Register(peData);

            row.DataCode = optionItem.Index;

            //    //submit immediatelly
            SubmitAnalyticsImmediatelly();
        }
Beispiel #2
0
        public void RegisterSearchTerm(string term)
        {
            if (this.IsActive)
            {
                var searchPageEventId = new Guid("0C179613-2073-41AB-992E-027D03D523BF");

                IPageContext page = Tracker.Current.CurrentPage;
                if (page.Url.Path.StartsWith($"/{Events.Constants.API_BASEPATH}/"))
                {
                    page = this.GetApiPageContext();
                }

                if (page == null)
                {
                    this.logging.Warning(this.GetType(), $"Register search term - Cannot resolve page context");
                    return;
                }

                var pageEvent     = Tracker.MarketingDefinitions.PageEvents.FirstOrDefault(p => p.Name == "Search"); //.Id == searchPageEventId);
                var pageEventData = new PageEventData(pageEvent.Name, pageEvent.Id);
                if (page != null)
                {
                    pageEventData.ItemId  = page.Item.Id;
                    pageEventData.Data    = term;
                    pageEventData.DataKey = term;
                    pageEventData.Text    = term;
                    page.Register(pageEventData);
                }
            }
        }
 /// <summary>
 /// Triggers the goal like Brochure Request. This method is to be used for PDF prochure printing. 
 /// Actions should be configured in Sitecore. Associated RuleActions should be created in Rules folder of this project.
 /// </summary>
 /// <param name="goalName">Name of the goal.</param>
 /// <returns></returns>
 public static string PrintGoal(string goalName)
 {
     PageEventData eventData = new PageEventData(goalName);
     VisitorDataSet.PageEventsRow pageEventsRow = Sitecore.Analytics.Tracker.CurrentPage.Register(eventData);
     Sitecore.Analytics.Tracker.Submit();
     return goalName;
 }
Beispiel #4
0
        private void CreateGoalAnalytic()
        {
            var goal        = new PageEventData("Newsletter signup");
            var currentPage = Tracker.Current.CurrentPage;

            currentPage.Register(goal);
        }
Beispiel #5
0
        protected override Event CreateEvent(PageEventData pageEventData)
        {
            VisitedCategoryPageEvent pageEvent = new VisitedCategoryPageEvent(pageEventData.DateTime);

            this.TranslateEvent(pageEventData, pageEvent);
            return(pageEvent);
        }
        protected override Event CreateEvent(PageEventData pageEventData)
        {
            VisitedProductDetailsPageEvent pageEvent = new VisitedProductDetailsPageEvent(pageEventData.DateTime);

            this.TranslateEvent(pageEventData, pageEvent);
            return(pageEvent);
        }
Beispiel #7
0
        public override void Process(SearchAnalyticsArgs args)
        {
            if (string.IsNullOrWhiteSpace(args.SearchParameters.Keyword))
            {
                return;
            }

            if (!Tracker.IsActive)
            {
                if (!Tracker.Enabled)
                {
                    return;
                }
                Tracker.StartTracking();
            }

            var keywords      = args.SearchParameters.Keyword;
            var pageEventData = new PageEventData("Search", AnalyticsIds.SearchEvent.Guid)
            {
                ItemId  = args.TabItem.ID.Guid,
                Data    = keywords,
                DataKey = keywords,
                Text    = keywords
            };
            var interaction = Tracker.Current?.Session?.Interaction;

            if (interaction != null)
            {
                interaction.CurrentPage.Register(pageEventData);
            }
        }
        private static void TriggerEvent(HttpContext context)
        {
            try
            {
                string jsonData = context.Request["jsonData"];

                var clientEventData = JsonConvert.DeserializeObject <ClientEventData>(jsonData);
                if (clientEventData == null)
                {
                    return;
                }
                if (string.IsNullOrEmpty(clientEventData.EventName))
                {
                    return;
                }
                if (!Tracker.Enabled)
                {
                    return;
                }

                if (!Tracker.IsActive || Tracker.Current == null)
                {
                    Tracker.StartTracking(); // init tracker without tracking the endpoint as a page
                }

                if (Tracker.Current == null || Tracker.Current.CurrentPage == null)
                {
                    return;
                }

                if (!string.IsNullOrEmpty(clientEventData.PageEventId))
                {
                    var eventData = new PageEventData(clientEventData.EventName, Guid.Parse(clientEventData.PageEventId))
                    {
                        Text    = !string.IsNullOrEmpty(clientEventData.Text) ? clientEventData.Text : string.Empty,
                        DataKey = !string.IsNullOrEmpty(clientEventData.Text) ? clientEventData.Text : string.Empty,
                        Data    = !string.IsNullOrEmpty(clientEventData.Data) ? clientEventData.Data : string.Empty,
                    };
                    Tracker.Current.CurrentPage.Register(eventData);
                    return;
                }
                else if (string.IsNullOrEmpty(clientEventData.Text))
                {
                    Tracker.Current.CurrentPage.Register(clientEventData.EventName, string.Empty);
                    return;
                }
                else
                {
                    if (string.IsNullOrEmpty(clientEventData.Datakey) || string.IsNullOrEmpty(clientEventData.Data))
                    {
                        Tracker.Current.CurrentPage.Register(clientEventData.EventName, clientEventData.Text);
                        return;
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error(string.Concat("Sitecore.Scientist.Analytics.ClientEventTracker.TriggerEvent: error in event triggering. requestUrl: ", context.Request.Url.AbsolutePath), exception, typeof(ClientEventTracker));
            }
        }
        protected override Event CreateEvent(PageEventData pageEventData)
        {
            VisitorOrderCreatedGoal @event = new VisitorOrderCreatedGoal(pageEventData.DateTime);

            this.TranslateEvent(pageEventData, @event);
            return(@event);
        }
        /// <summary>
        /// Add to shopping cart event.
        /// </summary>
        /// <param name="productCode">The product code.</param>
        /// <param name="productName">Name of the product.</param>
        /// <param name="quantity">The quantity.</param>
        /// <param name="price">The price.</param>
        public virtual void AddToShoppingCart(string productCode, string productName, uint quantity, decimal price)
        {
            Assert.ArgumentNotNull(productName, "productName");
            Assert.ArgumentNotNull(productCode, "productCode");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>();
            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventAddToShoppingCart);
            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventAddToShoppingCart;
            }

            string text = description.FormatWith(new { Quantity = quantity, ProductName = productName, Price = price });
            ListString data = new ListString { productName, quantity.ToString(CultureInfo.InvariantCulture), price.ToString(CultureInfo.InvariantCulture), productCode.ToString(CultureInfo.InvariantCulture) };

            var currentPage = Tracker.Current.CurrentPage;
            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventAddToShoppingCart) { Text = text, Data = data.ToString() };
            currentPage.Register(pageEventData);
        }
        protected new void TranslateEvent(PageEventData pageEventData, VisitorOrderCreatedGoal @event)
        {
            @event.ExternalId           = pageEventData.CustomValues["ExternalId"] as string;
            @event.ShopName             = pageEventData.CustomValues["ShopName"] as string;
            @event.SitecoreUserName     = pageEventData.CustomValues["UserName"] as string;
            @event.SitecoreCustomerName = pageEventData.CustomValues["Name"] as string;
            string str = JsonConvert.SerializeObject((object)(pageEventData.CustomValues["Total"] as global::Sitecore.Commerce.Entities.Prices.Total));

            @event.Total          = JsonConvert.DeserializeObject <global::Sitecore.Commerce.CustomModels.Models.Total>(str);
            @event.IsOfflineOrder = pageEventData.CustomValues["Total"] as bool?;
            if (!pageEventData.CustomValues.ContainsKey("Order"))
            {
                return;
            }
            global::Sitecore.Commerce.Entities.Orders.Order     customValue = (global::Sitecore.Commerce.Entities.Orders.Order)pageEventData.CustomValues["Order"];
            global::Sitecore.Commerce.CustomModels.Models.Order order       = JsonConvert.DeserializeObject <global::Sitecore.Commerce.CustomModels.Models.Order>(JsonConvert.SerializeObject((object)customValue));
            if (order == null)
            {
                return;
            }
            order.CartLines = global::Sitecore.Commerce.Entities.Carts.CartLine.ToPocoLines(customValue.Lines);
            var personalizationIds = pageEventData.CustomValues["PersonalizationIds"] as Dictionary <string, string>;

            foreach (var line in order.CartLines)
            {
                if (personalizationIds.ContainsKey(line.ExternalCartLineId))
                {
                    @event.CustomValues.Add($"PersonalizationId|{line.ExternalCartLineId}", personalizationIds[line.ExternalCartLineId]);
                }
            }
            @event.Order = order;
        }
Beispiel #12
0
        public ActionResult Redirect(string goal, string u)
        {
            var url = System.Web.HttpUtility.UrlDecode(u);

            try
            {
                if (Tracker.Current == null)
                {
                    Tracker.Initialize();
                }

                var goalItem = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(goal));

                Assert.IsNotNull(Tracker.Current, "Tracker.Current");
                Assert.IsNotNull(Tracker.Current.Session, "Tracker.Current.Session");
                var interaction = Tracker.Current.Session.Interaction;
                Assert.IsNotNull(interaction, "Tracker.Current.Session.Interaction");
                Assert.IsNotNull(interaction.CurrentPage, "Tracker.Current.Session.Interaction.CurrentPage");

                var pageEventData = new PageEventData(goalItem.Name, goalItem.ID.ToGuid())
                {
                    Data = url,
                    Text = "Goal Set By Redirection Rule"
                };

                interaction.CurrentPage.Register(pageEventData);
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Error when tracking goal for redirect.", ex, this);
            }

            return(Redirect(url));
        }
Beispiel #13
0
        public static MediaEventData Parse(PageEventData pageEvent)
        {
            if (pageEvent == null || string.IsNullOrEmpty(pageEvent.Data))
            {
                return(null);
            }

            string[] data = pageEvent.Data.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
            if (data.Length < 2)
            {
                return(null);
            }

            int length;

            int.TryParse(data[1], out length);

            return(new MediaEventData
            {
                MediaId = pageEvent.DataKey,
                MediaName = data[0],
                MediaLength = length,
                EventParameter = data.Length >= 3 ? data[2] : string.Empty
            });
        }
        /// <summary>
        /// Checkouts the delivery next.
        /// </summary>
        /// <param name="deliveryAlternativeOption">The delivery alternative option.</param>
        /// <param name="notificationOption">The notification option.</param>
        /// <param name="notificationText">The notification text.</param>
        public virtual void DeliveryNext(string deliveryAlternativeOption, string notificationOption, string notificationText)
        {
            Assert.ArgumentNotNull(deliveryAlternativeOption, "deliveryAlternativeOption");
            Assert.ArgumentNotNull(notificationOption, "notificationOption");
            Assert.ArgumentNotNull(notificationText, "notificationText");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>();
            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventCheckoutDeliveryNext);
            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventCheckoutDeliveryNext;
            }

            string text = description.FormatWith(new { DeliveryAlternativeOption = deliveryAlternativeOption, NotificationOption = notificationOption, NotificationText = notificationText });
            ListString data = new ListString { deliveryAlternativeOption, notificationOption, notificationText };

            var currentPage = Tracker.Current.CurrentPage;
            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventCheckoutDeliveryNext) { Text = text, Data = data.ToString() };
            currentPage.Register(pageEventData);
        }
        private void TriggerEvent(string id, string data)
        {
            ID scId;

            if (!string.IsNullOrEmpty(id) && ID.TryParse(id, out scId))
            {
                if (Tracker.IsActive == false)
                {
                    Tracker.StartTracking();
                }

                if (Tracker.Current != null && Tracker.Current.Interaction != null && Tracker.Current.Interaction.PageCount > 0)
                {
                    Item defItem        = Context.Database.GetItem(scId);
                    var  eventToTrigger = new PageEventData(defItem.Name, scId.Guid)
                    {
                        Data = data
                    };
                    IPageContext desiredPage = null;

                    for (int i = Tracker.Current.Interaction.PageCount; i > 0 && desiredPage == null; i--)
                    {
                        var page = Tracker.Current.Interaction.GetPage(i);
                        if (page.Item != null && Guid.Empty.Equals(page.Item.Id) == false)
                        {
                            desiredPage = page;
                        }
                    }

                    desiredPage?.Register(eventToTrigger);

                    Tracker.Current.CurrentPage.Cancel();
                }
            }
        }
        protected override string ExtractDimensionKey(PageEventData pageEvent)
        {
            Assert.IsNotNull(pageEvent, "pageEvent");

            var redirectItem = Sitecore.Data.Database.GetDatabase("master").GetItem(pageEvent.ItemId.ToString());

            return redirectItem.Paths.ContentPath;
        }
Beispiel #17
0
        public override IEnumerable <string> ExtractDimensionKeys(PageEventData pageEvent)
        {
            Assert.IsNotNull(pageEvent, "pageEvent");

            var redirectItem = Sitecore.Data.Database.GetDatabase("master").GetItem(pageEvent.ItemId.ToString());

            yield return(redirectItem.Paths.ContentPath);
        }
Beispiel #18
0
        protected override string ExtractDimensionKey(PageEventData pageEvent)
        {
            Assert.IsNotNull(pageEvent, "pageEvent");

            var redirectItem = Sitecore.Data.Database.GetDatabase("web").GetItem(pageEvent.ItemId.ToString());

            return(redirectItem.Paths.ContentPath);
        }
Beispiel #19
0
        private void Trigger(TrackingEventData data, HttpContext context)
        {
            if (data == null)
            {
                BadRequest("Please provide valid data.", context);
                return;
            }

            if (Guid.TryParse(data.Id, out var id))
            {
                try
                {
                    IEventDefinition evt;

                    switch (data.Type)
                    {
                    case "outcome":
                        TriggerOutcome(Tracker.MarketingDefinitions.Outcomes[id], data, context);
                        return;

                    default:
                        evt = Tracker.MarketingDefinitions.PageEvents[id];
                        break;
                    }

                    if (evt == null)
                    {
                        BadRequest("Please provide a valid EventId", context);
                        return;
                    }

                    PageEventData pageData =
                        new PageEventData(evt.Alias, evt.Id)
                    {
                        Data = data?.Data,
                        Text = data?.Text,
                    };

                    if (Guid.TryParse(data.ItemId, out Guid itemId))
                    {
                        pageData.ItemId = itemId;
                    }

                    Tracker.Current.CurrentPage.Register(pageData);
                }
                catch (Exception ex)
                {
                    BadRequest($"An error occurred: {ex.Message}", context);
                    return;
                }
            }
            else
            {
                BadRequest("Please provide a valid EventId", context);
                return;
            }
        }
Beispiel #20
0
 protected new void TranslateEvent(PageEventData pageEventData, VisitedCategoryPageEvent pageEvent)
 {
     pageEvent.ShopName     = pageEventData.CustomValues["ShopName"] as string;
     pageEvent.CategoryId   = pageEventData.CustomValues["CategoryId"] as string;
     pageEvent.CategoryName = pageEventData.CustomValues["CategoryName"] as string;
     if (pageEventData.CustomValues.ContainsKey("PersonalizationId"))
     {
         pageEvent.CustomValues.Add("PersonalizationId", pageEventData.CustomValues["PersonalizationId"].ToString());
     }
 }
Beispiel #21
0
 private Goal Create(PageEventData pageEventData)
 {
     return(new Goal
     {
         IsCurrentVisit = true,
         Date = pageEventData.DateTime,
         EngagementValue = pageEventData.Value,
         Title = pageEventData.Name
     });
 }
Beispiel #22
0
 private Goal Create(PageEventData pageEventData)
 {
   return new Goal
          {
            IsCurrentVisit = true,
            Date = pageEventData.DateTime,
            EngagementValue = pageEventData.Value,
            Title = pageEventData.Name
          };
 }
Beispiel #23
0
 private PageEvent Create(PageEventData pageEventData)
 {
     return new PageEvent
            {
                IsCurrentVisit = true,
                Date = pageEventData.DateTime,
                EngagementValue = pageEventData.Value,
                Title = pageEventData.Name,
                Data = pageEventData.Text
            };
 }
 private PageEvent Create(PageEventData pageEventData)
 {
     return(new PageEvent
     {
         IsCurrentVisit = true,
         Date = pageEventData.DateTime,
         EngagementValue = pageEventData.Value,
         Title = pageEventData.Name,
         Data = pageEventData.Text
     });
 }
Beispiel #25
0
        /// <summary>
        /// Searches the specified page.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="hits">The number of hits.</param>
        public virtual void Search(string query, int hits)
        {
            Assert.ArgumentNotNull(query, "query");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>();

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            if (hits == 0)
            {
                string description = analyticsHelper.GetPageEventDescription(EventConstants.EventNoSearchHitsFound);
                if (string.IsNullOrEmpty(description))
                {
                    description = EventConstants.EventNoSearchHitsFound;
                }

                string text = description.FormatWith(new { Query = query });

                if (Tracker.Current.CurrentPage != null)
                {
                    var pageEventData = new PageEventData(EventConstants.EventNoSearchHitsFound)
                    {
                        Text = text, Data = query
                    };

                    Tracker.Current.CurrentPage.Register(pageEventData);
                }
            }
            else
            {
                string description = analyticsHelper.GetPageEventDescription(EventConstants.EventSearch);
                if (string.IsNullOrEmpty(description))
                {
                    description = EventConstants.EventSearch;
                }

                string text = description.FormatWith(new { Query = query });

                if (Tracker.Current.CurrentPage != null)
                {
                    var pageEventData = new PageEventData(EventConstants.EventSearch)
                    {
                        Text = text, Data = query
                    };
                    Tracker.Current.CurrentPage.Register(pageEventData);
                }
            }
        }
 protected new void TranslateEvent(PageEventData pageEventData, VisitedProductDetailsPageEvent pageEvent)
 {
     pageEvent.ShopName           = pageEventData.CustomValues["ShopName"] as string;
     pageEvent.ProductId          = pageEventData.CustomValues["Product"] as string;
     pageEvent.ProductName        = pageEventData.CustomValues["ProductName"] as string;
     pageEvent.ParentCategoryId   = pageEventData.CustomValues["ParentCategoryId"] as string;
     pageEvent.ParentCategoryName = pageEventData.CustomValues["ParentCategoryName"] as string;
     pageEvent.CurrencyCode       = pageEventData.CustomValues["Currency"] as string;
     if (pageEventData.CustomValues.ContainsKey("PersonalizationId"))
     {
         pageEvent.CustomValues.Add("PersonalizationId", pageEventData.CustomValues["PersonalizationId"].ToString());
     }
     pageEvent.Amount = new Decimal?(System.Convert.ToDecimal(pageEventData.CustomValues["Amount"], (IFormatProvider)CultureInfo.InvariantCulture));
 }
Beispiel #27
0
        /// <summary>
        /// Trigger an event or a goal.
        /// </summary>
        /// <param name="eventData">
        /// The page event data.
        /// </param>
        protected virtual void TriggerEvent(PageEventData eventData)
        {
            if (Settings.Analytics.Enabled)
            {
                if (!Tracker.IsActive)
                {
                    Tracker.StartTracking();
                }

                if (Tracker.Current.CurrentPage != null)
                {
                    Tracker.Current.CurrentPage.Register(eventData);
                }
            }
        }
        /// <summary>
        /// Trigger an event or a goal.
        /// </summary>
        /// <param name="eventData">
        /// The page event data.
        /// </param>
        protected virtual void TriggerEvent(PageEventData eventData)
        {
            if (Sitecore.Configuration.Settings.GetBoolSetting("Xdb.Enabled", false))
            {
                if (!Tracker.IsActive)
                {
                    Tracker.StartTracking();
                }

                if (Tracker.Current.CurrentPage != null)
                {
                    Tracker.Current.CurrentPage.Register(eventData);
                }
            }
        }
Beispiel #29
0
        public override void Execute(ID formId, AdaptedResultList adaptedFields, ActionCallContext actionCallContext = null, params object[] data)
        {
            _log = Sitecore.Diagnostics.LoggerFactory.GetLogger("LogFileAppender");

            var name    = adaptedFields.GetEntryByName("Name");
            var email   = adaptedFields.GetEntryByName("Email");
            var comment = adaptedFields.GetEntryByName("Comment");

            _log.Info("Writing comment to database");
            HttpContext.Current.Session["Email"] = email;

            var goal = new PageEventData("My Custom Goal", Guid.Parse("{47FF654B-76B2-49EF-A6AA-C61AE6093768}"));

            Tracker.Current.CurrentPage.Register(goal);

            var contact = Tracker.Current?.Contact;

            if (contact != null)
            {
                var commentCounterTag = contact.Tags.Find("CommentCounter");
                if (commentCounterTag == null)
                {
                    contact.Tags.Set("CommentCounter", "1");
                }
                else
                {
                    int originalValue = 0;
                    int newValue      = 0;

                    var counter = commentCounterTag.Values.FirstOrDefault();
                    if (counter != null)
                    {
                        if (Int32.TryParse(counter.Value, out originalValue))
                        {
                            newValue = originalValue + 1;
                            contact.Tags.Remove("CommentCounter", originalValue.ToString());
                            contact.Tags.Set("CommentCounter", newValue.ToString());
                        }
                    }

                    if (originalValue < 10 && newValue >= 10)
                    {
                        contact.Extensions.SimpleValues["ContributionLevel"] = "Fanboy";
                    }
                }
            }
        }
        /// <summary>
        /// Searches the specified page.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="hits">The number of hits.</param>
        public virtual void Search(string query, int hits)
        {
            Assert.ArgumentNotNull(query, "query");

              if (!Tracker.IsActive)
              {
            return;
              }

              AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>();
              Assert.IsNotNull(analyticsHelper, "analyticsHelper");

              if (hits == 0)
              {
            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventNoSearchHitsFound);
            if (string.IsNullOrEmpty(description))
            {
              description = EventConstants.EventNoSearchHitsFound;
            }

            string text = description.FormatWith(new { Query = query });

            if (Tracker.Current.CurrentPage != null)
            {
            var pageEventData = new PageEventData(EventConstants.EventNoSearchHitsFound) { Text = text, Data = query };

            Tracker.Current.CurrentPage.Register(pageEventData);
            }
              }
              else
              {
            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventSearch);
            if (string.IsNullOrEmpty(description))
            {
              description = EventConstants.EventSearch;
            }

            string text = description.FormatWith(new { Query = query });

            if (Tracker.Current.CurrentPage != null)
            {
            var pageEventData = new PageEventData(EventConstants.EventSearch) { Text = text, Data = query };
            Tracker.Current.CurrentPage.Register(pageEventData);
            }
              }
        }
        protected override void TriggerEvent(PageEventData eventData)
        {
            var analyticsEnabled = Configuration.Settings.AnalyticsEnabled;

            if (!analyticsEnabled)
            {
                return;
            }
            if (!Tracker.IsActive)
            {
                Tracker.StartTracking();
            }
            if (Tracker.Current.CurrentPage == null)
            {
                return;
            }
            ((IPageContext)Tracker.Current.CurrentPage).Register(eventData);
        }
Beispiel #32
0
        /// <summary>
        /// User login succeded.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        public virtual void UserLoginSucceded(string userName)
        {
            Assert.ArgumentNotNull(userName, "userName");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>();

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventUserLoginSucceded);

            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventUserLoginSucceded;
            }

            string text = description.FormatWith(new
            {
                Username = userName,
            });
            ListString data = new ListString {
                userName
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventUserLoginSucceded)
            {
                Text = text, Data = data.ToString()
            };

            currentPage.Register(pageEventData);
        }
Beispiel #33
0
        /// <summary>
        /// Checkouts the delivery next.
        /// </summary>
        /// <param name="deliveryAlternativeOption">The delivery alternative option.</param>
        /// <param name="notificationOption">The notification option.</param>
        /// <param name="notificationText">The notification text.</param>
        public virtual void DeliveryNext(string deliveryAlternativeOption, string notificationOption, string notificationText)
        {
            Assert.ArgumentNotNull(deliveryAlternativeOption, "deliveryAlternativeOption");
            Assert.ArgumentNotNull(notificationOption, "notificationOption");
            Assert.ArgumentNotNull(notificationText, "notificationText");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>();

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventCheckoutDeliveryNext);

            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventCheckoutDeliveryNext;
            }

            string     text = description.FormatWith(new { DeliveryAlternativeOption = deliveryAlternativeOption, NotificationOption = notificationOption, NotificationText = notificationText });
            ListString data = new ListString {
                deliveryAlternativeOption, notificationOption, notificationText
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventCheckoutDeliveryNext)
            {
                Text = text, Data = data.ToString()
            };

            currentPage.Register(pageEventData);
        }
Beispiel #34
0
        /// <summary>
        /// Shopping Cart Emptied event.
        /// </summary>
        /// <param name="shoppingCartContent">Content of the shopping cart.</param>
        /// <param name="itemsInShoppingCart">The items in shopping cart.</param>
        public virtual void ShoppingCartEmptied(string shoppingCartContent, uint itemsInShoppingCart)
        {
            Assert.ArgumentNotNull(shoppingCartContent, "shoppingCartContent");
            Assert.ArgumentNotNull(itemsInShoppingCart, "itemsInShoppingCart");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>();

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventShoppingCartEmptied);

            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventShoppingCartEmptied;
            }

            string     text = description.FormatWith(new { Amount = itemsInShoppingCart, ShoppingCartContent = shoppingCartContent });
            ListString data = new ListString {
                itemsInShoppingCart.ToString(CultureInfo.InvariantCulture), shoppingCartContent
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventShoppingCartEmptied)
            {
                Text = text, Data = data.ToString()
            };

            currentPage.Register(pageEventData);
        }
Beispiel #35
0
        /// <summary>
        /// Add to shopping cart event.
        /// </summary>
        /// <param name="productCode">The product code.</param>
        /// <param name="productName">Name of the product.</param>
        /// <param name="quantity">The quantity.</param>
        /// <param name="price">The price.</param>
        public virtual void AddToShoppingCart(string productCode, string productName, uint quantity, decimal price)
        {
            Assert.ArgumentNotNull(productName, "productName");
            Assert.ArgumentNotNull(productCode, "productCode");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>();

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventAddToShoppingCart);

            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventAddToShoppingCart;
            }

            string     text = description.FormatWith(new { Quantity = quantity, ProductName = productName, Price = price });
            ListString data = new ListString {
                productName, quantity.ToString(CultureInfo.InvariantCulture), price.ToString(CultureInfo.InvariantCulture), productCode.ToString(CultureInfo.InvariantCulture)
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventAddToShoppingCart)
            {
                Text = text, Data = data.ToString()
            };

            currentPage.Register(pageEventData);
        }
Beispiel #36
0
        public void TrackPageEvent(string pageEventName, string data, IDictionary <string, object> customValues = null)
        {
            Assert.ArgumentNotNull(pageEventName, nameof(pageEventName));

            if (!this.IsActive)
            {
                return;
            }

            var pageEventItem = Tracker.MarketingDefinitions.PageEvents.FirstOrDefault(p => p.Name.Equals(pageEventName, StringComparison.InvariantCultureIgnoreCase));

            if (pageEventItem != null)
            {
                IPageContext pageContext = Tracker.Current.CurrentPage;
                if (pageContext.Url.Path.StartsWith($"/{Events.Constants.API_BASEPATH}/"))
                {
                    pageContext = this.GetApiPageContext();
                }

                var ped = new PageEventData(pageEventItem.Name, pageEventItem.Id);

                if (!string.IsNullOrWhiteSpace(data))
                {
                    ped.Data = data;
                }

                if (customValues != null)
                {
                    customValues.Keys.Where(k => !ped.CustomValues.ContainsKey(k)).ToList().ForEach(key =>
                    {
                        ped.CustomValues.Add(key, customValues[key]);
                    });
                }

                if (pageContext != null)
                {
                    pageContext.Register(ped);
                }
            }
        }
Beispiel #37
0
        /// <summary>
        /// Checkout delivery alternative changed.
        /// </summary>
        /// <param name="optionTitle">The option title.</param>
        /// <param name="optionCode">The option code.</param>
        public virtual void PaymentMethodSelected(string optionTitle, string optionCode)
        {
            Assert.ArgumentNotNull(optionTitle, "optionTitle");
            Assert.ArgumentNotNull(optionCode, "optionCode");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>();

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventCheckoutPaymentMethodSelected);

            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventCheckoutPaymentMethodSelected;
            }

            string     text = description.FormatWith(new { Option = optionTitle, });
            ListString data = new ListString {
                optionCode, optionTitle
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventCheckoutPaymentMethodSelected)
            {
                Text = text, Data = data.ToString()
            };

            currentPage.Register(pageEventData);
        }
        /// <summary>
        /// Places the vote into Analytics.
        /// </summary>
        /// <param name="optionItem">The option item.</param>
        public static void PlaceVote(PollOptionItem optionItem)
        {
            //    //cancel pipeline handler (for CurrentPage)
              //Tracker.CurrentPage.Cancel();

              //    //Submit analytics tracking for poll item
              SubmitPollTracking(optionItem.Poll.InnerItem, optionItem.InnerItem);

              //    //event trigger on new poll option selected
              var peData = new PageEventData("Poll");

              string text = string.Format("Select {0} ({2}) in poll {1}", optionItem.Title, optionItem.Poll.Name, optionItem.Index);
              string data = string.Concat(new object[] { optionItem.Poll.Name, "|", optionItem.Title, "|", optionItem.Index });
              peData.Data = data;
              peData.Text = text;
              peData.DataKey = optionItem.Poll.Name;
              var row = Tracker.CurrentPage.Register(peData);
              row.DataCode = optionItem.Index;

              //    //submit immediatelly
              SubmitAnalyticsImmediatelly();
        }
 protected override bool Filter(PageEventData pageEvent)
 {
     Assert.IsNotNull(pageEvent, "pageEvent");
     return pageEvent.PageEventDefinitionId.Equals(this.redirectEventId);
 }
        /// <summary>
        /// Rates the page.
        /// </summary>
        /* private void RatePage()
        {
          Item item = Sitecore.Context.Item;
          if (item != null)
          {
        lock (Locking)
        {
          string key = "rate_" + item.ID;
          if (Session[key] != null)
          {
            VoteMembers voteMembers = Session[key] as VoteMembers;
            if (voteMembers != null && !voteMembers.AlreadyVoted)
            {
              NicamHelper.VoteForPage(voteMembers.ID, voteMembers.Voce, voteMembers.Mark);
              voteMembers.AlreadyVoted = true;
            }
          }
        }
          }
        }*/
        /// <summary>
        /// Tracks the generic personalization spot.
        /// </summary>
        private void TrackGenericPersonalizationSpot()
        {
            char[] symbols = { ',' };
              string spotItemId = NicamHelper.SafeRequest("GenericPersonalizationSpotId").TrimEnd(symbols);

              Item spotItem = Sitecore.Context.Database.Items[spotItemId];

              //Perform tracking of spot item
              TrackingFieldProcessor processor = new TrackingFieldProcessor();
              processor.Process(spotItem);

              string gpSpotEvent = NicamHelper.SafeRequest("GenericPersonalizationSpotGoal").TrimEnd(symbols);
              gpSpotEvent = gpSpotEvent.Replace('+', ' ');
              gpSpotEvent = gpSpotEvent.Replace("%2b", " ");
              if (gpSpotEvent != string.Empty)
              {
            var pedata = new PageEventData(gpSpotEvent);
            Tracker.CurrentPage.Register(pedata);
              }

              string redirectUrl = NicamHelper.SafeRequest("GenericPersonalizationSpotRedirectUrl").TrimEnd(symbols);
              Response.Redirect(redirectUrl);
        }
Beispiel #41
0
 protected override string ExtractDimensionKey(PageEventData pageEvent)
 {
     return "(None)";
 }
Beispiel #42
0
 protected override bool Filter(PageEventData pageEventData)
 {
     return pageEventData.IsGoal;
 }
        /// <summary>
        /// Shoppings the cart item updated.
        /// </summary>
        /// <param name="productCode">The product code.</param>
        /// <param name="productName">Name of the product.</param>
        /// <param name="amount">The products amount.</param>
        public virtual void ShoppingCartItemUpdated(string productCode, string productName, uint amount)
        {
            Assert.ArgumentNotNull(productCode, "shoppingCartContent");
            Assert.ArgumentNotNull(productName, "itemsInShoppingCart");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>();
            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventShoppingCartItemUpdated);
            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventShoppingCartItemUpdated;
            }

            string text = description.FormatWith(new { ProductName = productName, Amount = amount });
            ListString data = new ListString { productCode, productName, amount.ToString(CultureInfo.InvariantCulture) };

            var currentPage = Tracker.Current.CurrentPage;
            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventShoppingCartItemUpdated) { Text = text, Data = data.ToString() };
            currentPage.Register(pageEventData);
        }
        private static void TriggerEvent(HttpContext context)
        {
            try
            {
                var query = context.Request.QueryString;
                var eventName = query["eventName"];
                var text = query["text"];
                var key = query["key"];
                var data = query["data"];
                var integer = query["integer"];

                if (string.IsNullOrEmpty(eventName))
                {
                    return;
                }

                if (!Tracker.Enabled)
                {
                    return;
                }

                if (!Tracker.IsActive || Tracker.Current == null)
                {
                    Tracker.StartTracking();
                }

                if (Tracker.Current == null || Tracker.Current.Interaction == null)
                {
                    return;
                }

                if (Tracker.Current.Interaction.PreviousPage == null)
                {
                    return;
                }


                if (string.IsNullOrEmpty(text))
                {
                    Tracker.Current.Interaction.PreviousPage.Register(eventName, string.Empty);
                }
                else
                {
                    if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(data))
                    {
                        Tracker.Current.Interaction.PreviousPage.Register(eventName, text);
                        return;
                    }

                    var eventData = new PageEventData(eventName)
                    {
                        DataKey = key,
                        Data = data,
                        Text = text
                    };
                    Tracker.Current.Interaction.PreviousPage.Register(eventData);
                    return;

                }
            }
            catch (Exception exception)
            {
                Log.Error(string.Concat("Sitecore.SharedSource.ClientEventTracker.TriggerEvent: error in event triggering. requestUrl: ", context.Request.Url.AbsolutePath), exception, typeof(ClientEventTracker));
            }
        }
        /// <summary>
        /// User login succeded.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        public virtual void UserLoginSucceded(string userName)
        {
            Assert.ArgumentNotNull(userName, "userName");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>();
            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventUserLoginSucceded);
            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventUserLoginSucceded;
            }

            string text = description.FormatWith(new
            {
                Username = userName,
            });
            ListString data = new ListString { userName };

            var currentPage = Tracker.Current.CurrentPage;
            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventUserLoginSucceded) { Text = text, Data = data.ToString() };
            currentPage.Register(pageEventData);
        }
        /// <summary>
        /// Checkout delivery alternative changed.
        /// </summary>
        /// <param name="optionTitle">The option title.</param>
        /// <param name="optionCode">The option code.</param>
        public virtual void PaymentMethodSelected(string optionTitle, string optionCode)
        {
            Assert.ArgumentNotNull(optionTitle, "optionTitle");
            Assert.ArgumentNotNull(optionCode, "optionCode");

            if (!Tracker.IsActive)
            {
                return;
            }

            AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>();
            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(EventConstants.EventCheckoutPaymentMethodSelected);
            if (string.IsNullOrEmpty(description))
            {
                description = EventConstants.EventCheckoutPaymentMethodSelected;
            }

            string text = description.FormatWith(new { Option = optionTitle, });
            ListString data = new ListString { optionCode, optionTitle };

            var currentPage = Tracker.Current.CurrentPage;
            if (currentPage == null)
            {
                return;
            }

            var pageEventData = new PageEventData(EventConstants.EventCheckoutPaymentMethodSelected) { Text = text, Data = data.ToString() };
            currentPage.Register(pageEventData);
        }
Beispiel #47
0
 protected override string ExtractDimensionKey(PageEventData pageEvent)
 {
     return "" + pageEvent.PageEventDefinitionId;
 }