コード例 #1
0
        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();
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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));
        }