package Ġcom . t alg at . store . data . service Ċ Ċ import Ġcom . t alg at . store . api . payload . Product Request Ċ import Ġcom . t alg at . store . data . dao . Product Repository Ċ import Ġcom . t alg at . store . data . model . Product Ċ import Ġcom . t alg at . store . data . model . Product Image Ċ import Ġcom . t alg at . store . exception . Internal Exception Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjavax . transaction . Transactional Ċ Ċ @ Service Ċ @ Transactional Ċ class ĠProduct ServiceImpl ( private Ġval Ġproduct Repository : ĠProduct Repository ) Ġ: ĠProduct Service Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ: ĠLogger Ġ= ĠLoggerFactory . getLogger ( Product ServiceImpl :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Product ( product Request : ĠProduct Request ): ĠProduct Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Product Image >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( image Ġin Ġproduct Request . product ImageList ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Product Image ( image . id , Ġproduct Request . id , Ġimage . url )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠProduct ( product Request . id , Ġproduct Request . categoryId , Ġproduct Request . name , Ġproduct Request . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Request . short Description , Ġproduct Request . additional Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Request . badge , Ġproduct Request . price , Ġproduct Request . price Old , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Request . stars , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Product ( product Request : ĠProduct Request ): ĠProduct Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsave Product ( create Product ( product Request )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Product ( product : ĠProduct ): ĠProduct Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew Product : ĠProduct ? ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Product Ġ= Ġproduct Repository . save ( product ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" error : Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInternal Exception ( e . message Ġ?: Ġ" Internal Ġerror Ġin Ġsaving ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog . info (" Saved Ġproduct : Ġ{}", Ġnew Product ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Product ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Product List (): ĠList < Product > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproduct Repository . findAll () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Product ( id : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproduct Repository . delete ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Product ( product Request : ĠProduct Request ): ĠProduct Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproduct Repository . update ( create Product ( product Request )) ĊĠĠĠ Ġ} Ċ }