private async Task CreateMealsToBePlanned(MealPlan mealPlan) { foreach (DateTime day in TimeTools.EachDay(mealPlan.StartDate.Value, mealPlan.EndDate.Value)) { ScheduledMeal meal1 = new ScheduledMeal(); ScheduledMeal meal2 = new ScheduledMeal(); ScheduledMeal meal3 = new ScheduledMeal(); meal1.DateOfMeal = day; meal1.Slot = 1; meal1.MealPlanId = mealPlan.MealPlanId; await _context.AddAsync(meal1); meal2.DateOfMeal = day; meal2.Slot = 2; meal2.MealPlanId = mealPlan.MealPlanId; await _context.AddAsync(meal2); meal3.DateOfMeal = day; meal3.Slot = 3; meal3.MealPlanId = mealPlan.MealPlanId; await _context.AddAsync(meal3); } await _context.SaveChangesAsync(); }
public async Task <ActionResult <MealModel> > Create(ScheduledMealModel model) { try { // TODO: Validate meal exists var scheduledMeal = new ScheduledMeal { MealDate = DateTime.Parse(model.MealDate), MealTime = (MealTime)model.MealTimeId, MealId = model.MealId }; await _scheduledMealRepository.CreateAsync(scheduledMeal); _logger.LogInformation("Created scheduled meal"); // YUCK! - Get the record back from the DB so it's populated with the nav prop var newScheduledMeal = await _scheduledMealRepository.Table.Include(x => x.Meal).SingleOrDefaultAsync(x => x.Id == scheduledMeal.Id); model = _mapper.Map <ScheduledMealModel>(newScheduledMeal); return(CreatedAtAction("GetById", new { id = model.Id }, model)); } catch (Exception ex) { _logger.LogError(ex, "Error creating scheduled meal"); return(StatusCode(500)); } }
public ActionResult SubmitEdit(ScheduledMeal meal) { var assignedPlanner = _context.Planners.Where(n => n.FirstName == meal.PlannerName).FirstOrDefault(); meal.AssignedPlannerId = assignedPlanner.PlannerId; _context.Update(meal); _context.SaveChanges(); var mealPlan = _context.MealPlans.Find(meal.MealPlanId); return(RedirectToAction("ViewMealsToAssign", mealPlan)); }
private MealEvent CreateLeftoversOrOutMealEvent(ScheduledMeal meal) { var mealPlanner = _context.Planners.Find(meal.AssignedPlannerId); MealEvent mealEvent = new MealEvent(); mealEvent.MealDate = meal.DateOfMeal; mealEvent.MealType = meal.MealType; mealEvent.RecipeName = "None"; mealEvent.PlannerName = mealPlanner.FirstName; mealEvent.Slot = meal.Slot; mealEvent.ScheduledMealId = meal.ScheduledMealId; return(mealEvent); }
private async void AddToSpoonacularMealPlan(ScheduledMeal meal, SpoonacularUserInfo userInfo) { RecipeAddToMealPlan recipe = new RecipeAddToMealPlan(); var savedRecipe = _context.SavedRecipes.Find(meal.SavedRecipeId); recipe.date = TimeTools.GetTimeStamp(meal.DateOfMeal.Value); recipe.slot = meal.Slot; recipe.type = "RECIPE"; recipe.value = new Value(); recipe.value.id = savedRecipe.SpoonacularRecipeId; recipe.value.imageType = "jpg"; recipe.value.title = savedRecipe.RecipeName; recipe.value.servings = GetPodCount(); // sets servings to the number of pod members (assuming enough food is needed for all planners) // look at giving the user the option to set serving amount (if they have kids, they'll need more) await _spoonacular.AddRecipeToMealPlan(recipe, userInfo); }
private MealEvent CreatePlannedMealEvent(ScheduledMeal meal) { var recipe = _context.SavedRecipes.Find(meal.SavedRecipeId); var mealPlanner = _context.Planners.Find(recipe.PlannerId); MealEvent mealEvent = new MealEvent(); mealEvent.MealDate = meal.DateOfMeal; mealEvent.MealType = meal.MealType; mealEvent.RecipeName = recipe.RecipeName; mealEvent.PlannerName = mealPlanner.FirstName; mealEvent.Slot = meal.Slot; mealEvent.ScheduledMealId = meal.ScheduledMealId; mealEvent.RecipeUrl = recipe.RecipeURL; return(mealEvent); }
public ActionResult SavePlan(ScheduledMeal meal) { meal.Planned = true; _context.Update(meal); _context.SaveChanges(); if (meal.MealType == "Planned") { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var planner = _context.Planners.Where(c => c.IdentityUserId == GetLoggedInUser()).SingleOrDefault(); SpoonacularUserInfo userInfo = new SpoonacularUserInfo { hash = planner.UserHash, username = planner.SpoonacularUserName }; AddToSpoonacularMealPlan(meal, userInfo); // add meal to Spoonacular API meal plan if it's a recipe } var mealPlan = _context.MealPlans.Find(meal.MealPlanId); return(RedirectToAction("ViewPendingMeals", mealPlan)); }