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)); }
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)); } }
public async Task <IActionResult> GetMealFoodsById(int id) { QueryResponse <FoodAmountPerMeal> queryFood = await mealService.GetMealFoodsById(id); return(Json(queryFood.Data.ToList())); }