public async Task <IActionResult> RecipesByFridge(int recipePage = 1)
        {
            try
            {
                User user = await _signInManager.UserManager.GetUserAsync(User);

                IEnumerable <Fridge> productsInFridge = await fridgeRepository.GetUserProducts(user);

                IEnumerable <Recipe> filteredRecipes = await recipeRepository.FindAllAsync(r => r.Ingredients.All(i => productsInFridge.Any(p => (p.Product.Id == i.Product.Id && (p.Quantity >= i.Quantity)))));

                return(PartialView("_RecipesListPartial", new RecipesListViewModel  {
                    Recipes = filteredRecipes
                              .OrderBy(r => r.AverageRating)
                              .Skip((recipePage - 1) * PageSize)
                              .Take(PageSize),
                    PagingInfo = new PagingInfo
                    {
                        CurrentPage = recipePage,
                        ItemsPerPage = PageSize,
                        TotalItems = filteredRecipes.Count()
                    }
                }));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> Fridge()
        {
            var user = await _signInManager.UserManager.GetUserAsync(User);

            var products = await productRepository.Products();

            products = products.OrderBy(p => p.Name);
            return(View(new FridgeViewModel {
                Products = products,
                Fridges = await fridgeRepository.GetUserProducts(user)
            }));
        }