Пример #1
0
        public async Task <IActionResult> GetFoodsDataByMealId(int id)
        {
            List <Food> foods = new List <Food>();
            QueryResponse <FoodAmountPerMeal> Mealfoods = await mealService.GetMealFoodsById(id);

            foreach (FoodAmountPerMeal item in Mealfoods.Data)
            {
                SingleResponse <Food> foodAmountfoods = await foodService.GetById(item.FoodID);

                foodAmountfoods.Data.Alcohol      = foodAmountfoods.Data.Alcohol * item.Quantity;
                foodAmountfoods.Data.Calories     = foodAmountfoods.Data.Calories * item.Quantity;
                foodAmountfoods.Data.Carbohydrate = foodAmountfoods.Data.Carbohydrate * item.Quantity;
                foodAmountfoods.Data.Copper       = foodAmountfoods.Data.Copper * item.Quantity;
                foodAmountfoods.Data.Fiber        = foodAmountfoods.Data.Fiber * item.Quantity;
                foodAmountfoods.Data.Lipid        = foodAmountfoods.Data.Lipid * item.Quantity;
                foodAmountfoods.Data.Magnesium    = foodAmountfoods.Data.Magnesium * item.Quantity;
                foodAmountfoods.Data.Phosphor     = foodAmountfoods.Data.Phosphor * item.Quantity;
                foodAmountfoods.Data.Potassium    = foodAmountfoods.Data.Potassium * item.Quantity;
                foodAmountfoods.Data.Protein      = foodAmountfoods.Data.Protein * item.Quantity;
                foodAmountfoods.Data.Selenium     = foodAmountfoods.Data.Selenium * item.Quantity;
                foodAmountfoods.Data.Sodium       = foodAmountfoods.Data.Sodium * item.Quantity;
                foodAmountfoods.Data.Vitamin_A    = foodAmountfoods.Data.Vitamin_A * item.Quantity;
                foodAmountfoods.Data.Vitamin_B12  = foodAmountfoods.Data.Vitamin_B12 * item.Quantity;
                foodAmountfoods.Data.Vitamin_C    = foodAmountfoods.Data.Vitamin_C * item.Quantity;
                foodAmountfoods.Data.Vitamin_D    = foodAmountfoods.Data.Vitamin_D * item.Quantity;
                foodAmountfoods.Data.Vitamin_E    = foodAmountfoods.Data.Vitamin_E * item.Quantity;
                foodAmountfoods.Data.Zinc         = foodAmountfoods.Data.Zinc * item.Quantity;
                foods.Add(foodAmountfoods.Data);
            }
            Food foodsTotalData = new Food();

            foodsTotalData.Alcohol      = foods.Sum(c => c.Alcohol);
            foodsTotalData.Calories     = foods.Sum(c => c.Calories);
            foodsTotalData.Carbohydrate = foods.Sum(c => c.Carbohydrate);
            foodsTotalData.Copper       = foods.Sum(c => c.Copper);
            foodsTotalData.Fiber        = foods.Sum(c => c.Fiber);
            foodsTotalData.Lipid        = foods.Sum(c => c.Lipid);
            foodsTotalData.Magnesium    = foods.Sum(c => c.Magnesium);
            foodsTotalData.Phosphor     = foods.Sum(c => c.Phosphor);
            foodsTotalData.Potassium    = foods.Sum(c => c.Potassium);
            foodsTotalData.Protein      = foods.Sum(c => c.Protein);
            foodsTotalData.Selenium     = foods.Sum(c => c.Selenium);
            foodsTotalData.Sodium       = foods.Sum(c => c.Sodium);
            foodsTotalData.Vitamin_A    = foods.Sum(c => c.Vitamin_A);
            foodsTotalData.Vitamin_B12  = foods.Sum(c => c.Vitamin_B12);
            foodsTotalData.Vitamin_B6   = foods.Sum(c => c.Vitamin_B6);
            foodsTotalData.Vitamin_C    = foods.Sum(c => c.Vitamin_C);
            foodsTotalData.Vitamin_D    = foods.Sum(c => c.Vitamin_D);
            foodsTotalData.Vitamin_E    = foods.Sum(c => c.Vitamin_E);
            foodsTotalData.Zinc         = foods.Sum(c => c.Zinc);

            return(Json(foodsTotalData));
        }
Пример #2
0
        public async Task <SingleResponse <Diet> > GenerateDiet(int id, DateTime date)
        {
            SingleResponse <User> user = await userService.GetById(id);

            try
            {
                double breakfastCalories      = user.Data.Daily_Calories * 0.3;
                double breakfastCarbohydrates = user.Data.Daily_Carbohydrates * 0.3;
                double breakfastProteins      = user.Data.Daily_Protein * 0.3;
                double breakfastLipids        = user.Data.Daily_Fats * 0.3;

                double lunchCalories      = user.Data.Daily_Calories * 0.4;
                double lunchCarbohydrates = user.Data.Daily_Carbohydrates * 0.4;
                double lunchProteins      = user.Data.Daily_Protein * 0.4;
                double lunchLipids        = user.Data.Daily_Fats * 0.4;

                double dinnerCalories      = user.Data.Daily_Calories * 0.3;
                double dinnerCarbohydrates = user.Data.Daily_Carbohydrates * 0.3;
                double dinnerProteins      = user.Data.Daily_Protein * 0.3;
                double dinnerLipids        = user.Data.Daily_Fats * 0.3;

                QueryResponse <Meal> breakfastMeals = await mealService.GetByCategory(Meal_Category.Café_da_manhã);

                QueryResponse <Meal> lunchMeals = await mealService.GetByCategory(Meal_Category.Almoço);

                QueryResponse <Meal> dinnerMeals = await mealService.GetByCategory(Meal_Category.Jantar);

                QueryResponse <Food> restrictionFoods = await userService.GetFoodsFromRestrictionByUserID(user.Data.ID);


                Diet        diet  = new Diet();
                List <Meal> meals = new List <Meal>();


                if (restrictionFoods.Data != null)
                {
                    List <Meal> restrictedMeals = new List <Meal>();

                    foreach (Meal meal in breakfastMeals.Data)
                    {
                        QueryResponse <FoodAmountPerMeal> foods = await mealService.GetMealFoodsById(meal.ID);

                        foreach (Food food in restrictionFoods.Data)
                        {
                            foreach (FoodAmountPerMeal foodAmount in foods.Data)
                            {
                                if (food.ID == foodAmount.FoodID)
                                {
                                    restrictedMeals.Add(meal);
                                }
                            }
                        }
                    }

                    foreach (Meal meal in lunchMeals.Data)
                    {
                        QueryResponse <FoodAmountPerMeal> foods = await mealService.GetMealFoodsById(meal.ID);

                        foreach (Food food in restrictionFoods.Data)
                        {
                            foreach (FoodAmountPerMeal foodAmount in foods.Data)
                            {
                                if (food.ID == foodAmount.FoodID)
                                {
                                    restrictedMeals.Add(meal);
                                }
                            }
                        }
                    }

                    foreach (Meal meal in dinnerMeals.Data)
                    {
                        QueryResponse <FoodAmountPerMeal> foods = await mealService.GetMealFoodsById(meal.ID);

                        foreach (Food food in restrictionFoods.Data)
                        {
                            foreach (FoodAmountPerMeal foodAmount in foods.Data)
                            {
                                if (food.ID == foodAmount.FoodID)
                                {
                                    restrictedMeals.Add(meal);
                                }
                            }
                        }
                    }

                    if (restrictedMeals.Count != 0)
                    {
                        foreach (Meal meal in restrictedMeals)
                        {
                            breakfastMeals.Data.Remove(meal);
                            lunchMeals.Data.Remove(meal);
                            dinnerMeals.Data.Remove(meal);
                        }
                    }
                }

                foreach (Meal item in breakfastMeals.Data)
                {
                    if (item.Total_Calories <= (breakfastCalories + breakfastCalories * 0.30) && item.Total_Calories >= (breakfastCalories - breakfastCalories * 0.30))
                    {
                        if (item.Total_Carbohydrates <= (breakfastCarbohydrates + breakfastCarbohydrates * 0.70) && item.Total_Carbohydrates >= (breakfastCarbohydrates - breakfastCarbohydrates * 0.70))
                        {
                            if (item.Total_Proteins <= (breakfastProteins + breakfastProteins * 0.95) && item.Total_Proteins >= (breakfastProteins - breakfastProteins * 0.95))
                            {
                                if (item.Total_Lipids <= (breakfastLipids + breakfastLipids * 0.95) && item.Total_Lipids >= (breakfastLipids - breakfastLipids * 0.95))
                                {
                                    meals.Add(item);
                                }
                            }
                        }
                    }
                }

                foreach (Meal item in lunchMeals.Data)
                {
                    if (item.Total_Calories <= (lunchCalories + lunchCalories * 0.30) && item.Total_Calories >= lunchCalories - lunchCalories * 0.30)
                    {
                        if (item.Total_Carbohydrates <= (lunchCarbohydrates + lunchCarbohydrates * 0.70) && item.Total_Carbohydrates >= (lunchCarbohydrates - lunchCarbohydrates * 0.70))
                        {
                            if (item.Total_Proteins <= (lunchProteins + lunchProteins * 0.95) && item.Total_Proteins >= (lunchProteins - lunchProteins * 0.95))
                            {
                                if (item.Total_Lipids <= (lunchLipids + lunchLipids * 0.95) && item.Total_Lipids >= (lunchLipids - lunchLipids * 0.95))
                                {
                                    meals.Add(item);
                                }
                            }
                        }
                    }
                }

                foreach (Meal item in dinnerMeals.Data)
                {
                    if (item.Total_Calories == (dinnerCalories + dinnerCalories * 0.30) && item.Total_Calories == (dinnerCalories - dinnerCalories * 0.30))
                    {
                        if (item.Total_Carbohydrates <= (dinnerCarbohydrates + dinnerCarbohydrates * 0.70) && item.Total_Carbohydrates >= (dinnerCarbohydrates - dinnerCarbohydrates * 0.70))
                        {
                            if (item.Total_Proteins <= (dinnerProteins + dinnerProteins * 0.95) && item.Total_Proteins >= (dinnerProteins - dinnerProteins * 0.95))
                            {
                                if (item.Total_Lipids <= (dinnerLipids + dinnerLipids * 0.95) && item.Total_Lipids >= (dinnerLipids - dinnerLipids * 0.95))
                                {
                                    meals.Add(item);
                                }
                            }
                        }
                    }
                }

                if (meals.Count != 3)
                {
                    Random rand = new Random();
                    meals.Add(breakfastMeals.Data.ElementAt(rand.Next(breakfastMeals.Data.Count())));
                    meals.Add(lunchMeals.Data.ElementAt(rand.Next(lunchMeals.Data.Count())));
                    meals.Add(dinnerMeals.Data.ElementAt(rand.Next(dinnerMeals.Data.Count())));
                }

                SingleResponse <Diet> dietResponse = new SingleResponse <Diet>();
                diet.Date   = date;
                diet.Meals  = meals;
                diet.UserID = id;
                return(ResponseFactory.SingleResponseSuccessModel <Diet>(diet));
            }
            catch (Exception ex)
            {
                return(ResponseFactory.SingleResponseExceptionModel <Diet>(ex));
            }
        }
Пример #3
0
        public async Task <IActionResult> GetMealFoodsById(int id)
        {
            QueryResponse <FoodAmountPerMeal> queryFood = await mealService.GetMealFoodsById(id);

            return(Json(queryFood.Data.ToList()));
        }