// GET: DietPlan/Edit/5 public ActionResult Edit(int id) { var user = GetUser(); var dietPlan = db.DietPlans.SingleOrDefault(c => c.Id == id); var viewModel = new UserDietViewModel { AppUser = user, DietPlan = dietPlan }; return(View(viewModel)); }
//Need to work - get recipe chart on number of meals entered public async Task <DietPlan> GetDietPlan(UserDietViewModel viewModel) { var dietPlan = viewModel.DietPlan; try { string API = "788ab6dbaea061d5952f619dbf8feb51"; var user = viewModel.AppUser; //var nutrients = viewModel.Nutrients; var preferenceString = CreateLabelString(viewModel.DietPreferences); var healthString = CreateHealthString(viewModel.HealthLabels); var nutrientString = CreateNutrientString(viewModel.Nutrient); int totalMeals = dietPlan.NumberOfMeals; List <Nutrient> totalNutrients = db.Nutrients.ToList(); using (var client = new HttpClient()) { client.BaseAddress = new Uri("https://api.edamam.com"); Recipe recipe = new Recipe(); var response = new HttpResponseMessage(); if (viewModel.Nutrient == null) { response = await client.GetAsync($"search?q=&app_id=6f52fd65&app_key={API}&diet={preferenceString}&health={healthString}"); } else { response = await client.GetAsync($"search?q=&app_id=6f52fd65&app_key={API}&diet={preferenceString}&health={healthString}&nutrients{nutrientString}"); } response.EnsureSuccessStatusCode(); var stringResult = await response.Content.ReadAsStringAsync(); var json = JObject.Parse(stringResult); recipe.DietPlanId = dietPlan.Id; for (int i = 0; i < totalMeals; i++) { recipe.Name = json["hits"][i]["recipe"]["label"].ToString(); recipe.Calories = Double.Parse(json["hits"][i]["recipe"]["calories"].ToString()); recipe.Calories = Math.Round(recipe.Calories, 2); recipe.Image = json["hits"][i]["recipe"]["image"].ToString(); recipe.Uri = json["hits"][i]["recipe"]["uri"].ToString(); db.Recipes.Add(recipe); db.SaveChanges(); // totalCals += recipe.Calories; } return(dietPlan); } } catch (IndexOutOfRangeException) { return(dietPlan); } }
public async Task <ActionResult> Create(UserDietViewModel viewModel) { try { var user = GetUser(); var dietPlan = new DietPlan(); dietPlan.Name = viewModel.DietPlan.Name; dietPlan.NumberOfMeals = viewModel.DietPlan.NumberOfMeals; dietPlan.TotalCalories = viewModel.DietPlan.TotalCalories; dietPlan.AppUserId = user.Id; db.DietPlans.Add(dietPlan); var dietPreferencesList = db.DietPreferences.Where(c => c.IsSelected == true).Select(c => c.Name).ToList(); var healthLabelsList = db.HealthLabels.Where(d => d.IsSelected == true).Select(c => c.Name).ToList(); var nutrient = db.Nutrients.Single(n => n.Min != 0 || n.Max != 0); nutrient.DietPlanId = dietPlan.Id; var model = new UserDietViewModel { AppUser = user, DietPlan = dietPlan, DietPreferences = dietPreferencesList, HealthLabels = healthLabelsList, Nutrient = nutrient }; db.SaveChanges(); var plan = await GetDietPlan(model); var meals = db.Recipes.Where(c => c.DietPlanId == plan.Id).ToList(); var dietModel = new DietPlanViewModel { DietPlan = plan, Meals = meals, Nutrient = nutrient }; return(View("ViewPlan", dietModel)); } catch { return(View()); } }
public ActionResult Edit(UserDietViewModel viewModel) { try { var dietPlan = db.DietPlans.SingleOrDefault(c => c.Id == viewModel.DietPlan.Id); dietPlan.Name = viewModel.DietPlan.Name; dietPlan.NumberOfMeals = viewModel.DietPlan.NumberOfMeals; dietPlan.TotalCalories = viewModel.DietPlan.TotalCalories; var user = GetUser(); viewModel.AppUser = user; //PUT LOGIC TO UPDATE DIET PLAN //API CALL IF PREF CHANGED, MEALS CHANGED db.SaveChanges(); var dietPlans = RetrievePlan(user); return(RedirectToAction("Index", "AppUser", dietPlans)); } catch { return(View()); } }