Ejemplo n.º 1
0
        public async Task <IActionResult> AddToStock([FromRoute] long productId, [FromBody] AddToStockHttpRequest addToStockHttpRequest)
        {
            var queryProductServiceRequest = new QueryProductCommand(0, 1)
            {
                ProductId = productId
            };

            StockActionHttpResponse stockActionHttpResponse = null;
            await _distributedLockManager.LockAsync(StockOperationLockKey(productId),
                                                    async() =>
            {
                await _mediator.Send(queryProductServiceRequest);

                AddToStockCommand addToStockCommand = addToStockHttpRequest != null
                                                                                                  ? new AddToStockCommand(productId, addToStockHttpRequest.Count, addToStockHttpRequest.CorrelationId)
                                                                                                  : null;

                StockActionResponse stockActionResponse = await _mediator.Send(addToStockCommand);

                stockActionHttpResponse = stockActionResponse.ToStockActionHttpResponse();
            });


            return(StatusCode((int)HttpStatusCode.OK, stockActionHttpResponse));
        }
 public static StockActionHttpResponse ToStockActionHttpResponse(this StockActionResponse stockActionResponse)
 {
     return(stockActionResponse == null
                ? null
                : new StockActionHttpResponse
     {
         ProductId = stockActionResponse.ProductId,
         StockActionId = stockActionResponse.StockActionId,
         StockActionType = stockActionResponse.StockActionType,
         Count = stockActionResponse.Count
     });
 }