Пример #1
0
        public async Task <IActionResult> AddFood(MealFoodViewModel mealFoodView)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var foodExists = await _mealService.ExistsFood(mealFoodView.Food.Id);

                    if (!foodExists)
                    {
                        var canCreateFood = await _authorizationService.AuthorizeAsync(User, mealFoodView.Food, UserOperations.Create);

                        if (canCreateFood.Succeeded)
                        {
                            await _mealService.CreateFoodAsync(mealFoodView.Food);
                        }
                        else
                        {
                            return(new ChallengeResult());
                        }
                    }

                    MealFood mealFood = new MealFood {
                        FoodId = mealFoodView.Food.Id, MealId = mealFoodView.MealId
                    };
                    var isAuthorized = await _authorizationService.AuthorizeAsync(User, mealFood, UserOperations.Create);

                    if (isAuthorized.Succeeded)
                    {
                        await _mealService.CreateMealFoodAsync(mealFood);
                    }
                    else
                    {
                        return(new ChallengeResult());
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
                return(RedirectToAction("EditFood", "Meals", new { sesshinId = mealFoodView.SesshinId, mealId = mealFoodView.MealId, foodId = mealFoodView.Food.Id }));
            }
            return(View(mealFoodView));
        }