public async Task <IActionResult> GetStock([FromQuery] GetStockCollectionHttpRequest getStockCollectionHttpRequest) { var queryStockCommand = new QueryStockCommand(getStockCollectionHttpRequest?.Offset ?? 0, getStockCollectionHttpRequest?.Take ?? 1) { StockId = getStockCollectionHttpRequest?.StockId, ProductId = getStockCollectionHttpRequest?.ProductId, PartialProductCode = getStockCollectionHttpRequest?.ProductCode, StockUpdatedLaterThan = getStockCollectionHttpRequest?.StockUpdatedLaterThan }; StockCollectionResponse stockCollectionResponse = await _mediator.Send(queryStockCommand); var stockCollectionHttpResponse = new StockCollectionHttpResponse { TotalCount = stockCollectionResponse.TotalCount, Data = stockCollectionResponse.Data .Select(s => s.ToStockHttpResponse()) .ToList() }; return(StatusCode((int)HttpStatusCode.OK, stockCollectionHttpResponse)); }
private async Task SyncAvailableStock(long productId, long stockActionId, int availableStock) { await _distributedLockManager.LockAsync(UpdateAvailableStockLockKey(productId), async() => { var queryStockCommand = new QueryStockCommand(0, 1) { ProductId = productId }; StockCollectionResponse stockCollectionResponse = await _mediator.Send(queryStockCommand); StockResponse stockResponse = stockCollectionResponse.Data.First(); var updateAvailableStockCommand = new UpdateAvailableStockCommand(stockResponse.StockId, availableStock, stockActionId, stockResponse.LastStockOperationDate); try { await _mediator.Send(updateAvailableStockCommand); } catch (StockTimeLineException e) { _logger.LogInformation(e.Message); } }); }