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; } }
public double CalculateCaloricValue(IFoodstuff dish) { try { return(dish.Weight * dish.CaloricPer100Grams / 100); } catch { throw; } }
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; }
/// <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"); }
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; } }
/// <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"); } }
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; } }
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; }
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; } }
/// <summary> /// Fire the event "CalculateCaloricValueOrder". /// </summary> public void OnCalculateCaloricValueOrder(IFoodstuff dish) { var totalCalories = CalculateCaloricValueOrder?.Invoke(dish); Console.WriteLine($"Энергетическая ценность в {dish.Weight} граммах салата - {totalCalories:f1} ккал\n"); }