using CMSMicroservice.Protobuf.Protos.Inventory; namespace BackOffice.BFF.Application.InventoryCQ.Commands.AdjustStock; public class AdjustStockCommandHandler : IRequestHandler { private readonly IApplicationContractContext _context; public AdjustStockCommandHandler(IApplicationContractContext context) { _context = context; } public async Task Handle(AdjustStockCommand request, CancellationToken cancellationToken) { var protoRequest = new AdjustStockRequest { ProductId = request.ProductId, ProductType = (ProductType)request.ProductType, NewQuantity = request.NewQuantity }; if (!string.IsNullOrWhiteSpace(request.Reason)) protoRequest.Reason = request.Reason; if (!string.IsNullOrWhiteSpace(request.ReferenceNumber)) protoRequest.ReferenceNumber = request.ReferenceNumber; var response = await _context.Inventory.AdjustStockAsync(protoRequest, cancellationToken: cancellationToken); return new AdjustStockResponseDto { PreviousQuantity = response.PreviousQuantity, NewQuantity = response.NewQuantity, Difference = response.Difference }; } }