/// <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; }
/// <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; }
/// <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)); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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 }; }