public OrderCalculator2( ICanDiscountStrategy canDiscountStrategy, IDiscountStrategy discountStrategy) { this.canDiscountStrategy = canDiscountStrategy; this.discountStrategy = discountStrategy; }
public static void Apply(this IList <Product> products, IDiscountStrategy discountStrategy) { foreach (Product p in products) { p.Price.SetDiscountStrategyTo(discountStrategy); } }
public Campaign(Category category, uint minItems, decimal discountQuantity, IDiscountStrategy discountStrategy) { Category = category; MinimumItems = minItems; DiscountStrategy = discountStrategy; DiscountQuantity = discountQuantity; }
public static void Apply(this IList<Product> products,IDiscountStrategy discountStrategy) { foreach (Product p in products) { p.Price.SetDiscountStrategyTo(discountStrategy); } }
public OrderDiscountCalculator( IRuleStrategy ruleStrategy, IDiscountStrategy discountStrategy ) { this.ruleStrategy = ruleStrategy; this.discountStrategy = discountStrategy; }
/// <summary> /// 为所有传入的 产品 对象 赋予统一的折扣策略(传入的discountStrategy) /// </summary> /// <param name="products"></param> /// <param name="discountStrategy"></param> public static void Apply(this IList <Product> products, IDiscountStrategy discountStrategy) { //为所有传入的 产品 对象 赋予统一的折扣策略(传入的discountStrategy) foreach (Product p in products) { p.Price.SetDiscountStrategyTo(discountStrategy); } }
public IList <Product> GetAllProductsFor(CustomerType customerType) { IDiscountStrategy discountStrategy = DiscountFactory.GetDiscountStrategyFor(customerType); IList <Product> products = _productRepository.FindAll(); products.Apply(discountStrategy); return(products); }
protected override void TestSetUp() { IDiscountStrategy tieredDiscountStrategy = DiscountStrategyBuilder.BuildTieredStrategy() .Where.OrdersGreaterThanOrEqualTo(100.dollars()).GetDiscountOf(10.Percent()) .Build(); _calculator = new DiscountCalculator(tieredDiscountStrategy); }
public When_calculating_a_tiered_discount() { IDiscountStrategy tieredDiscountStrategy = DiscountStrategyBuilder.BuildTieredStrategy() .Where.OrdersGreaterThanOrEqualTo(100.dollars()).GetDiscountOf(10.Percent()) .Build(); _calculator = new DiscountCalculator(tieredDiscountStrategy); }
public IList <Product> GetProductsFor(CustomerType type) { IDiscountStrategy strategy = DiscountFactory.GetDiscountStrategy(type); IList <Product> products = _repository.FindAll(); products.ApplyDiscountStrategy(strategy); return(products); }
public void Start() { discountStrategy = new FirstGuestDiscountStrategy(); Calculator calculator = new Calculator(discountStrategy); items = CreateItems(); Console.WriteLine(calculator.Calculate(items)); }
public void ApplyStrategy(IDiscountStrategy strategy) { Console.WriteLine("Price before offer: " + price); double finalPrice = price - (price * strategy.GetDiscountPercetange()); Console.WriteLine("Price after offer: " + finalPrice); }
public static void Apply(this IList<Product> products, IDiscountStrategy discountStrategy) { foreach (Product p in products) { // just setting discount strategy property p.Price.SetDiscountStrategyTo(discountStrategy); } }
public IList <Product> GetAllProductsFor(CustomerType customerType) { IDiscountStrategy _discountStrategy = DiscountFactory.GetDiscountStrategyFor(customerType); IList <Product> _productList = _productRepository.FindAll(); if (_productList != null) { _productList.Apply(_discountStrategy); } return(_productList); }
/// <summary> /// 为全部产品赋予指定的折扣策略 /// </summary> /// <param name="customerType"></param> /// <returns></returns> public IList <Product> GetAllProductsFor(CustomerType customerType) { //1 根据传入的值通过 工厂模式去创建对应的折扣策略 IDiscountStrategy discountStrategy = DiscountFactory.GetDiscountStrategyFor(customerType); //2 获取产品仓库中的全部集合 IList <Product> products = _productRepository.FindAll(); //3 为产品仓库赋予折扣策略 products.Apply(discountStrategy); return(products); }
public bool UpdateProductsFor(CustomerType customerType, IList <Product> productList) { IDiscountStrategy _discountStrategy = DiscountFactory.GetDiscountStrategyFor(customerType); try { _productRepository.Update(productList); return(true); } catch { return(false); } }
public double GetFinalDiscountPrice() { switch (CustomerType) { case CustomerType.PremiumCustomer: _discountStrategy = new PremiumDiscount(); break; case CustomerType.NonPremiumCustomer: _discountStrategy = new NonPremiumDiscount(); break; } return(_discountStrategy.GetDiscountedBillAount(BillAount)); }
private void calcDiscButton_Click(object sender, EventArgs e) { int i = 0; checks.ForEach(x => i += x.Checked ? 1 : 0); if (i == 0) { return; } IDiscountStrategy disc_strat = null; if (i == 1) { if (chkAE.Checked) { disc_strat = new AcademicExcellenceDiscount(); } else if (chkAM.Checked) { disc_strat = new AboriginalMinorityDiscount(); } else // if (chkFF.Checked) { disc_strat = new FreedomFighterDiscount(); } } else { CompositeDiscount ds = new CompositeDiscount(comboBox1.Text); if (chkAE.Checked) { ds.addDiscount(new AcademicExcellenceDiscount()); } if (chkAM.Checked) { ds.addDiscount(new AboriginalMinorityDiscount()); } if (chkFF.Checked) { ds.addDiscount(new FreedomFighterDiscount()); } disc_strat = ds; } rcc.getRegistration().setDiscountStrategy(disc_strat); GetChanged(rcc.getRegistration()); Program.play = true; }
public static void Test() { Customer customer = new Customer("Anna", "Kowalska"); Order order = CreateOrder(customer); ICanDiscountStrategy canDiscountStrategy = new HappyHoursCanDiscountStrategy(TimeSpan.Parse("9:30"), TimeSpan.Parse("16")); IDiscountStrategy discountStrategy = new PercentageDiscountStrategy(0.1m); // PMC> Install-Package Newtonsoft.Json string jsonDiscountStrategy = JsonConvert.SerializeObject(discountStrategy); IDiscountStrategy discountStrategy2 = JsonConvert.DeserializeObject <PercentageDiscountStrategy>(jsonDiscountStrategy); OrderDiscountCalculator discountCalculator = new OrderDiscountCalculator(canDiscountStrategy, discountStrategy); decimal discount = discountCalculator.CalculateDiscount(order); }
public RefactoredProductClass( IDiscountRepository discountRepository, IDiscountStrategy discountStrategy) { if (discountRepository == null) { throw new ArgumentNullException(nameof(discountRepository)); } if (discountStrategy == null) { throw new ArgumentNullException(nameof(discountStrategy)); } _discountRepository = discountRepository; _discountStrategy = discountStrategy; }
/// <summary> /// Main basket items processing method. It's idemopotent. /// </summary> public void Checkout() { SkuEntity skuEntity; IBasketParser basketParser = BasketParser.Create(basketFilePath); receiptLineItems = new List <Entities.LineItem>(); // Iterate through each item in the basket while (basketParser.MoveNext()) { basketItem = basketParser.Current; skuEntity = this.catalogModel.Find(basketItem.Sku); if (skuEntity != null) { // Add regular line item receiptLineItems.Add(new LineItem { LineItemType = DiscountTypes.noDiscount, Label = skuEntity.Label, Price = skuEntity.Price, Qty = basketItem.Qty, Sku = skuEntity.Id, Total = basketItem.Qty * skuEntity.Price }); // Add discount line item (automatically determined by the appropriate discount strategy for the item) IDiscountStrategy discountStrategy = DiscountStrategy.Instance.Create(skuEntity.DiscountType); // Create the discount line item if any LineItem discountLineItem = discountStrategy.GenerateDiscountLineItem(skuEntity, basketItem); if (discountLineItem != null) { receiptLineItems.Add(discountLineItem); } } } // Reset discount strategies to get them ready for next basket checkout DiscountStrategy.Instance.Reset(); }
public ProductListResponse GetAllProductsFor(ProductListRequest request) { ProductListResponse productListResponse = new ProductListResponse(); try { IDiscountStrategy discountStrategy = DiscountFactory.GetDiscountStrategyFor(request.CustomerType); IList <Product> products = _productRepository.FindAll(); products.Apply(discountStrategy); productListResponse.Products = products.ConvertToProductListViewModel(); productListResponse.Success = true; } catch (Exception ex) { productListResponse.Success = false; productListResponse.Message = ex.Message; } return(productListResponse); }
/// <summary> /// When you instantiate a price class, it defaults to doing nothing (returning the same cost). /// </summary> public Price() { _discountStrategy = new NullDiscountStrategy(); }
public void addDiscount(IDiscountStrategy ids) { discounts.Add(ids); //MessageBox.Show("Discount added successfully"); }
public DiscountContext(IDiscountStrategy strategy) { this.strategy = strategy; }
public void setDiscountStrategy(IDiscountStrategy ids) { discountStrategy = ids; }
/// <summary> /// Swaps out and recalculates the cost of a given Price through the applied discount algorithm /// </summary> /// <param name="discountStrategy"></param> public void SetAndApplyDiscountStrategy(IDiscountStrategy discountStrategy) { _discountStrategy = discountStrategy; this.DiscountedCost = _discountStrategy.ApplyDiscount(this.Cost); }
public void SetDiscountStrategyTo(IDiscountStrategy DiscountStrategy) { _discountStrategy = DiscountStrategy; }
public void SetDiscountStrategyTo(IDiscountStrategy discountStrategy) { this.discountStrategy = discountStrategy; }
public ShoppingMall(IDiscountStrategy discountStrategy) { CurrentStrategy = discountStrategy; }
public void SetDiscountStrategyTo(IDiscountStrategy discountStrategy) { this._discountStrategy = discountStrategy; }
public BasketApplyDiscount(IDiscountStrategy discountStrategy) { _discountStrategy = discountStrategy; }
public DiscountContext(IDiscountStrategy discountStrategy) { _discountStrategy = discountStrategy; }
public PricingCalculator(ShoppingCart cart, IDiscountStrategy discountStrategy) { _cart = cart; _discountStrategy = discountStrategy; }
public OrderCalculator(IValidatorStrategy validatorStrategy, IDiscountStrategy discountStrategy) { this.validatorStrategy = validatorStrategy; this.discountStrategy = discountStrategy; }
public DiscountOrderCalculator(IDiscountStrategy discountStrategy) { this.discountStrategy = discountStrategy; }
protected Discount(IDiscountStrategy discountStrategy) { DiscountStrategy = discountStrategy; }
public static IEnumerable<Event> ApplyDiscount(this IEnumerable<Event> events, IDiscountStrategy discountStrategy) { foreach (Event e in events) e.TicketPrice.SetAndApplyDiscountStrategy(discountStrategy); return events; }
public DiscountCalculator( IDiscountStrategy discountStrategy ) { _discountStrategy = discountStrategy; }