public async Task <IActionResult> Edit(CocktailUpdateRequest cocktail) { if (!this.ModelState.IsValid) { return(View(cocktail)); } await this.cocktailService.Update(cocktail); return(RedirectToAction("Index", "Cocktails")); }
public static CocktailEntity ToEntity(this CocktailUpdateRequest contract, CocktailEntity entity) { if (contract == null) { return(null); } return(new CocktailEntity { Id = entity.Id, Name = contract.Name, Recipe = contract.Recipe, Rating = entity.Rating, IsHidden = contract.IsHidden, ImagePath = contract.ImagePath }); }
public async Task <Cocktail> Update(CocktailUpdateRequest cocktail) { var existingCocktail = await GetCocktail(cocktail.Id); var newCocktailEntity = cocktail.ToEntity(existingCocktail.ToEntity()); var existingIngredientsIds = existingCocktail.Ingredients.Select(x => x.Id); var ingredientsIdsToRemove = existingIngredientsIds.Except(cocktail.IngredientIds); var ingredientsIdsToAdd = cocktail.IngredientIds.Except(existingIngredientsIds); AddIngredients(cocktail.Id, ingredientsIdsToAdd); await IncrementIngredientCounter(ingredientsIdsToAdd); RemoveIngredients(cocktail.Id, ingredientsIdsToRemove); await DecrementIngredientCounter(ingredientsIdsToRemove); this.context.Cocktails.Update(newCocktailEntity); await this.context.SaveChangesAsync(); return(await GetCocktail(cocktail.Id)); }