Example #1
0
        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
     });
 }
Example #3
0
        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));
        }