public async Task <IActionResult> PutOrder(int id, [FromBody] GetOrderForUpdateDto getOrderForUpdateDto) { try { await _orderService.UpdateOrder(id, getOrderForUpdateDto); return(Ok()); } catch (ArgumentException e) { return(StatusCode(400, e.Message)); } }
public async Task <ActionResult <Order> > PostOrder([FromBody] GetOrderForUpdateDto getOrderForUpdateDto) { try { await _orderService.AddOrder(getOrderForUpdateDto.CustomerId, getOrderForUpdateDto.Status, getOrderForUpdateDto.Comment, getOrderForUpdateDto.ProductsDto); return(Ok()); } catch (ArgumentException e) { return(StatusCode(400, e.Message)); } }
public async Task <Order> UpdateOrder(int orderId, GetOrderForUpdateDto getOrderForUpdateDto) { var order = await _repositoryManager.Order.GetOrderWithProductOrders(orderId); order.CustomerId = getOrderForUpdateDto.CustomerId; order.Comment = getOrderForUpdateDto.Comment; order.Status = getOrderForUpdateDto.Status; foreach (var productOrder in order.ProductOrders) { var product = await _repositoryManager.Product.GetProductAsync(productOrder.ProductId); product.Quantity += productOrder.Quantity; product.ProductOrders.Remove(productOrder); } await _repositoryManager.SaveAsync(); foreach (var ordersDto in getOrderForUpdateDto.ProductsDto) { var product = await _repositoryManager.Product.GetProductAsync(ordersDto.ProductId); if (product.Quantity < ordersDto.Quantity) { throw new ArgumentException("Available only " + product.Quantity + " of " + product.Name); } product.Quantity -= ordersDto.Quantity; product.ProductOrders.Add(new ProductOrders { Order = order, Quantity = ordersDto.Quantity }); } await _repositoryManager.SaveAsync(); return(order); }