public async Task <IActionResult> Edit(int id, IngredientViewModel editIngredientViewModel) { if (id != editIngredientViewModel.Ingredient.IngredientId) { return(RedirectToAction("Error", "Home")); } Ingredient checkIngredientName = await _context.Ingredients.SingleOrDefaultAsync(x => x.Name == editIngredientViewModel.Ingredient.Name && x.IngredientId == editIngredientViewModel.Ingredient.IngredientId); var result = new FluentValidation.Results.ValidationResult();//Bypass the name validator and didn't know how to do it any other way if (checkIngredientName != null) { var validator = new EditIngredientValidator(); result = validator.Validate(editIngredientViewModel.Ingredient); } else { var validator = new IngredientValidator(_context.Ingredients); result = validator.Validate(editIngredientViewModel.Ingredient); } if (result.IsValid) { Ingredient ingredient = await _context.Ingredients.SingleOrDefaultAsync(x => x.IngredientId == id); if (ingredient != null) { ingredient.Name = editIngredientViewModel.Ingredient.Name; ingredient.EnergyKcal = editIngredientViewModel.Ingredient.EnergyKcal; ingredient.EnergyKj = editIngredientViewModel.Ingredient.EnergyKj; ingredient.Water = editIngredientViewModel.Ingredient.Water; ingredient.EggWhite = editIngredientViewModel.Ingredient.EggWhite; ingredient.Carbohydrates = editIngredientViewModel.Ingredient.Carbohydrates; ingredient.Sugar = editIngredientViewModel.Ingredient.Sugar; ingredient.Fat = editIngredientViewModel.Ingredient.Fat; ingredient.SaturatedFat = editIngredientViewModel.Ingredient.SaturatedFat; ingredient.SingleSaturatedFat = editIngredientViewModel.Ingredient.SingleSaturatedFat; ingredient.MultiSaturatedFat = editIngredientViewModel.Ingredient.MultiSaturatedFat; ingredient.Cholesterol = editIngredientViewModel.Ingredient.Cholesterol; ingredient.Fiber = editIngredientViewModel.Ingredient.Fiber; _context.Update(ingredient); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } else { ModelState.AddModelError(string.Empty, "Could not edit the ingredient. Try again later."); } } else { foreach (var item in result.Errors) { ModelState.AddModelError(string.Empty, item.ErrorMessage); } } return(View(editIngredientViewModel)); }
public async Task <IActionResult> Create(IngredientViewModel createIngredientViewModel) { var validator = new IngredientValidator(_context.Ingredients); var result = validator.Validate(createIngredientViewModel.Ingredient); if (result.IsValid) { _context.Add(createIngredientViewModel.Ingredient); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } else { foreach (var item in result.Errors) { ModelState.AddModelError(string.Empty, item.ErrorMessage); } } return(View(createIngredientViewModel)); }