Example #1
0
        public IFoodstuff MakeDish(DishesIndex dish, double weight, IFoodstuff dishDressing = null)
        {
            try
            {
                switch (dish)
                {
                case DishesIndex.CaesarSalad:

                    IEnumerable <IFoodstuff> saladIngredients = GetSaladIngredients(weight, dish);

                    return(new CaesarSalad(weight, saladIngredients, dishDressing as CaesarSauce));

                case DishesIndex.CaesarSauce:

                    IEnumerable <IFoodstuff> sauceIngredients = GetSauceIngredients(weight, dish);

                    return(new CaesarSauce(weight, sauceIngredients));

                default:

                    return(null);
                }
            }
            catch
            {
                throw;
            }
        }
Example #2
0
 public double CalculateCaloricValue(IFoodstuff dish)
 {
     try
     {
         return(dish.Weight * dish.CaloricPer100Grams / 100);
     }
     catch
     {
         throw;
     }
 }
Example #3
0
 public FoodstuffAmountCellViewModel(
     IFoodstuff foodstuff,
     float amount,
     IOption <float> requiredAmount,
     Func <Unit, Task> onPlus,
     Func <Unit, Task> onMinus,
     params UserAction <Unit>[] menuActions)
 {
     Foodstuff      = foodstuff;
     Amount         = amount;
     RequiredAmount = requiredAmount;
     OnPlus         = onPlus;
     OnMinus        = onMinus;
     MenuActions    = menuActions;
 }
Example #4
0
        /// <summary>
        /// Fire the event "SortFoodstuffOrder".
        /// </summary>
        public void OnSortFoodstuffOrder(IFoodstuff dish)
        {
            var productsList = SortFoodstuffOrder?.Invoke(dish);

            Console.SetCursorPosition(30, Console.CursorTop);

            Console.WriteLine($"Ккал на 100гр.");

            foreach (var product in productsList)
            {
                Console.Write($"{product.Name}");

                Console.SetCursorPosition(30, Console.CursorTop);

                Console.WriteLine($"{product.CaloricPer100Grams:f1}");
            }

            Console.WriteLine($"\n");
        }
Example #5
0
        public IEnumerable <IFoodstuff> SortFoodstuffsBy(IFoodstuff dish)
        {
            try
            {
                var type = dish.GetType();

                var propertyInfo = type.GetProperties();

                Comparison <IFoodstuff> sort;

                sort = (x, y) =>
                {
                    if (x.CaloricPer100Grams > y.CaloricPer100Grams)
                    {
                        return(-1);
                    }

                    else if (x.CaloricPer100Grams < y.CaloricPer100Grams)
                    {
                        return(1);
                    }

                    return(0);
                };

                var productsOfDish = propertyInfo
                                     .Select(prop => prop.GetValue(dish) as IFoodstuff)
                                     .Where(productOfDish => productOfDish != null)
                                     .ToList();

                productsOfDish.Sort(sort);

                return(productsOfDish);
            }
            catch
            {
                throw;
            }
        }
Example #6
0
        /// <summary>
        /// Fire the event "FindProductsOfDishOrder".
        /// </summary>
        public void OnFindProductsOfDishOrder(double lowerLimit, double upperLimit,
                                              IFoodstuff dish)
        {
            var productsList = FindProductsOfDishOrder?.Invoke(lowerLimit, upperLimit, dish);

            Console.WriteLine(
                $"Ингредиенты в салате, удовлетворяющие диапозону калорийности [{lowerLimit} - {upperLimit}]:");

            if (productsList.Any())
            {
                foreach (var product in productsList)
                {
                    Console.WriteLine(product.Name);
                }

                Console.WriteLine($"\n");
            }

            else
            {
                Console.WriteLine("Продукты не найдены.\n");
            }
        }
Example #7
0
        private static void UserActions(Controller controller, IFoodstuff preparedDish)
        {
            try
            {
                Console.WriteLine("Узнайте состав салата, нажав \"i\"; калорийность - \"c\"; найдите продукт в салате по заданному диапозону калорийности - \"p\"; или любую клавишу, чтобы продолжить");

                string key = Console.ReadKey(true).Key.ToString().ToLower();

                switch (key)
                {
                case "i":
                    Console.WriteLine(new string('*', 50));

                    controller.OnSortFoodstuffOrder(preparedDish);

                    UserActions(controller, preparedDish);

                    break;

                case "c":
                    Console.WriteLine(new string('*', 50));

                    controller.OnCalculateCaloricValueOrder(preparedDish);

                    UserActions(controller, preparedDish);

                    break;

                case "p":
                    Console.WriteLine(new string('*', 50));

                    Console.WriteLine("Введите два числа ");

                    while (true)
                    {
                        try
                        {
                            Console.Write("Нижняя граница калорийности: ");

                            int a = Math.Abs(int.Parse(Console.ReadLine()));

                            Console.Write("Верхняя граница калорийности: ");

                            int b = Math.Abs(int.Parse(Console.ReadLine()));

                            controller.OnFindProductsOfDishOrder(a, b, preparedDish);

                            break;
                        }
                        catch (FormatException e)
                        {
                            Console.WriteLine("Вы ввели не допустимый символ. Повторите ввод: ");

                            continue;
                        }
                    }

                    UserActions(controller, preparedDish);

                    break;

                default:
                    break;
                }
            }
            catch
            {
                throw;
            }
        }
Example #8
0
 public IOption <float> Get(IFoodstuff foodstuff) =>
 requirements.Get(foodstuff);
 public FoodstuffSearchCellViewModel(IFoodstuff foodstuff, Action onSelected)
 {
     Foodstuff  = foodstuff;
     OnSelected = onSelected;
 }
 private void Add(IFoodstuff foodstuff)
 {
     Selected = Selected.Add(foodstuff);
     RaisePropertyChanged(nameof(SearchResult));
 }
 public IngredientWithFoodstuff(IFoodstuff foodstuff, IIngredient ingredient)
 {
     Foodstuff  = foodstuff;
     Ingredient = ingredient;
 }
Example #12
0
        public IEnumerable <IFoodstuff> FindProductsOfDishBy(double lowerCaloricLimit, double upperCaloricLimit, IFoodstuff dish)
        {
            try
            {
                var type = dish.GetType();

                var propertyInfo = type.GetProperties();

                return(propertyInfo
                       .Select(prop => prop.GetValue(dish) as IFoodstuff)
                       .Where(productOfDish => productOfDish != null)
                       .Where(productOfDish => productOfDish.CaloricPer100Grams >= lowerCaloricLimit &&
                              productOfDish.CaloricPer100Grams <= upperCaloricLimit));
            }
            catch
            {
                throw;
            }
        }
Example #13
0
        /// <summary>
        /// Fire the event "CalculateCaloricValueOrder".
        /// </summary>
        public void OnCalculateCaloricValueOrder(IFoodstuff dish)
        {
            var totalCalories = CalculateCaloricValueOrder?.Invoke(dish);

            Console.WriteLine($"Энергетическая ценность в {dish.Weight} граммах салата - {totalCalories:f1} ккал\n");
        }