Beispiel #1
0
        /// <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);
 }
Beispiel #3
0
        /// <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);
        }