11using FluentValidation . Results ;
22using JSE . Core . Messages ;
3+ using JSE . Core . Messages . Integration ;
4+ using JSE . MessageBus ;
35using JSE . Pedido_API . Application . Events ;
46using JSE . Pedidos . API . Application . DTO ;
57using JSE . Pedidos . Domain ;
@@ -14,12 +16,15 @@ public class PedidoCommandHandler : CommandHandler,
1416 {
1517 private readonly IPedidoRepository _pedidoRepository ;
1618 private readonly IVoucherRepository _voucherRepository ;
19+ private readonly IMessageBus _bus ;
1720
18- public PedidoCommandHandler ( IVoucherRepository voucherRepository ,
19- IPedidoRepository pedidoRepository )
21+ public PedidoCommandHandler ( IVoucherRepository voucherRepository ,
22+ IPedidoRepository pedidoRepository ,
23+ IMessageBus bus )
2024 {
2125 _voucherRepository = voucherRepository ;
2226 _pedidoRepository = pedidoRepository ;
27+ _bus = bus ;
2328 }
2429
2530 public async Task < ValidationResult > Handle ( AdicionarPedidoCommand message , CancellationToken cancellationToken )
@@ -37,7 +42,7 @@ public async Task<ValidationResult> Handle(AdicionarPedidoCommand message, Cance
3742 if ( ! ValidarPedido ( pedido ) ) return ValidationResult ;
3843
3944 // Processar pagamento
40- if ( ! ProcessarPagamento ( pedido ) ) return ValidationResult ;
45+ if ( ! await ProcessarPagamento ( pedido , message ) ) return ValidationResult ;
4146
4247 // Se pagamento tudo ok!
4348 pedido . AutorizarPedido ( ) ;
@@ -122,8 +127,29 @@ private bool ValidarPedido(Pedido pedido)
122127 return true ;
123128 }
124129
125- public bool ProcessarPagamento ( Pedido pedido )
130+ public async Task < bool > ProcessarPagamento ( Pedido pedido , AdicionarPedidoCommand message )
126131 {
132+ var pedidoIniciado = new PedidoIniciadoIntegrationEvent
133+ {
134+ PedidoId = pedido . Id ,
135+ ClienteId = pedido . ClienteId ,
136+ Valor = pedido . ValorTotal ,
137+ TipoPagamento = 1 , // Fixo, alterar se tiver mais tipos
138+ NomeCartao = message . NomeCartao ,
139+ MesAnoVencimento = message . ExpiracaoCartao ,
140+ CVV = message . CvvCartao
141+ } ;
142+
143+ var result = await _bus
144+ . RequestAsync < PedidoIniciadoIntegrationEvent , ResponseMessage > ( pedidoIniciado ) ;
145+
146+ if ( result . ValidationResult . IsValid ) return true ;
147+
148+ foreach ( var erro in result . ValidationResult . Errors )
149+ {
150+ AddError ( erro . ErrorMessage ) ;
151+ }
152+
127153 return true ;
128154 }
129155 }
0 commit comments