11using FluentValidation . Results ;
22using JSE . Core . Messages ;
3+ using JSE . Core . Messages . Integration ;
4+ using JSE . MessageBus ;
35using JSE . Pedido_API . Application . Events ;
4- using JSE . Pedidos . API . Application . Commands ;
56using JSE . Pedidos . API . Application . DTO ;
67using JSE . Pedidos . Domain ;
78using JSE . Pedidos . Domain . Pedidos ;
@@ -15,12 +16,15 @@ public class PedidoCommandHandler : CommandHandler,
1516 {
1617 private readonly IPedidoRepository _pedidoRepository ;
1718 private readonly IVoucherRepository _voucherRepository ;
19+ private readonly IMessageBus _bus ;
1820
19- public PedidoCommandHandler ( IVoucherRepository voucherRepository ,
20- IPedidoRepository pedidoRepository )
21+ public PedidoCommandHandler ( IVoucherRepository voucherRepository ,
22+ IPedidoRepository pedidoRepository ,
23+ IMessageBus bus )
2124 {
2225 _voucherRepository = voucherRepository ;
2326 _pedidoRepository = pedidoRepository ;
27+ _bus = bus ;
2428 }
2529
2630 public async Task < ValidationResult > Handle ( AdicionarPedidoCommand message , CancellationToken cancellationToken )
@@ -38,7 +42,7 @@ public async Task<ValidationResult> Handle(AdicionarPedidoCommand message, Cance
3842 if ( ! ValidarPedido ( pedido ) ) return ValidationResult ;
3943
4044 // Processar pagamento
41- if ( ! ProcessarPagamento ( pedido ) ) return ValidationResult ;
45+ if ( ! await ProcessarPagamento ( pedido , message ) ) return ValidationResult ;
4246
4347 // Se pagamento tudo ok!
4448 pedido . AutorizarPedido ( ) ;
@@ -123,8 +127,29 @@ private bool ValidarPedido(Pedido pedido)
123127 return true ;
124128 }
125129
126- public bool ProcessarPagamento ( Pedido pedido )
130+ public async Task < bool > ProcessarPagamento ( Pedido pedido , AdicionarPedidoCommand message )
127131 {
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+
128153 return true ;
129154 }
130155 }
0 commit comments