public static UpdateCocktailViewModel MapToViewUpdateModel(this Cocktail cocktail, IReadOnlyCollection <Bar> allBars) { var vm = new UpdateCocktailViewModel(); vm.Id = cocktail.Id; vm.Name = cocktail.Name; vm.IsHidden = cocktail.IsHidden; vm.Picture = cocktail.Picture; vm.Quantities = cocktail.Ingredients.Select(i => i.Quantity).ToList(); vm.CurrentIngredients = cocktail.Ingredients.Select(c => c.Ingredient.MapToViewModel()).ToList(); vm.AllBars = allBars.Select(b => b.Name).ToList(); if (cocktail.Bars.Count != 0) { vm.OfferingBars = cocktail.Bars.Select(c => c.Bar.Name).ToList(); } return(vm); }
public static async Task <Cocktail> MapToEntity(this UpdateCocktailViewModel vm) { if (vm.NewPicture != null) { using (var stream = new MemoryStream()) { await vm.NewPicture.CopyToAsync(stream); vm.Picture = stream.ToArray(); } } var cocktail = new Cocktail { Id = vm.Id, Name = vm.Name, IsHidden = vm.IsHidden, Picture = vm.Picture }; return(cocktail); }
public async Task <IActionResult> UpdateCocktail(UpdateCocktailViewModel vm) { var cocktail = await vm.MapToEntity(); await _cocktailServices.UpdateCocktailAsync(cocktail); var currentIngredients = vm.CurrentIngredients.Select(c => c.MapToEntity()).ToList(); for (int i = 0; i < currentIngredients.Count; i++) { if (await _cocktailIngredientsServices.IsPairUpdatedAsync(currentIngredients[i], cocktail, vm.Quantities[i])) { if (vm.Quantities[i] == 0) { continue; } await _cocktailIngredientsServices.UpdateAsync(currentIngredients[i], cocktail, vm.Quantities[i]); } } var newIngredients = await _ingredientServices.GetMultipleIngredientsByNameAsync(vm.Ingredients); for (int i = 0; i < newIngredients.Count; i++) { if (!await _cocktailIngredientsServices.PairExistsAsync(newIngredients[i], cocktail)) { if (vm.Quantities[i] == 0) { continue; } await _cocktailIngredientsServices.AddAsync(cocktail, newIngredients[i], vm.Quantities[i]); } } return(View("ManageCocktails")); }