/// <summary> /// Inserts an product also purchased /// </summary> /// <param name="order">Order</param> public virtual void InsertProductAlsoPurchased(Order order) { if (order == null) { throw new ArgumentNullException("order"); } Task.Run(() => { foreach (var item in order.OrderItems) { foreach (var it in order.OrderItems.Where(x => x.ProductId != item.ProductId)) { var productPurchase = new ProductAlsoPurchased(); productPurchase.ProductId = item.ProductId; productPurchase.OrderId = order.Id; productPurchase.CreatedOrderOnUtc = order.CreatedOnUtc; productPurchase.Quantity = it.Quantity; productPurchase.StoreId = order.StoreId; productPurchase.ProductId2 = it.ProductId; _productAlsoPurchasedRepository.Insert(productPurchase); } } }); }
protected Task InsertProductAlsoPurchased(Order order) { foreach (var item in order.OrderItems) { foreach (var it in order.OrderItems.Where(x => x.ProductId != item.ProductId)) { var productPurchase = new ProductAlsoPurchased(); productPurchase.ProductId = item.ProductId; productPurchase.OrderId = order.Id; productPurchase.CreatedOrderOnUtc = order.CreatedOnUtc; productPurchase.Quantity = it.Quantity; productPurchase.StoreId = order.StoreId; productPurchase.ProductId2 = it.ProductId; _productAlsoPurchasedRepository.InsertAsync(productPurchase); } } return(Task.CompletedTask); }
/// <summary> /// Inserts an product also purchased /// </summary> /// <param name="order">Order</param> public virtual void InsertProductAlsoPurchased(Order order) { if (order == null) { throw new ArgumentNullException("order"); } foreach (var item in order.OrderItems) { var product = (from p in _productAlsoPurchasedRepository.Table where p.ProductId == item.ProductId select p).FirstOrDefault(); if (product == null) { product = new ProductAlsoPurchased(); product.ProductId = item.ProductId; _productAlsoPurchasedRepository.Insert(product); } foreach (var it in order.OrderItems.Where(x => x.ProductId != item.ProductId)) { var purchase = new Purchase() { Id = product.Purchased.Count > 0 ? product.Purchased.Max(x => x.Id) + 1 : 1, OrderId = order.Id, CreatedOrderOnUtc = order.CreatedOnUtc, _id = ObjectId.GenerateNewId().ToString(), Quantity = it.Quantity, StoreId = order.StoreId, ProductId = it.ProductId }; var updatebuilder = Builders <ProductAlsoPurchased> .Update; var update = updatebuilder.AddToSet(p => p.Purchased, purchase); _productAlsoPurchasedRepository.Collection.UpdateOneAsync(new BsonDocument("Id", product.Id), update); } } //event notification //_eventPublisher.EntityInserted(product); }