package Ġcom . ff sil va . p ont oint el ig ente . controllers Ċ Ċ import Ġcom . ff sil va . p ont oint el ig ente . documents . Empresa Ċ import Ġcom . ff sil va . p ont oint el ig ente . documents . Func ion ario Ċ import Ġcom . ff sil va . p ont oint el ig ente . d tos . Cad astro PJ Dto Ċ import Ġcom . ff sil va . p ont oint el ig ente . enums . Perfil Enum Ċ import Ġcom . ff sil va . p ont oint el ig ente . response . Response Ċ import Ġcom . ff sil va . p ont oint el ig ente . services . Empresa Service Ċ import Ġcom . ff sil va . p ont oint el ig ente . services . Func ion ario Service Ċ import Ġcom . ff sil va . p ont oint el ig ente . utils . Sen ha Utils Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . validation . Binding Result Ċ import Ġorg . springframework . validation . Object Error Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestBody Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġjavax . validation . Valid Ċ Ċ @ RestController Ċ @ RequestMapping ("/ api / cad astro - pj ") Ċ class ĠC ad astro PJ Controller ( ĊĠĠĠĠĠĠĠ Ġval Ġempresa Service : ĠEmp resa Service , ĊĠĠĠĠĠĠĠ Ġval Ġfuncion ario Service : ĠFunc ion ario Service Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ PostMapping ĊĠĠĠ Ġfun Ġcada strar (@ Valid Ġ@ RequestBody Ġcad astro PJ Dto : ĠC ad astro PJ Dto , Ġresult : ĠBinding Result ): ĠResponseEntity < Response < Cad astro PJ Dto >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse < Cad astro PJ Dto > Ġ= ĠResponse () ĊĊĠĠĠĠĠĠĠ Ġvalid ar Dados Ex istent es ( cad astro PJ Dto , Ġresult ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . all Errors . forEach Ġ{ Ġresponse . errors . add ( it . default Message . toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . bad Request (). body ( response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġempresa : ĠEmp resa Ġ= Ġconverter Dto Para Empresa ( cad astro PJ Dto ) ĊĠĠĠĠĠĠĠ Ġempresa Service . persist ir ( empresa ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfuncion ario : ĠFunc ion ario Ġ= Ġconverter Dto Para Func ion ario ( cad astro PJ Dto , Ġempresa ) ĊĠĠĠĠĠĠĠ Ġfuncion ario Service . persist ir ( func ion ario ) ĊĊĠĠĠĠĠĠĠ Ġresponse . data Ġ= Ġconverter Cad astro Dt oto ( func ion ario , Ġempresa ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok ( response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconverter Cad astro Dt oto ( func ion ario : ĠFunc ion ario , Ġempresa : ĠEmp resa ): ĠC ad astro PJ Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠC ad astro PJ Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnome Ġ= Ġfuncion ario . nome , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġfuncion ario . email , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsen ha Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc pf Ġ= Ġfuncion ario . cpf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc np j Ġ= Ġempresa . c np j , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraz ao So ial Ġ= Ġempresa . raz ao Social , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġfuncion ario . id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconverter Dto Para Func ion ario ( cad astro PJ Dto : ĠC ad astro PJ Dto , Ġempresa : ĠEmp resa ): ĠFunc ion ario Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunc ion ario ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnome Ġ= Ġcad astro PJ Dto . nome , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġcad astro PJ Dto . email , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsen ha Ġ= ĠSen ha Utils (). ger ar BC rypt ( cad astro PJ Dto . sen ha ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc pf Ġ= Ġcad astro PJ Dto . cpf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperfil Ġ= ĠPer fil Enum . ROLE _ ADMIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempresa Id Ġ= Ġempresa . id . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconverter Dto Para Empresa ( cad astro PJ Dto : ĠC ad astro PJ Dto ): ĠEmp resa Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠEmp resa ( raz ao Social Ġ= Ġcad astro PJ Dto . raz ao So ial , Ġc np j Ġ= Ġcad astro PJ Dto . c np j ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalid ar Dados Ex istent es ( cad astro PJ Dto : ĠC ad astro PJ Dto , Ġresult : ĠBinding Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( empresa Service . bus car Por C np j ( cad astro PJ Dto . c np j ). isPresent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add Error ( Object Error (" empresa ", Ġ" Empresa ĠjÃ¡ Ġexist ente .")) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( func ion ario Service . bus car Por C pf ( cad astro PJ Dto . cpf ) Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add Error ( Object Error (" func ion ario ", Ġ" CP F ĠjÃ¡ Ġes x istent e .")) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( func ion ario Service . bus car Por Email ( cad astro PJ Dto . email ) Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add Error ( Object Error (" func ion ario ", Ġ" Email ĠjÃ¡ Ġexist ente .")) ĊĠĠĠ Ġ} Ċ }