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 }); }