//Tested public async Task <string> Update(CocktailDto cocktailDto) { cocktailDto.ValidateIfNull("Model is invalid!"); var cocktailToEdit = await GetCocktail(cocktailDto.Id); var cocktail = cocktailDto.MapToEditModel(); var uniqueFileNamePath = _fileUploadService.SetUniqueImagePathForCocktail(cocktailDto.CocktailImage); cocktail.Image = uniqueFileNamePath; cocktail.Rating = cocktailToEdit.Rating; var newCocktailComponents = new List <CocktailComponent>(); foreach (var component in cocktail.CocktailComponents) { var ingridientId = await _ingredientServices .GetIngredientIdByNameAsync(component.Name); if (ingridientId == null) { var newIngr = new Ingredient() { Name = component.Name }; _context.Add(newIngr); await _context.SaveChangesAsync(); ingridientId = newIngr.Id; } newCocktailComponents.Add( new CocktailComponent { CocktailId = cocktailDto.Id, IngredientId = ingridientId }); } cocktail.CocktailComponents = newCocktailComponents; cocktail.Recepie = await _recipeServices.ExtractRecipe(cocktail); _context.Entry(cocktailToEdit).CurrentValues.SetValues(cocktail); _context.RemoveRange(cocktailToEdit.CocktailComponents); _context.AddRange(cocktail.CocktailComponents); await _context.SaveChangesAsync(); cocktail.Recepie = await _recipeServices.ExtractRecipe(cocktailToEdit); await _context.SaveChangesAsync(); return(cocktailToEdit.Name); }