public static Drink OrderDrink(string type, bool hasMilk, bool hasSugar, bool hasChocolate = false)//Adding hasChocolate as optional parameter to avoid regression { Drink drink = null; type = RemoveSpaceIfAny(type); Enum.TryParse(type, out DrinkType drinkType); switch (drinkType) { case DrinkType.Expresso: drink = new Expresso(); break; case DrinkType.HotTea: drink = new HotTea(); break; case DrinkType.IceTea: drink = new IceTea(); break; } try { if (hasMilk) { drink.Toppings.Add(new Milk()); } if (hasSugar) { drink.Toppings.Add(new Sugar()); } if (hasChocolate) { drink.Toppings.Add(new Chocolate()); } drink.Prepare(); } catch (Exception ex) { Console.WriteLine("We are unable to prepare your drink."); //Warning: I Add to change to d:\ as root is readonly on my machine. System.IO.File.WriteAllText(@"c:\Error.txt", ex.ToString()); } return(drink); }
public static IDrink OrderDrink(DrinkList type, bool hasMilk, bool hasSugar, bool hasChocolateTopping) { IDrink drink; switch (type) { case DrinkList.Espresso: drink = new Espresso(); break; case DrinkList.Tea: drink = new Tea(); break; case DrinkList.IceTea: drink = new IceTea(); break; default: throw new InvalidOperationException($"Unknown drink: {type}"); } try { if (hasMilk) { drink.AddTopping(ToppingsList.Milk); } if (hasSugar) { drink.AddTopping(ToppingsList.Sugar); } if (hasChocolateTopping) { drink.AddTopping(ToppingsList.Chocolate); } drink.Prepare(); } catch (Exception ex) { Console.WriteLine("We are unable to prepare your drink."); System.IO.File.WriteAllText(@"Error.txt", ex.ToString()); return(null); } return(drink); }