public async Task <IActionResult> PutIngredients(long id, Ingredients ingredients)
        {
            if (id != ingredients.IngredientsId)
            {
                return(BadRequest());
            }

            _context.Entry(ingredients).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!IngredientsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> PutMealPlan(long id, MealPlan mealPlan)
        {
            if (id != mealPlan.MealId)
            {
                return(BadRequest());
            }

            _context.Entry(mealPlan).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MealPlanExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Create([Bind("Title,Description,PrepTime,CookTime,Calories,NumServings,Course,Cuisine,Author,Ingredients_Quantity,Ingredients_Unit,Ingredient,Id,TotalTime")] Recipe recipe)
        {
            if (ModelState.IsValid)
            {
                _context.Add(recipe);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(recipe));
        }
Ejemplo n.º 4
0
        public async Task Create(Recipe recipe, IFormFile RecipeImage)
        {
            recipe.LastViewed = DateTime.Now;

            Image image = new Image()
            {
                DataUrl = GetImage(recipe.Name)
            };

            image.Recipes.Add(recipe);

            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.Images.Add(image);
            context.Add(recipe);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 5
0
        public async Task Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipeCategory = await context.RecipeCategories.SingleOrDefaultAsync(m => m.Id == id);

            context.RecipeCategories.Remove(recipeCategory);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 6
0
        public async Task <int> Create(MealGroup group)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            context.MealGroups.Add(group);
            await context.SaveChangesAsync();

            return(group.Id);
        }
Ejemplo n.º 7
0
        public async Task Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var store = await context.Stores.SingleOrDefaultAsync(m => m.Id == id);

            context.Stores.Remove(store);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 8
0
        public async Task DeleteIngredient(int id)
        {
            var ingredient = await GetIngredient(id);

            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            context.Ingredients.Remove(ingredient);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 9
0
        public async Task CreateIngredient(Ingredient ingredient)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            ingredient.Order = await GetMaxOrder() + 1;

            context.Add(ingredient);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 10
0
        private async Task DecrementOrder(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var ingredient = await context.Ingredients.FindAsync(id);

            ingredient.Order--;
            context.Entry(ingredient).State = EntityState.Modified;
            await context.SaveChangesAsync();
        }
Ejemplo n.º 11
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();
        }
Ejemplo n.º 12
0
        public async Task UpdateViewedDate(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipe = await context.Recipes.FindAsync(id);

            recipe.LastViewed = DateTime.Now;
            context.Recipes.Update(recipe);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 13
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();
        }
Ejemplo n.º 14
0
 public async Task CreateItem(ShoppingListItem item)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     if (item.Order == 0)
     {
         item.Order = (await GetMaxItemOrder()) + 1;
     }
     context.ShoppingListItems.Add(item);
     await context.SaveChangesAsync();
 }
Ejemplo n.º 15
0
        public async Task RemovePlan(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var plan = await context.MealPlans
                       .SingleOrDefaultAsync(x => x.Id == id);

            using (var conn = new SqlConnection(_config.GetConnectionString("MealPlannerContext")))
                conn.Execute("DELETE FROM SideRelationships WHERE MealPlanId = @mealPlanId", new { mealPlanId = plan.Id });
            context.MealPlans.Remove(plan);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 16
0
        public async Task ClearAllShoppingItems()
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var checkedItems = await context.ShoppingListItems
                               .ToArrayAsync();

            for (int i = 0; i < checkedItems.Length; i++)
            {
                context.ShoppingListItems.Remove(checkedItems[i]);
            }
            await context.SaveChangesAsync();
        }
Ejemplo n.º 17
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();
        }
Ejemplo n.º 18
0
        public async Task <int?> Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipeDetail = await context.RecipeDetails.SingleOrDefaultAsync(m => m.Id == id);

            var recipeId = recipeDetail.RecipeId;

            context.RecipeDetails.Remove(recipeDetail);
            await context.SaveChangesAsync();

            return(recipeId);
        }
Ejemplo n.º 19
0
        public async Task <ShoppingListItem> CreateBlankEntry()
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var item = new ShoppingListItem
            {
                Order = await GetMaxItemOrder() + 1
            };

            context.ShoppingListItems.Add(item);
            await context.SaveChangesAsync();

            return(item);
        }
Ejemplo n.º 20
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();
        }
Ejemplo n.º 21
0
        public async Task AddPlan(MealPlan plan)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var sides = plan.SideRecipes.ToArray();

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

            context.MealPlans.Add(plan);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 22
0
        public async Task Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var group = await context.MealGroups
                        .Include(x => x.MealPlans)
                        .SingleOrDefaultAsync(x => x.Id == id);

            var plans = group.MealPlans.ToArray();

            for (int i = 0; i < plans.Length; i++)
            {
                context.MealPlans.Remove(plans[i]);
            }

            context.MealGroups.Remove(group);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 23
0
        public async Task ClearAllPlans()
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var mealPlans = await context.MealPlans.Include(x => x.SideRecipes).ToArrayAsync();

            for (int i = 0; i < mealPlans.Length; i++)
            {
                var sideArray = mealPlans[i].SideRecipes.ToArray();
                for (int j = 0; i < sideArray.Length; j++)
                {
                    mealPlans[i].SideRecipes.Remove(sideArray[j]);
                }

                context.MealPlans.Remove(mealPlans[i]);
            }
            await context.SaveChangesAsync();
        }
Ejemplo n.º 24
0
        public async Task <bool> RemoveItem(int id)
        {
            try
            {
                using MealPlannerContext context = new MealPlannerContext(_dbOptions);
                var item = await context.ShoppingListItems.FindAsync(id);

                context.ShoppingListItems.Remove(item);
                await context.SaveChangesAsync();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 25
0
        public async Task Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipe = await context.Recipes
                         .Include(m => m.Image)
                         .Include(m => m.RecipeImage)
                         .SingleOrDefaultAsync(m => m.Id == id);

            context.Images.Remove(recipe.Image);

            if (recipe.RecipeImage != null)
            {
                context.Images.Remove(recipe.RecipeImage);
            }

            context.Recipes.Remove(recipe);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 26
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();
        }
Ejemplo n.º 27
0
        public async Task RemovePlan(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var p = await context.MealPlans
                    .Where(x => x.Id == id)
                    .Include(x => x.SideRecipes)
                    .SingleOrDefaultAsync();

            var sideArray = p.SideRecipes.ToArray();

            for (int i = 0; i < sideArray.Length; i++)
            {
                p.SideRecipes.Remove(sideArray[i]);
            }

            context.MealPlans.Remove(p);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 28
0
        public async Task <bool> UpdateIngredientOrder(int ingredientId, int?previousIngredientId, int?nextIngredientId)
        {
            try
            {
                using MealPlannerContext context = new MealPlannerContext(_dbOptions);
                var ingredientTask    = context.Ingredients.SingleOrDefaultAsync(x => x.Id == ingredientId);
                var previousOrderTask = GetIngredientOrder(previousIngredientId);
                var nextOrderTask     = GetIngredientOrder(nextIngredientId);
                await Task.WhenAll(ingredientTask, previousOrderTask, nextOrderTask);

                var ingredient    = ingredientTask.Result;
                var previousOrder = previousOrderTask.Result;
                var nextOrder     = nextOrderTask.Result;
                int stopOrder     = ingredient.Order;

                if (previousOrder.HasValue && ingredient.Order >= previousOrder)
                {
                    ingredient.Order = previousOrder.Value + 1;
                }
                else if (nextOrder.HasValue)
                {
                    ingredient.Order = nextOrder.Value - 1 > 0 ? nextOrder.Value : 1;
                }
                else
                {
                    ingredient.Order = previousOrder.Value;//set to the last row
                }
                if (stopOrder == ingredient.Order)
                {
                    return(true);
                }

                context.Entry(ingredient).State = EntityState.Modified;
                await context.SaveChangesAsync();//needs to happen first
                await UpdateAffectedSequences(ingredient.Order, ingredient.Id, stopOrder);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 29
0
        public async Task UpdatePlan(MealPlan plan)
        {
            using (var conn = new SqlConnection(_config.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.MealPlans.Update(plan);
            await context.SaveChangesAsync();
        }
Ejemplo n.º 30
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);
            }
        }