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();
                }
            }
        }
Пример #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);
                }
            }
        }
Пример #3
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);
                }
            }
        }