package Ġcom . w ade k tech . spring kotlin demo . service Ċ Ċ import Ġcom . w ade k tech . spring kotlin demo . dao . I User Dao Ċ import Ġcom . w ade k tech . spring kotlin demo . domain . User Ċ import Ġcom . w ade k tech . spring kotlin demo . dto . Add UserRequest Ċ import Ġcom . w ade k tech . spring kotlin demo . dto . Update UserRequest Ċ import Ġcom . w ade k tech . spring kotlin demo . dto . User Response Ċ import Ġcom . w ade k tech . spring kotlin demo . mapper . Add UserRequest Mapper Ċ import Ġcom . w ade k tech . spring kotlin demo . utils . to User Response Ċ import Ġorg . springframework . data . domain . Page Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service Ċ class ĠUser Management ServiceImpl ( ĊĠĠĠ Ġprivate Ġval Ġuser Dao : ĠI User Dao , ĊĠĠĠ Ġprivate Ġval Ġadd UserRequest Mapper : ĠAdd UserRequest Mapper Ċ ) Ġ: ĠI User Management Service Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfind User ById ( userId : ĠInt ): ĠUser Response ? Ġ{ ĊĠĠĠĠĠĠ Ġreturn ĠgetUser ById ( userId ). to User Response () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll Users ( page able : ĠPage able ): ĠPage < User Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Dao . findAll ( page able ). map ( User ? :: to User Response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave User ( add UserRequest : ĠAdd UserRequest ): ĠUser Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . save OrUpdate User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd UserRequest Mapper . map To Domain ( add UserRequest ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate User ( update UserRequest : ĠUpdate UserRequest ): ĠUser Response Ġ{ ĊĠĠĠĠĠĠ Ġval Ġupdated User Ġ: ĠUser Ġ= Ġ( getUser ById ( update UserRequest . id ) Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠ Ġ"${ update UserRequest . id } Ġnot Ġfound ! ")) ĊĊĠĠĠĠĠĠ Ġreturn Ġthis . save OrUpdate User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated User . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġupdate UserRequest . email ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġupdate UserRequest . username ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete User ById ( userId : ĠInt ) Ġ= Ġuser Dao . delete ById ( userId ) ĊĊĠĠĠ Ġprivate Ġfun ĠgetUser ById ( userId : ĠInt ?) Ġ: ĠUser ? Ġ= Ġuser Dao . findById OrNull ( userId ) ĊĊĠĠĠ Ġprivate Ġfun Ġsave OrUpdate User ( user : ĠUser ) Ġ: ĠUser Response Ġ= Ġuser Dao . save ( user ). to User Response () Ċ }