/// <summary>
    /// Initializes a new instance of the <see cref="RemoveOrderLineProcessingStrategy" /> class.
    /// </summary>
    /// <param name="merchantOrderManager">The merchant order manager.</param>
    /// <param name="productStockManager">The product stock manager.</param>
    /// <param name="calculationStrategy">The calculation strategy.</param>
    public RemoveOrderLineProcessingStrategy(MerchantOrderManager merchantOrderManager, IProductStockManager productStockManager, IOrderCalculationStrategy calculationStrategy)
    {
      Assert.ArgumentNotNull(merchantOrderManager, "merchantOrderManager");
      Assert.ArgumentNotNull(productStockManager, "productStockManager");
      Assert.ArgumentNotNull(calculationStrategy, "calculationStrategy");

      this.merchantOrderManager = merchantOrderManager;
      this.productStockManager = productStockManager;
      this.calculationStrategy = calculationStrategy;
    }
        /// <summary>
        /// Initializes a new instance of the <see cref="RemoveOrderLineProcessingStrategy" /> class.
        /// </summary>
        /// <param name="merchantOrderManager">The merchant order manager.</param>
        /// <param name="productStockManager">The product stock manager.</param>
        /// <param name="calculationStrategy">The calculation strategy.</param>
        public RemoveOrderLineProcessingStrategy(MerchantOrderManager merchantOrderManager, IProductStockManager productStockManager, IOrderCalculationStrategy calculationStrategy)
        {
            Assert.ArgumentNotNull(merchantOrderManager, "merchantOrderManager");
            Assert.ArgumentNotNull(productStockManager, "productStockManager");
            Assert.ArgumentNotNull(calculationStrategy, "calculationStrategy");

            this.merchantOrderManager = merchantOrderManager;
            this.productStockManager  = productStockManager;
            this.calculationStrategy  = calculationStrategy;
        }
    /// <summary>
    /// Initializes a new instance of the <see cref="AddNewOrderLineProcessingStrategy" /> class.
    /// </summary>
    /// <param name="merchantOrderManager">The order manager.</param>
    /// <param name="orderLineFactory">The order line factory.</param>
    /// <param name="productStockManager">The product stock manager.</param>
    public AddNewOrderLineProcessingStrategy(MerchantOrderManager merchantOrderManager, OrderLineFactory orderLineFactory, IProductStockManager productStockManager)
    {
      Assert.ArgumentNotNull(merchantOrderManager, "merchantOrderManager");
      Assert.ArgumentNotNull(orderLineFactory, "orderLineFactory");
      Assert.ArgumentNotNull(productStockManager, "productStockManager");

      this.merchantOrderManager = merchantOrderManager;
      this.orderLineFactory = orderLineFactory;
      this.productStockManager = productStockManager;
    }
Пример #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EditOrderLineProcessingStrategy" /> class.
        /// </summary>
        /// <param name="merchantOrderManager">The merchant order manager.</param>
        /// <param name="orderLineFactory">The order line factory.</param>
        /// <param name="productStockManager">The product stock manager.</param>
        public EditOrderLineProcessingStrategy(MerchantOrderManager merchantOrderManager, OrderLineFactory orderLineFactory, IProductStockManager productStockManager)
        {
            Assert.ArgumentNotNull(merchantOrderManager, "merchantOrderManager");
            Assert.ArgumentNotNull(orderLineFactory, "orderLineFactory");
            Assert.ArgumentNotNull(productStockManager, "productStockManager");

            this.merchantOrderManager = merchantOrderManager;
            this.orderLineFactory     = orderLineFactory;
            this.productStockManager  = productStockManager;
        }
Пример #5
0
        /// <summary>
        /// Gets the specified product stock.
        /// </summary>
        /// <param name="stockInfo">The stock info.</param>
        /// <param name="args">The arguments.</param>
        /// <returns>The product stock.</returns>
        public ProductStock Get(ProductStockInfo stockInfo, ServiceClientArgs args)
        {
            SiteContext site = Utils.GetExistingSiteContext(args);

            using (new SiteContextSwitcher(site))
            {
                IProductStockManager stockManager = Context.Entity.Resolve <IProductStockManager>();

                return(stockManager.GetStock(stockInfo));
            }
        }
Пример #6
0
        /// <summary>
        /// Updates the specified product stock.
        /// </summary>
        /// <param name="code">The code.</param>
        /// <param name="newAmount">The new amount.</param>
        /// <param name="args">The arguments.</param>
        public void Update(string code, long newAmount, ServiceClientArgs args)
        {
            ProductStockInfo stockInfo = new ProductStockInfo {
                ProductCode = code
            };

            SiteContext site = Utils.GetExistingSiteContext(args);

            using (new SiteContextSwitcher(site))
            {
                IProductStockManager stockManager = Context.Entity.Resolve <IProductStockManager>();

                stockManager.Update(stockInfo, newAmount);
            }
        }
Пример #7
0
        /// <summary>
        /// Processes the specified order.
        /// </summary>
        /// <typeparam name="T">The order type.</typeparam>
        /// <param name="order">The order instance.</param>
        protected override void Process <T>(T order)
        {
            if (order.OrderLines.IsNullOrEmpty())
            {
                return;
            }

            foreach (OrderLine indexOrderLine in order.OrderLines)
            {
                if (!(indexOrderLine.Product is Product))
                {
                    continue;
                }

                IProductStockManager stockManager = Context.Entity.Resolve <IProductStockManager>();
                ProductStockInfo     stockInfo    = new ProductStockInfo {
                    ProductCode = indexOrderLine.Product.Code
                };
                OrderLine line = indexOrderLine;

                stockManager.Update(stockInfo, s => s - line.Quantity);
            }
        }
Пример #8
0
        /// <summary>
        /// Gets the stock.
        /// </summary>
        /// <param name="productId">The product id.</param>
        /// <returns>The stock.</returns>
        public long GetStock(string productId)
        {
            if (string.IsNullOrEmpty(productId))
            {
                return(0);
            }

            long stockValue = 0;

            try
            {
                IProductStockManager stockManager = Context.Entity.Resolve <IProductStockManager>();
                ProductStock         stock        = stockManager.GetStock(new ProductStockInfo {
                    ProductCode = productId
                });
                stockValue = stock.Stock;
            }
            catch (Exception ex)
            {
                Log.Error("Unable to resolve stock value.", ex, this);
            }

            return(stockValue);
        }
Пример #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ChangeOrderLineQuantityProcessingStrategy" /> class.
 /// </summary>
 /// <param name="merchantOrderManager">The merchant order manager.</param>
 /// <param name="orderLineFactory">The order line factory.</param>
 /// <param name="productStockManager">The product stock manager.</param>
 public ChangeOrderLineQuantityProcessingStrategy(MerchantOrderManager merchantOrderManager, OrderLineFactory orderLineFactory, IProductStockManager productStockManager)
     : base(merchantOrderManager, orderLineFactory, productStockManager)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ChangeOrderLineQuantityProcessingStrategy" /> class.
 /// </summary>
 /// <param name="merchantOrderManager">The merchant order manager.</param>
 /// <param name="orderLineFactory">The order line factory.</param>
 /// <param name="productStockManager">The product stock manager.</param>
 public ChangeOrderLineQuantityProcessingStrategy(MerchantOrderManager merchantOrderManager, OrderLineFactory orderLineFactory, IProductStockManager productStockManager)
   : base(merchantOrderManager, orderLineFactory, productStockManager)
 {
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProductDetailsPresenterTest" /> class.
        /// </summary>
        public ProductDetailsPresenterTest()
        {
            this.view = Substitute.For<IProductDetailsView>();

              this.product = new Product { Code = "d3" };

              this.productRepository = Substitute.For<IProductRepository>();
              this.productRepository.Get<Product>("d3").Returns(this.product);

              this.priceManager = Substitute.For<IProductPriceManager>();
              this.priceManager.GetProductTotals<Totals, Product, Currency>(this.product, null).Returns(new Totals { PriceExVat = 7.00m });

              this.stockManager = Substitute.For<IProductStockManager>();
              this.stockManager.GetStock(Arg.Is<ProductStockInfo>(p => p.ProductCode == "d3")).Returns(new Products.ProductStock { Code = "d3", Stock = 5 });

              this.orderManager = Substitute.For<VisitorOrderManager>();
              this.httpContext = Substitute.For<HttpContextBase>();

              new ProductDetailsPresenter(this.view, this.productRepository, this.stockManager, this.priceManager, this.orderManager) { HttpContext = this.httpContext };
        }