Esempio n. 1
0
        public ActionResult UpdateDish(Guid id, UpdateDishDto dishDto)
        {
            var existingDish = _context.GetDish(id);

            if (existingDish is null)
            {
                return(NotFound());
            }

            Dish updatedDish = existingDish with {
                Name     = dishDto.Name,
                Price    = dishDto.Price,
                Toppings = dishDto.Toppings,
            };

            _context.UpdateDish(updatedDish);

            return(NoContent());
        }
 public async Task <IActionResult> UpdateDish([FromRoute] int id, [FromForm] UpdateDishDto updateDish)
 {
     return(Ok(await _dishService.UpdateDishAsync(id, updateDish)));
 }
Esempio n. 3
0
        public async Task <DishDto> UpdateDishAsync(int id, UpdateDishDto updateDish)
        {
            var currentDish = await _unitOfWork.Dishes.GetByNameAsync(updateDish.Name);

            if (currentDish != null && !currentDish.Name.Equals(updateDish.Name))
            {
                ExceptionHandler.DublicateObject(nameof(Dish), nameof(Dish.Name));
            }

            var dishEntity = await _unitOfWork.Dishes.FindAsync(id);

            _mapper.Map(updateDish, dishEntity);

            dishEntity.Images = new List <Image>();

            if (updateDish.ImageUrls != null)
            {
                dishEntity.Images.AddRange(
                    updateDish.ImageUrls
                    .Select(img => new Image {
                    Priority = img.Priority, DishId = dishEntity.Id, Url = img.Url
                })
                    .ToList());
            }

            if (updateDish.ImageFiles != null)
            {
                foreach (var img in updateDish.ImageFiles)
                {
                    dishEntity.Images.Add(
                        new Image
                    {
                        Priority = img.Priority,
                        DishId   = dishEntity.Id,
                        Url      = await _imageService.UploadImageAsync(img.File)
                    });
                }
            }

            var dishIngredients = updateDish.Ingredients
                                  .Zip(updateDish.IngredientAmounts, (i, a) => new { IngredientId = i, Amount = a })
                                  .Select(
                x =>
                new DishIngredient
            {
                DishId       = dishEntity.Id,
                IngredientId = x.IngredientId,
                Amount       = x.Amount
            })
                                  .ToList();

            dishEntity.DishIngredients = dishIngredients;

            var dishCategories = updateDish.Categories.Select(
                x => new DishCategory
            {
                CategoryId = x, DishId = dishEntity.Id
            })
                                 .ToList();

            dishEntity.DishCategories = dishCategories;

            await _unitOfWork.CommitAsync();

            return(_mapper.Map <Dish, DishDto>(await _unitOfWork.Dishes.FindAsync(id)));
        }