Example #1
0
        private BurgerDecorator AddExtraIngredients(IBurger burger, EExtraIngredients extraIngredients)
        {
            switch (extraIngredients)
            {
            case EExtraIngredients.BASIC:
            {
                return(new BasicDecorator(burger));
            }

            case (EExtraIngredients.DRINK):
            {
                return(new DrinkDecorator(burger));
            }

            case (EExtraIngredients.SAUCE):
            {
                return(new SauceDecorator(burger));
            }

            case (EExtraIngredients.VEGETABLE):
            {
                return(new VegetableDecorator(burger));
            }

            default:
                return(null);
            }
        }
Example #2
0
        private int FulfillOrder(EBurgerType burgerType, User client, EExtraIngredients extraIngredients = EExtraIngredients.BASIC)
        {
            string name  = "";
            float  price = 0;

            if (burgerType == EBurgerType.Classic)
            {
                name  = Constants.ClassicBurgerName;
                price = Constants.ClassicBurgerPrice;
            }

            if (burgerType == EBurgerType.Deluxe)
            {
                name  = Constants.DeluxeBurgerName;
                price = Constants.DeluxeBurgerPrice;
            }

            Kitchen kitchen;


            switch (burgerType)
            {
            case EBurgerType.Classic:
            {
                kitchen = new ClassicBurgerFactory();
                var burger          = kitchen.GetBurger(name, price);
                var decoratedBurger = AddExtraIngredients(burger, extraIngredients);

                _orderedBurgers.Add(Kitchen.LastId, decoratedBurger);
                Console.WriteLine($"Classic burger was ordered : {decoratedBurger.ToString()} => ID {Kitchen.LastId}");
                Console.WriteLine("It will be serverd in a short time...");
                ServeBurger(client, Kitchen.LastId);

                return(Kitchen.LastId);
            }

            case EBurgerType.Deluxe:
            {
                kitchen = new DeluxeBurgerFactory();
                var burger          = kitchen.GetBurger(name, price);
                var decoratedBurger = AddExtraIngredients(burger, extraIngredients);

                _orderedBurgers.Add(Kitchen.LastId, decoratedBurger);

                Console.WriteLine($"Deluxe burger was ordered : {decoratedBurger.ToString()} => ID {Kitchen.LastId}");
                ApplicationMode.Instance.sendAction($"Deluxe burger was ordered : {decoratedBurger.ToString()} => ID {Kitchen.LastId}");
                Console.WriteLine("It will be serverd in a short time...");
                ServeBurger(client, Kitchen.LastId);

                return(Kitchen.LastId);
            }

            default:
                return(-1);
            }
        }