public static decimal BuyOneGetOneFree(PizzaOrder order)
            {
                var pizzas = order.Pizzas;

                if (pizzas.Count < 2)
                {
                    return(0m);
                }
                return(pizzas.Min(p => p.Price));
            }
 public static decimal FiveDollarsOffStuffedCrust(PizzaOrder order)
 {
     return(order.Pizzas.Sum(p => p.Crust == FiveDollarsOffStuffedCrust.Stuffed ? 5m : 0m));
 }
            public static decimal FivePercentOffMoreThanFiftyDollars(PizzaOrder order)
            {
                decimal nonDiscounted = order.Pizzas.Sum(p => p.Price);

                return(nonDiscounted >= 50 ? nonDiscounted * 0.05m : 0m);
            }
 public decimal ComputePolicy(PizzaOrder order)
 {
     return(policies.Max(ComputePolicy => ComputePolicy.Invoke(order)));
 }