package Ġcom . dav ide ag ost ini . routes Ċ Ċ import Ġcom . dav ide ag ost ini . data . requests . Create Category Request Ċ import Ġcom . dav ide ag ost ini . data . responses . Basic ApiResponse Ċ import Ġcom . dav ide ag ost ini . data . util . ApiResponse Messages . INTERNAL _ SERVER _ ERROR Ċ import Ġcom . dav ide ag ost ini . service . Category Service Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . auth .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . routing .* Ċ import ĠuserId Ċ Ċ fun ĠRoute . create Category ( category Service : ĠCategory Service ) Ġ{ ĊĠĠĠ Ġauthenticate Ġ{ ĊĠĠĠĠĠĠĠ Ġpost ("/ api / category / create ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcall . receive OrNull < Create Category Request >() Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ post ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġcall . userId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreate Category Ack nowled ged Ġ= Ġcategory Service . create Category ( request , ĠuserId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( create Category Ack nowled ged ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . OK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBasic ApiResponse < Unit >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccessful Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . InternalServerError , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBasic ApiResponse < Unit >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccessful Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠINTERNAL _ SERVER _ ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠRoute . getC ategories For Owner ( category Service : ĠCategory Service ) Ġ{ ĊĠĠĠ Ġauthenticate Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / category / all ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= Ġcategory Service . getC ategories For Owner ( call . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . OK , Ġcategories ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠRoute . delete Category ( category Service : ĠCategory Service ) Ġ{ ĊĠĠĠ Ġauthenticate Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete ("/ api / category / delete /{ categoryId }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Id Ġ= Ġcall . parameters [" categoryId "] Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ delete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= Ġcategory Service . get Category ( categoryId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( category Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . NotFound , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBasic ApiResponse < Unit >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccessful Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ delete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( category . userId Ġ!= Ġcall . userId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Unauthorized ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ delete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Service . delete Category ( categoryId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . OK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBasic ApiResponse < Unit >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccessful Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠRoute . get Category Details ( category Service : ĠCategory Service ) Ġ{ ĊĠĠĠ Ġauthenticate Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / category / details /{ categoryId }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Id Ġ= Ġcall . parameters [" categoryId "] Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= Ġcategory Service . get Category Details ( call . userId , Ġcategory Id ) Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( category . userId Ġ!= Ġcall . userId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Unauthorized ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . OK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }