public async Task <Unit> Handle(ProductUpdateCommandDto dto, CancellationToken cancellationToken)
        {
            var productFromDb = await _dbContext
                                .Products
                                .Where(p => p.Id == dto.Id)
                                .FirstOrDefaultAsync(cancellationToken);

            if (productFromDb is null)
            {
                throw new BadRequestException("Not found");
            }

            if (productFromDb.ProductCategory is not null)
            {
                productFromDb.ProductCategory.Name = dto.CategoryName;
            }
            else
            {
                await _dbContext.Categories.AddAsync(new ProductCategory
                {
                    Name = dto.CategoryName
                }, cancellationToken);
            }

            productFromDb.Name     = dto.Name;
            productFromDb.HoldQty  = dto.HoldQty;
            productFromDb.StockQty = dto.StockQty;
            productFromDb.Price    = dto.Price;
            _dbContext.Products.Update(productFromDb);

            await _dbContext.SaveChangesAsync(cancellationToken);

            await this.ProductUpdatedEvent(dto);

            return(default);
예제 #2
0
        public async Task <IActionResult> UpdateProduct(Guid id, [FromBody] ProductUpdateCommandDto dto)
        {
            await _mediator.Send(dto);

            return(NoContent());
        }