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() }); } }
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); }
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() }); }
public static void Dispose(string instance) { RecommendationEngines.RemoveEngines(instance); Schedulers.Stop(instance); BehaviorReceivers.Remove(instance); BehaviorStores.Remove(instance); SimilarityMatrixes.Remove(instance); RelatedItemsProviders.RemoveProviders(instance); }
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); }