public async Task <IActionResult> PutProduct([FromRoute] int id, [FromBody] Product product) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != product.Id) { return(BadRequest()); } _context.Entry(product).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProductExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <CatalogProductDto> Handle(CreateProductCommand request, CancellationToken cancellationToken) { var product = Product.Of(Guid.NewGuid(), request.Name, request !.Description, request.Price, request.ImageUrl, request.InventoryId, request.CategoryId); var cats = await _dbContext.Categories.ToListAsync(cancellationToken : cancellationToken); var category = await _dbContext.Categories .FirstOrDefaultAsync(x => x.Id == request.CategoryId, cancellationToken : cancellationToken); if (category == null) { throw new NullReferenceException($"Couldn't find out any Category # {request.CategoryId}"); } product.AssignCategory(category); var entityCreated = await _dbContext.Products.AddAsync(product, cancellationToken); await _dbContext.SaveChangesAsync(cancellationToken); var productCreated = entityCreated.Entity; return(new CatalogProductDto { Id = productCreated.Id, Name = productCreated.Name, Description = productCreated.Description, ImageUrl = productCreated.ImageUrl, Price = productCreated.Price }); }
public async Task <CatalogProductDto> Handle( UpdateProductCommand request, CancellationToken cancellationToken) { if (request is null) { throw new ArgumentNullException(nameof(request)); } var product = await _dbContext.Products.FirstOrDefaultAsync(x => x.Id == request.Id); if (product == null) { throw new Exception($"Couldn't find product # {request.Id}"); } product.UpdateProduct( request.Name, request.Description, request.Price, request.ImageUrl, request.StoreId, request.Rop, request.Eoq); var cats = await _dbContext.Categories.ToListAsync(cancellationToken : cancellationToken); var category = await _dbContext.Categories .FirstOrDefaultAsync(x => x.Id == request.CategoryId, cancellationToken : cancellationToken); if (category == null) { throw new NullReferenceException($"Couldn't find out any Category # {request.CategoryId}"); } product.AssignCategory(category); var entityUpdated = _dbContext.Products.Update(product); await _dbContext.SaveChangesAsync(cancellationToken); var productUpdated = entityUpdated.Entity; return(new CatalogProductDto { Id = productUpdated.Id, Name = productUpdated.Name, Description = productUpdated.Description, ImageUrl = productUpdated.ImageUrl, Price = productUpdated.Price }); }
public async Task <bool> Handle(DeleteProductCommand request, CancellationToken cancellationToken) { var product = await _dbContext.Products.FirstOrDefaultAsync(x => x.Id == request.Id); if (product == null) { throw new Exception($"Couldn't find product #{request.Id}"); } product.MarkAsDeleted(); var effected = await _dbContext.SaveChangesAsync(cancellationToken); return(effected > 0); }