コード例 #1
0
        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());
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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"));
        }