private Order OrderWithSingleProductOfPriceAndMaxTotalCost(Money productPrice, Money limit) { Order order = new Order(OrderLimit.LimitedBy(limit)); order.AddNewProduct(ProductOfValue(productPrice)); return(order); }
private Money Recalculate() { var totalCost = Items.Select(x => x.Cost()).Aggregate((x, y) => x.Add(y)); var discount = _discountPolicy(this); totalCost = totalCost.MultiplyBy(1 - discount); if (OrderLimit.IsExceededBy(totalCost)) { throw new OrderMaxTotalCostExceeded(); } return(totalCost); }
public Order(OrderLimit limit) { _discountPolicy = DefaultPolicy(); Id = GenerateId(); OrderLimit = limit; }
public Order() { _discountPolicy = DefaultPolicy(); Id = GenerateId(); OrderLimit = OrderLimit.Unlimited(); }