예제 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Title,Description,PrepTime,CookTime,Calories,NumServings,Course,Cuisine,Author,Ingredients_Quantity,Ingredients_Unit,Ingredient,Id,TotalTime")] Recipe recipe)
        {
            if (id != recipe.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(recipe);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RecipeExists(recipe.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(recipe));
        }
예제 #2
0
        public async Task UpdateImage(EditImageModel model)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var image = await GetRecipeDisplayImage(model.RecipeId);

            image.DataUrl = GetImage(model.ImageSearch);
            context.Update(image);
            await context.SaveChangesAsync();
        }
예제 #3
0
        public async Task UpdateRecipe(int recipeId)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipe = await context.Recipes.SingleOrDefaultAsync(r => r.Id == recipeId);

            recipe.LastViewed = DateTime.Now;
            context.Update(recipe);
            await context.SaveChangesAsync();
        }
예제 #4
0
        public async Task ResetIngredientOrderAlphabetically()
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var ingredients = await context.Ingredients.OrderBy(x => x.Name).ToArrayAsync();

            for (int i = 0; i < ingredients.Length; i++)
            {
                ingredients[i].Order = i + 1;
                context.Update(ingredients[i]);
            }
            await context.SaveChangesAsync();
        }
예제 #5
0
        private async Task IncreaseItemOrders(int startOrder, int excludeId)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var itemsToUpdate = await context.ShoppingListItems
                                .Where(x => x.Order >= startOrder &&
                                       x.Id != excludeId)
                                .ToListAsync();

            foreach (var item in itemsToUpdate)
            {
                item.Order++;
                context.Update(item);
            }
            await context.SaveChangesAsync();
        }
예제 #6
0
        public async Task Update(Recipe recipe, IFormFile RecipeImage)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            if (RecipeImage != null)
            {
                using var stream = new MemoryStream();
                RecipeImage.CopyTo(stream);
                Image recipeImage = new Image()
                {
                    Data = stream.ToArray()
                };
                recipeImage.RecipeLists.Add(recipe);
                context.Images.Add(recipeImage);
            }

            context.Update(recipe);
            await context.SaveChangesAsync();
        }
예제 #7
0
        public async Task UpdateMealPlan(MealPlan plan)
        {
            using (var conn = new SqlConnection(_confg.GetConnectionString("MealPlannerContext")))
                conn.Execute("DELETE FROM SideRelationships WHERE MealPlanId = @mealPlanId", new { mealPlanId = plan.Id });

            var sides = plan.SideRecipes.ToArray();

            for (int i = 0; i < sides.Length; i++)
            {
                if (sides[i].RecipeId == 0)
                {
                    plan.SideRecipes.Remove(sides[i]);
                }
            }

            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            context.Update(plan);
            await context.SaveChangesAsync();
        }
예제 #8
0
        public async Task <bool> UpdateShoppingItem(int id, string value)
        {
            try
            {
                using MealPlannerContext context = new MealPlannerContext(_dbOptions);
                var item = await context.ShoppingListItems
                           .Where(x => x.Id == id)
                           .SingleOrDefaultAsync();

                item.Name = value;
                context.Update(item);
                await context.SaveChangesAsync();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #9
0
        public async Task <bool> UpdateOrder(int id, int previousId)
        {
            try
            {
                using MealPlannerContext context = new MealPlannerContext(_dbOptions);
                var shoppingItemTask         = GetShoppingListItem(id);
                var previousShoppingItemTask = GetShoppingListItem(previousId);
                await Task.WhenAll(shoppingItemTask, previousShoppingItemTask);

                var item         = shoppingItemTask.Result;
                var previousItem = previousShoppingItemTask.Result;

                item.Order = (previousItem != null ? previousItem.Order : 0) + 1;
                context.Update(item);
                await context.SaveChangesAsync();
                await IncreaseItemOrders(item.Order, item.Id);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #10
0
 public async Task UpdateIngredient(Ingredient ingredient)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     context.Update(ingredient);
     await context.SaveChangesAsync();
 }