public async Task Consume(ConsumeContext <BookDeletedIntegrationEvent> context)
 {
     var bookDeletedIntegrationEvent = context.Message;
     var resetStockCommand           = new ResetStockCommand(bookDeletedIntegrationEvent.BookId,
                                                             $"book-deleted-{bookDeletedIntegrationEvent.BookId}");
     await _executionContext.ExecuteAsync(resetStockCommand, CancellationToken.None);
 }
        public async Task <IActionResult> ResetStock([FromBody] ResetStockHttpRequest?resetStockHttpRequest)
        {
            var resetStockCommand = new ResetStockCommand(resetStockHttpRequest?.ProductId ?? string.Empty,
                                                          resetStockHttpRequest?.CorrelationId ?? string.Empty);
            await _executionContext.ExecuteAsync(resetStockCommand, CancellationToken.None);

            return(StatusCode((int)HttpStatusCode.OK));
        }
Пример #3
0
        public async Task <IActionResult> ResetStock([FromRoute] long productId, [FromBody] ResetStockHttpRequest resetStockHttpRequest)
        {
            var queryProductServiceRequest = new QueryProductCommand(0, 1)
            {
                ProductId = productId
            };

            await _mediator.Send(queryProductServiceRequest);

            StockActionHttpResponse stockActionHttpResponse = null;
            await _distributedLockManager.LockAsync(StockOperationLockKey(productId),
                                                    async() =>
            {
                ResetStockCommand resetStockCommand = resetStockHttpRequest != null
                                                                                                  ? new ResetStockCommand(productId, resetStockHttpRequest.CorrelationId)
                                                                                                  : null;

                StockActionResponse stockActionResponse = await _mediator.Send(resetStockCommand);
                stockActionHttpResponse = stockActionResponse.ToStockActionHttpResponse();
            });

            return(StatusCode((int)HttpStatusCode.OK, stockActionHttpResponse));
        }