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); } }
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); } }