public async Task <IActionResult> OnGetAsync() { GetSessionValues(); RecipeHeaders = (await recipeRepository.GetRecipeHeaders()).Where(x => x.RecipeType == Common.Enumeration.RecipeType.Done); RecipeImages = (await recipeImageRepository.GetRecipeImages()).Where(x => x.ProfileImage); if (IsUserLogged() && CurrentUser != null) { UserFavoriteRecipes = await userFavoriteRecipeRepository.GetUserFavoriteRecipes(CurrentUser.Id); } if (UserRecipeOrderBy == UserRecipeOrderBy.Ascending) { RecipeHeaders = RecipeHeaders.OrderBy(x => x.Name); } else if (UserRecipeOrderBy == UserRecipeOrderBy.Descending) { RecipeHeaders = RecipeHeaders.OrderByDescending(x => x.Name); } else if (UserRecipeOrderBy == UserRecipeOrderBy.Favorite) { var favoriteRecipes = new List <RecipeHeader>(); foreach (var recipeHeader in RecipeHeaders) { if (UserFavoriteRecipes.Any(x => x.RecipeHeaderId == recipeHeader.Id)) { favoriteRecipes.Add(recipeHeader); } } RecipeHeaders = favoriteRecipes.AsEnumerable().OrderBy(x => x.Name); } return(Page()); }
public IActionResult ShowAllFavorites(string sortOrder) { ViewData["CategorySortParm"] = sortOrder == "Category" ? "Category_desc" : "Category"; ViewData["RatingSortParm"] = sortOrder == "Rating" ? "Rating_desc" : "Rating"; var user = FindUser(); var recipes = from all in _db.FavoriteRecipes join Recipe in _db.UserFavoriteRecipes on all.Id equals Recipe.RecipeId where Recipe.UserId.Equals(user) select all; List <FavoriteRecipes> RecipeList = recipes.ToList(); // create list of viewmodel objects to populate List <FavoriteRecipeViewModel> OutputList = new List <FavoriteRecipeViewModel>(); foreach (var item in RecipeList) { FavoriteRecipeViewModel vm = new FavoriteRecipeViewModel(); // find user favorite rating and category UserFavoriteRecipes ur = new UserFavoriteRecipes(); ur = _db.UserFavoriteRecipes.Find(FindUser(), item.Id); if (!string.IsNullOrWhiteSpace(ur.Category)) { vm.Category = ur.Category; } vm.Rating = ur.Rating; vm.Title = item.Title; vm.RecipeID = ur.RecipeId; vm.RecipeUrl = item.RecipeUrl; vm.Ingredients = item.Ingredients; vm.Thumbnail = item.Thumbnail; OutputList.Add(vm); } switch (sortOrder) { case "Category": OutputList = OutputList.OrderBy(x => x.Category).ToList(); break; case "Category_desc": OutputList = OutputList.OrderByDescending(x => x.Category).ToList(); break; case "Rating": OutputList = OutputList.OrderBy(x => x.Rating).ToList(); break; case "Rating_desc": OutputList = OutputList.OrderByDescending(x => x.Rating).ToList(); break; default: break; } return(View(OutputList)); }
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")); }