public Models.Product SubProductStock(OrderStockDto orderStockDto) { _logger.LogInformation($"[Begin] Sub Product Stock, Stock Need : {orderStockDto.Count}."); var product = _productService.GetProductById(orderStockDto.ProductId); if (orderStockDto.Count < 0 || orderStockDto.Count > product.Stock) { throw new InvalidOperationException("Invalid Product Count!"); } product.Stock = product.Stock - orderStockDto.Count; _productService.SaveProduct(product); _logger.LogInformation($"[End] Sub Product Stock Finished, Stock Now : {product.Stock}."); return(product); }
public async Task <Models.Order> Post(OrderDto orderDto) { _logger.LogInformation("[Begin] Create Order."); var order = new Models.Order() { // some mapping Id = orderDto.Id, ProductId = orderDto.ProductId, Count = orderDto.Count }; // some other logic for order var orderStockDto = new OrderStockDto() { ProductId = orderDto.ProductId, Count = orderDto.Count }; await _daprClient.PublishEventAsync(DaprPubSubName, "neworder", orderStockDto); _logger.LogInformation($"[End] Create Order Finished. Id : {orderStockDto.ProductId}, Count : {orderStockDto.Count}"); return(order); }