示例#1
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);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Products the reviewed.
        /// </summary>
        /// <param name="productCode">The product code.</param>
        /// <param name="productName">Name of the product.</param>
        /// <param name="title">The title.</param>
        /// <param name="description">The description.</param>
        /// <param name="rate">The product rate.</param>
        public virtual void ProductReviewed(string productCode, string productName, string title, string description, string rate)
        {
            Assert.ArgumentNotNull(title, "title");
            Assert.ArgumentNotNull(description, "description");
            Assert.ArgumentNotNull(rate, "rate");
            Assert.ArgumentNotNull(productCode, "productCode");
            Assert.ArgumentNotNull(productName, "productName");

            if (!Tracker.IsActive)
            {
                return;
            }

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

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string eventDescription = analyticsHelper.GetPageEventDescription(EventConstants.EventProductReviewed);

            if (string.IsNullOrEmpty(eventDescription))
            {
                eventDescription = EventConstants.EventProductReviewed;
            }

            string     text = eventDescription.FormatWith(new { Title = title, Text = description, Rate = rate, ProductName = productName });
            ListString data = new ListString {
                productCode, title, description, rate, productName
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

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

            currentPage.Register(pageEventData);
        }
示例#3
0
        /// <summary>
        /// Used to read the querystring parameter from a productlink in list and register event in analytics database.
        /// </summary>
        public virtual void FollowListHit()
        {
            if (!Tracker.IsActive)
            {
                return;
            }

            string setting = Settings.GetSetting("Ecommerce.Analytics.EventQueryStringKey");

            UrlString urlString = new UrlString(WebUtil.GetRawUrl());

            string listName = urlString[setting + "_data"] ?? string.Empty;

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

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string eventDescription = analyticsHelper.GetPageEventDescription(EventConstants.EventUserClickedItemInList);

            if (string.IsNullOrEmpty(eventDescription))
            {
                eventDescription = EventConstants.EventUserClickedItemInList;
            }

            string     text = eventDescription.FormatWith(new { List = listName, ProductName = Sitecore.Context.Item["Title"] });
            ListString data = new ListString {
                listName, Sitecore.Context.Item["Title"]
            };

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage == null)
            {
                return;
            }

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

            currentPage.Register(pageEventData);
        }
示例#4
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);
        }
示例#5
0
        /// <summary>
        /// Go to check out.
        /// </summary>
        public virtual void GoToCheckOut()
        {
            if (!Tracker.IsActive)
            {
                return;
            }

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

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

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

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage != null)
            {
                currentPage.Register(EventConstants.EventGoToCheckout, description);
            }
        }
示例#6
0
        /// <summary>
        /// Registers the no parameter event.
        /// </summary>
        /// <param name="event">The event.</param>
        public static void RegisterNoParameterEvent(string @event)
        {
            if (!Tracker.IsActive)
            {
                return;
            }

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

            Assert.IsNotNull(analyticsHelper, "analyticsHelper");

            string description = analyticsHelper.GetPageEventDescription(@event);

            var currentPage = Tracker.Current.CurrentPage;

            if (currentPage != null)
            {
                currentPage.Register(@event, description);
            }
        }
示例#7
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);
        }
示例#8
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);
        }
示例#9
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);
        }
示例#10
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);
        }