package Ġbr . com . z up . pix . regist ra Ċ Ċ import Ġbr . com . z up . pix . Ch ave Pix Repository Ċ import Ġbr . com . z up . pix . comp art il h ado . exception . custom izada . Ch ave Pix Ex istent e Exception Ċ import Ġbr . com . z up . pix . integr acao . bcb . B anco Central Client Ċ import Ġbr . com . z up . pix . integr acao . bcb . C ria Ch ave Request Ċ import Ġbr . com . z up . pix . integr acao . it au . It au Client Ċ import Ġbr . com . z up . pix . model . Ch ave Pix Ċ import Ġio . mic ronaut . http . HttpStatus Ċ import Ġio . mic ronaut . validation . Validated Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ import Ġjavax . transaction . Transactional Ċ import Ġjavax . validation . Valid Ċ Ċ @ Validated Ċ @ Singleton Ċ class ĠN ova Ch ave Pix Service (@ Inject Ġval Ġrepository : ĠCh ave Pix Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject Ġval Ġit au Client : ĠI tau Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject Ġval Ġb cb Client : ĠB anco Central Client ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( this :: class . java ) ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġregist ra (@ Valid Ġnova Ch ave : ĠN ova Ch ave Pix ): ĠCh ave Pix Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . Ġver ifica Ġse Ġch ave ĠjÃ¡ Ġexiste Ġno Ġsistema ĊĠĠĠĠĠĠĠ Ġif Ġ( repository . exists By Ch ave ( nova Ch ave . ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCh ave Pix Ex istent e Exception (" Ch ave ĠP ix Ġ'${ nova Ch ave . ch ave }' Ġexist ente ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . Ġbus ca Ġdados Ġda Ġconta Ġno ĠE RP Ġdo ĠI TA U ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġit au Client . bus ca Cont a Cliente ( nova Ch ave . cliente Id !! , Ġnova Ch ave . tipo Cont a !!. name ) ĊĠĠĠĠĠĠĠ Ġval Ġconta Ġ= Ġresponse . body ()?. to Model () Ġ?: Ġthrow ĠIllegalStateException (" Cliente ĠnÃ£o Ġencontr ado Ġno ĠI tau ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 . Ġgr ava Ġno Ġbanco Ġde Ġdados ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġnova Ch ave . to Model ( cont a ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( ch ave ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . Ġregist ra Ġch ave Ġno ĠB CB ĊĠĠĠĠĠĠĠ Ġval Ġb cb Request Ġ= ĠC ria Ch ave Request . of ( ch ave ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Regist r ando Ġch ave ĠP ix Ġno ĠB anco ĠCentral Ġdo ĠBr as il Ġ( B CB ): Ġ$ it ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġb cb Response Ġ= Ġb cb Client . create ( bcb Request ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bcb Response . status Ġ!= ĠHttpStatus . CREATED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Erro Ġao Ġregist rar Ġch ave ĠP ix Ġno ĠB anco ĠCentral Ġdo ĠBr as il Ġ( B CB )") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 5 . Ġatual iza Ġch ave Ġdo Ġdom inio Ġcom Ġch ave Ġger ada Ġpelo ĠB CB ĊĠĠĠĠĠĠĠ Ġch ave . at ual iza ( bcb Response . body () !!. key ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġch ave ĊĠĠĠ Ġ} Ċ Ċ } Ċ