Example #1
0
        public async Task <IActionResult> Create(int id)
        {
            var user = await GetCurrentUserAsync();

            if (_context.FavoriteRecipes.FirstOrDefault(fr => fr.RecipeId == id && fr.UserId == user.Id) != null)
            {
                return(RedirectToAction("Index", "Recipes"));
            }

            FavoriteRecipes favoriteRecipes = new FavoriteRecipes
            {
                RecipeId = id,
                Recipe   = _context.Recipes.FirstOrDefault(r => r.RecipeId == id),
                UserId   = user.Id,
                User     = user
            };


            if (ModelState.IsValid)
            {
                _context.Add(favoriteRecipes);
                _context.SaveChanges();
                return(RedirectToAction("Index", "Recipes"));
            }
            return(View(favoriteRecipes));
        }
        public IActionResult AddToFavorites(Meal item)
        {
            FavoriteRecipes newFavorite = new FavoriteRecipes();
            AspNetUsers     thisUser    = _context.AspNetUsers.Where(u => u.UserName == User.Identity.Name).First();

            var           favList    = _context.FavoriteRecipes.Where(u => u.UserId == thisUser.Id).ToList();
            List <string> mealIdList = new List <string>();

            foreach (var meal in favList)
            {
                mealIdList.Add(meal.RecipeId);
            }

            if (mealIdList.Contains(item.idMeal))
            {
                return(RedirectToAction("DisplayFavorite"));
            }
            else
            {
                newFavorite.UserId      = thisUser.Id;
                newFavorite.RecipeId    = item.idMeal;
                newFavorite.RecipeImage = item.strMealThumb;
                newFavorite.RecipeName  = item.strMeal;
                if (ModelState.IsValid)
                {
                    _context.FavoriteRecipes.Add(newFavorite);
                    _context.SaveChanges();
                    return(RedirectToAction("DisplayFavorite"));
                }
                return(View(item));
            }
        }
Example #3
0
        public async Task <IActionResult> Edit(int id, [Bind("FavoriteRecipesId,UserId,RecipeId")] FavoriteRecipes favoriteRecipes)
        {
            if (id != favoriteRecipes.FavoriteRecipesId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(favoriteRecipes);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FavoriteRecipesExists(favoriteRecipes.FavoriteRecipesId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["RecipeId"] = new SelectList(_context.Recipes, "RecipeId", "RecipeId", favoriteRecipes.RecipeId);
            ViewData["UserId"]   = new SelectList(_context.ApplicationUsers, "Id", "Id", favoriteRecipes.UserId);
            return(View(favoriteRecipes));
        }
        public async Task <IActionResult> ViewRecipe(FavoriteRecipes myRecipe)
        {
            var meal = await FindFavRecipesById(myRecipe.RecipeId);

            var recipe = FindRecipesById(meal).Result;

            return(View(recipe));
        }
 public async Task <IActionResult> UpdateFavorite(FavoriteRecipes r)
 {
     if (ModelState.IsValid)
     {
         _db.FavoriteRecipes.Update(r);
         await _db.SaveChangesAsync();
     }
     return(RedirectToAction("ShowAllFavorites"));
 }
        public async Task <IActionResult> AddToFavorites(string title, string recipeUrl, string ingredients, string thumbnail)
        {
            FavoriteRecipes r = new FavoriteRecipes();

            r.Title       = title;
            r.RecipeUrl   = recipeUrl;
            r.Ingredients = ingredients;
            r.Thumbnail   = thumbnail;

            // retrieve current ID for favorite recipe if it exists
            int favoriteID = (from RecipeURL in _db.FavoriteRecipes
                              where RecipeURL.RecipeUrl.Equals(recipeUrl)
                              select RecipeURL.Id).FirstOrDefault();

            // retrieve current ID for favorite recipe if it exists
            int existsInUserFavorites = 0;

            existsInUserFavorites = (from Recipe in _db.UserFavoriteRecipes
                                     where Recipe.RecipeId.Equals(favoriteID)
                                     select Recipe.RecipeId).FirstOrDefault();

            // adds currently selected recipe to FavoriteRecipes and newly added RecipeID and UserID to UserFavoriteRecipes
            if (ModelState.IsValid && favoriteID == 0 && existsInUserFavorites == 0)

            {
                await _db.FavoriteRecipes.AddAsync(r);

                await _db.SaveChangesAsync();

                var user = FindUser();
                UserFavoriteRecipes f = new UserFavoriteRecipes(user, r.Id);

                await _db.UserFavoriteRecipes.AddAsync(f);

                await _db.SaveChangesAsync();

                return(RedirectToAction("ShowAllFavorites"));
            }

            // if the currently selected recipe exists in database it will only add that recipeID and current UserID to UserFavoriteRecipes table
            if (favoriteID != 0 && existsInUserFavorites == 0)
            {
                var user = FindUser();
                UserFavoriteRecipes f = new UserFavoriteRecipes(user, favoriteID);

                await _db.UserFavoriteRecipes.AddAsync(f);

                await _db.SaveChangesAsync();

                return(RedirectToAction("ShowAllFavorites"));
            }
            return(RedirectToAction("ShowAllFavorites"));
        }
        public async Task <IActionResult> EditFavorite(int id)
        {
            FavoriteRecipeViewModel vm = new FavoriteRecipeViewModel();
            FavoriteRecipes         fr = _db.FavoriteRecipes.Find(id);

            vm.Title       = fr.Title;
            vm.Ingredients = fr.Ingredients;
            vm.Thumbnail   = fr.Thumbnail;
            vm.RecipeUrl   = fr.RecipeUrl;
            // find user favorite rating and category
            var ur = _db.UserFavoriteRecipes.Find(FindUser(), fr.Id);

            vm.Category = ur.Category;
            vm.Rating   = ur.Rating;
            return(View(vm));
        }
        public IActionResult DeleteFavorite(int Id)
        {
            string          user = FindUser();
            FavoriteRecipes r    = _db.FavoriteRecipes.Find(Id);
            // create primary key from values
            int currentRecipeID = r.Id;
            var ur = _db.UserFavoriteRecipes.Find(user, currentRecipeID);
            FavoriteRecipeViewModel vm = new FavoriteRecipeViewModel();

            vm.Title       = r.Title;
            vm.Ingredients = r.Ingredients;
            vm.RecipeUrl   = r.RecipeUrl;
            vm.Category    = ur.Category;
            vm.Rating      = ur.Rating;
            return(View(vm));
        }
        public IActionResult RemoveFavoriteByMeal(Meal meal)
        {
            AspNetUsers            thisUser       = _context.AspNetUsers.Where(u => u.UserName == User.Identity.Name).First();
            List <FavoriteRecipes> userFavorites  = _context.FavoriteRecipes.Where(u => u.UserId == thisUser.Id).ToList();
            FavoriteRecipes        recipeToDelete = new FavoriteRecipes();

            foreach (var item in userFavorites)
            {
                if (item.RecipeId == meal.idMeal)
                {
                    recipeToDelete = item;
                    break;
                }
            }
            _context.FavoriteRecipes.Remove(recipeToDelete);
            _context.SaveChanges();
            return(RedirectToAction("DisplayFavorite"));
        }
        public async Task <IActionResult> EditFavorite(FavoriteRecipes fr, string Category, byte Rating)
        {
            // create primary key from values
            string currentUserID   = FindUser();
            int    currentRecipeID = fr.Id;
            var    ur = _db.UserFavoriteRecipes.Find(currentUserID, currentRecipeID);

            // adding values to selected record
            ur.Category = Category;
            ur.Rating   = Rating;
            // necessary due to values being stored in main recipe table visible to all users
            fr.Category = "";
            fr.Rating   = null;

            _db.UserFavoriteRecipes.Update(ur);
            _db.FavoriteRecipes.Update(fr);
            await _db.SaveChangesAsync();

            return(RedirectToAction("ShowAllFavorites"));
        }
        public async Task <IActionResult> DeleteFavorite(FavoriteRecipes r)
        {
            var recipe = _db.UserFavoriteRecipes.Where(x => x.RecipeId == r.Id).First();

            _db.UserFavoriteRecipes.Remove(recipe);

            string recipeID    = r.Id.ToString();
            int    recipeIDint = int.Parse(recipeID);
            //setup to check other users with this recipe as favorite before deleting
            var count = _db.UserFavoriteRecipes.Where(x => x.RecipeId == r.Id);

            if (count.Count() == 1)
            {
                var recipeObject = _db.FavoriteRecipes.Where(x => x.Id == r.Id).First();
                _db.FavoriteRecipes.Remove(recipeObject);
            }

            await _db.SaveChangesAsync();

            return(RedirectToAction("ShowAllFavorites"));
        }
 public IActionResult RemoveFavorite(FavoriteRecipes myRecipe)
 {
     _context.FavoriteRecipes.Remove(myRecipe);
     _context.SaveChanges();
     return(RedirectToAction("DisplayFavorite"));
 }
        public IActionResult UpdateFavorite(int Id)
        {
            FavoriteRecipes r = _db.FavoriteRecipes.Find(Id);

            return(View(r));
        }