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)); }