public static PromoPackage GetPromoPackage(Order order) { foreach (PromoPackage promoPackage in promoPackages) { if (promoPackage.IsEligible(order)) { return promoPackage; } } return null; }
private int CalculateDiscount(Order order) { if (!Inventory.IsPromoOrder(order)) { return 0; } PromoPackage promoPackage = Inventory.GetPromoPackage(order); return promoPackage.CaclulateDiscount(); }
public bool CustomerBuysBooksWithTitle(string customerName, int amount, String title) { Domain.Books.Book book = Inventory.FindByTitle(title); Domain.Customers.Customer customer = CustomerRepository.FindByName(customerName); var order = new Order(customer); order.AddBook(amount, book); bookService.BuyBooks(order); return true; }
public void BuyBooks(Order order) { int discount = CalculateDiscount(order); order.ApplyDiscount(discount); // Then deduct the inventory foreach (Book book in order.Books) { int amount = order.GetAmount(book); Inventory.DeductInventory(book, amount); } }
public bool IsEligible(Order order) { return order.ContainsBook(book1) && order.ContainsBook(book2); }
public static bool IsPromoOrder(Order order) { foreach (PromoPackage promoPackage in promoPackages) { if (promoPackage.IsEligible(order)) { return true; } } return false; }