Salve, beleza? Continuamos essa saga aqui no Domain Dream Design. Agora vamos falar sobre a parte de pagamento que ela vai adicionar aqui um processo de negócio que vai mudar esse nosso método no Application Service. Porque nós temos as restrições de negócio, que é só pode ser feita uma reserva para um lugar, certo? E eu tenho que tentar fazer o pagamento na hora. Então, pensando aqui na questão do pagamento, Então pensando aqui na questão do pagamento Se a gente Tentar fazer o pagamento depois de tudo que aconteceu Vamos por aqui no finalzinho, chamo o meu método de pagamento aqui Eu não tenho certeza aí que eu tenho que entender a dinâmica aqui de trabalhar com o in-house of work eu não tenho certeza até que eu faça o comit eu não tenho certeza se eu fiz se na verdade se a reserva foi definitivamente feita. Porque aqui, na verdade, é que ele vai fazer o teste lá. Ele vai tentar criar a reserva e se tiver outra já criada, ele vai dar um erro. Então, se eu tentar fazer o pagamento aqui e acontecer um erro, eu vou ter que desfazer esse pagamento. Eu poderia otimizar melhor a minha chamada para não chamar esse pagamento de forma desnecessária. Se eu já vi que a reserva não foi feita, eu não precisaria efetuar esse pagamento. Então, a ordem cronológica aqui da sequência que a gente faz muda como a gente vai lidar com os caminhos. A gente tem o caminho do pagamento não feito, pagamento feito, reserva feita, reserva não feita. Então, a gente vai ter que, para otimizar esse envio do pagamento, eu poderia chegar aqui e fazer o meu commit aqui porque aí se aqui já der erro logo de cara se essa operação aqui deu erro então não preciso nem fazer o pagamento pode dar vários tipos de erros mas aqui eu não vou nem tentar fazer o pagamento. Então, o que acontece? Se eu conseguir continuar fazendo tudo aqui, deu tudo certo. Vamos passar toda essa lógica para cá. Vamos passar toda essa lógica para cá. Se eu conseguir fazer a reserva, a primeira coisa que eu poderia fazer aqui é o pagamento. Porque se o pagamento também... Inclusive, deixa eu colocar esse return para cá. Porque se o pagamento deu erro, eu não tento nem ficar criando aqui a ordem, ficar debitando o evento, nem nada disso. Então, daqui para baixo, esse commit aqui vai abranger esse transacional para cá. Agora, se deu um erro aqui, se deu um erro aqui, eu sei que eu não vou fazer nada com a reserva, eu não tenho que debitar nada. Mas eu poderia também fazer a criação da order, né? Porque eu poderia colocar, isso seria como uma estratégia. Lembra lá do que a gente estava falando das camadas de responsabilidade? Poderia duplicar esse código aqui. Eu poderia criar aqui a minha order, porém eu já vou aplicar um cancelado nela. Eu poderia ter até um failed aqui no final das contas. Aqui a gente faz o comit. o comitê. Então, veja a decisão que a gente tomou. Nós estamos mandando ver aqui para ver se a reserva foi feita de fato, para a gente poder tomar a nossa providência. Mas aqui também tem outro risco, se esse comit... Se esse comit falhar, por outro motivo, eu fiquei com a reserva pronta lá também. Nós precisamos garantir consistência em toda essa operação. Então, nesse caso, não tem para onde fugir. A gente precisa trabalhar aqui com o modo transação, envolvendo tudo isso aqui, mesmo que o próprio Unit of Work tenha ali, ele vai ter uma transação dentro da nossa transação. Mas a gente precisa envolver tudo isso aqui em uma transação para garantir que está tudo ok. Então, antes de agregar pagamento independente aqui, vai fazer a requisição HTTP, a gente já tem esse desenho aqui do processo de negócio que está acontecendo. E claro que nós podemos fazer aqui algumas... melhorar a legibilidade do código e tudo mais. Mas como eu tenho esse processo e eu quero, mesmo que eu não consiga reserva, eu coloque ali a ordem que foi falha, que foi cancelada. Tem muitas coisas aqui que podem acontecer e somente o modo transação que vai nos ajudar a garantir a consistência dessa operação. Então, na próxima aula, a gente vai fazer essa implementação aqui da transação. Então, é isso aí e até a próxima.