예제 #1
0
        public async Task <IActionResult> Details(int?id)
        {
            Recipe recipe = _context.Recipe.Include(r => r.User)
                            .Where(r => r.RecipeID == id).FirstOrDefault();

            if (id == null || recipe == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            recipe.Ingredients = _context.Ingredient.Include(i => i.Product).ThenInclude(p => p.ServingType)
                                 .Include(i => i.Product).ThenInclude(p => p.ProductStatus)
                                 .Where(i => i.RecipeID == recipe.RecipeID).ToList();
            recipe.RecipeSteps = _context.RecipeSteps.Where(rs => rs.RecipeID == recipe.RecipeID).ToList();

            ViewData["IsLiked"] = false;

            if (_SignInManager.IsSignedIn(User))
            {
                ApplicationUser user = await _UserManager.GetUserAsync(User);

                RecipeUserLike recipeUserLike = _context.RecipeUserLike.Where(rul => rul.UserID == user.Id && rul.RecipeID == recipe.RecipeID).FirstOrDefault();
                ViewData["IsLiked"] = recipeUserLike != null ? true : false;
            }

            return(View(recipe));
        }
예제 #2
0
        public async Task <IActionResult> HandleLike(int recipeID)
        {
            Recipe recipe = _context.Recipe.Where(r => r.RecipeID == recipeID).FirstOrDefault();

            if (recipe != null && _SignInManager.IsSignedIn(User))
            {
                ApplicationUser user = await _UserManager.GetUserAsync(User);

                RecipeUserLike recipeUserLike = _context.RecipeUserLike.Where(rul => rul.RecipeID == recipe.RecipeID && rul.UserID == user.Id).FirstOrDefault();
                if (recipeUserLike == null)
                {
                    recipeUserLike = new RecipeUserLike()
                    {
                        RecipeID = recipe.RecipeID,
                        UserID   = user.Id
                    };
                    _context.Add(recipeUserLike);
                    recipe.Likes++;
                    ViewData["IsLiked"] = true;
                }
                else
                {
                    _context.Remove(recipeUserLike);
                    recipe.Likes--;
                    ViewData["IsLiked"] = false;
                }
                _context.Recipe.Update(recipe);
                _context.SaveChanges();
            }

            return(PartialView("_RecipeLikePartial", recipe));
        }