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);
        }
Beispiel #2
0
        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);
        }