Пример #1
0
        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);
        }
Пример #2
0
        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);
        }