コード例 #1
0
ファイル: ViewTracker.cs プロジェクト: Smilefounder/Ecommerce
        public void OnResolvedPage(System.Web.Mvc.ControllerContext controllerContext, CMS.Sites.View.PageRequestContext pageRequestContext)
        {
            var page = pageRequestContext.Page;

            if (!page.CustomFields.ContainsKey("ProductId"))
            {
                return;
            }

            var value = ParameterizedFieldValue.GetFieldValue(page.CustomFields["ProductId"], pageRequestContext.GetValueProvider());

            if (String.IsNullOrEmpty(value))
            {
                return;
            }

            int productId;

            if (Int32.TryParse(value, out productId))
            {
                BehaviorReceivers.Receive(Site.Current.GetCommerceInstanceName(),
                                          new Behavior
                {
                    Type   = BehaviorTypes.View,
                    ItemId = productId.ToString(),
                    UserId = controllerContext.RequestContext.HttpContext.EnsureVisitorUniqueId()
                });
            }
        }
コード例 #2
0
        public static void Initialize(string instance)
        {
            var defaultBehaviorWeights = new Dictionary <string, float>
            {
                { BehaviorTypes.View, .5f },
                { BehaviorTypes.AddToCart, .7f },
                { BehaviorTypes.Purchase, 1f }
            };

            foreach (var behaviorType in BehaviorTypes.All())
            {
                BehaviorStores.Register(instance, behaviorType, new SqlceBehaviorStore(instance, behaviorType));

                float weight = defaultBehaviorWeights[behaviorType];
                var   config = BehaviorConfig.Load(instance, behaviorType);
                if (config != null)
                {
                    weight = config.Weight;
                }

                var matrix = new SqlceSimilarityMatrix(instance, behaviorType, "Similarity_" + behaviorType);
                SimilarityMatrixes.Register(instance, behaviorType, matrix);
                RelatedItemsProviders.Register(instance, new ItemToItemRelatedItemsProvider(matrix), weight);
            }

            BehaviorReceivers.Set(instance, new BufferedBehaviorReceiver(new BehaviorReceiver(instance), 1000, TimeSpan.FromSeconds(5)));
            RecommendationEngines.Register(instance, CreateRecommendationEngines(instance));

            Schedulers.Start(instance);
            ScheduleJobs(instance);
        }
コード例 #3
0
 public void Handle(CartItemAdded @event, CommerceInstance instance)
 {
     BehaviorReceivers.Receive(CommerceInstance.Current.Name,
                               new Behavior {
         ItemId = @event.ProductId.ToString(),
         Type   = BehaviorTypes.AddToCart,
         UserId = new HttpContextWrapper(HttpContext.Current).EnsureVisitorUniqueId()
     });
 }
コード例 #4
0
        public static void Dispose(string instance)
        {
            RecommendationEngines.RemoveEngines(instance);

            Schedulers.Stop(instance);
            BehaviorReceivers.Remove(instance);
            BehaviorStores.Remove(instance);
            SimilarityMatrixes.Remove(instance);
            RelatedItemsProviders.RemoveProviders(instance);
        }
コード例 #5
0
        public void Handle(OrderStatusChanged @event, CommerceInstance instance)
        {
            if (@event.NewStatus != OrderStatus.Paid)
            {
                return;
            }

            var behaviors = new List <Behavior>();

            var order = new OrderService(instance).Find(@event.OrderId);

            foreach (var item in order.OrderItems)
            {
                behaviors.Add(new Behavior
                {
                    ItemId = item.ProductVariant.ProductId.ToString(),
                    UserId = order.CustomerId.ToString(),
                    Type   = BehaviorTypes.Purchase
                });
            }

            BehaviorReceivers.Receive(instance.Name, behaviors);
        }