package Ġrepository Ċ Ċ import Ġmodel .* Ċ import Ġmodel . Research Api Exceptions .* Ċ Ċ class ĠMark s Repository Impl ( ĊĠ Ġval Ġremote : ĠMark s Remote , ĊĠ Ġoverride Ġval Ġtoken : Ġsuspend Ġ() Ġ-> ĠString Ċ ) Ġ: ĠMark s Repository Ġ{ ĊĊĠ Ġoverride Ġsuspend Ġfun Ġget Marks ( research Id : ĠInt ): ĠList < Mark Entity > Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġremote . getAll ( token (), Ġresearch Id ) ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġresponse . response Ġ!= Ġnull Ġ-> Ġresponse . response !!. list ĊĠĠĠĠĠ Ġresponse . error Ġ!= Ġnull Ġ-> Ġhandle ErrorResponse ( response . error !! ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠMark s Fetch Exception ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġsave Mark ( mark To Save : ĠMark Data , Ġresearch Id : ĠInt ): ĠMark Entity Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġremote . save ( mark To Save , Ġresearch Id , Ġtoken ()) ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġresponse . response Ġ!= Ġnull Ġ-> Ġresponse . response !!. mark ĊĠĠĠĠĠ Ġresponse . error Ġ!= Ġnull Ġ-> Ġhandle ErrorResponse ( response . error !! ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠMark Create Exception ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġupdate Mark ( mark : ĠMark Entity , Ġresearch Id : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġremote . update ( mark , Ġresearch Id , Ġtoken ()) ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠ Ġresponse . response Ġ!= Ġnull Ġ-> Ġresponse . response !! ĊĠĠĠĠĠ Ġresponse . error Ġ!= Ġnull Ġ-> Ġhandle ErrorResponse ( response . error !! ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠMark Update Exception ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġdelete Mark ( id : ĠInt , Ġresearch Id : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġremote . delete ( id , Ġresearch Id , Ġtoken ()) ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠ Ġresponse . response Ġ!= Ġnull Ġ-> Ġresponse . response !! ĊĠĠĠĠĠ Ġresponse . error Ġ!= Ġnull Ġ-> Ġhandle ErrorResponse ( response . error !! ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠMark Delete Exception ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġclean () Ġ{ ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġ< T Ġ: ĠAny > Ġhandle ErrorResponse ( response : ĠError Model ): ĠT Ġ{ ĊĠĠĠ Ġwhen Ġ( response . error ) Ġ{ ĊĠĠĠĠĠ ĠError String Code . RE SEARCH _ NOT _ FOUND . value Ġ-> Ġthrow ĠResearch NotFoundException ĊĊĠĠĠĠĠ ĠError String Code . GET _ MARK S _ FAILED . value Ġ-> Ġthrow ĠMark s Fetch Exception ĊĠĠĠĠĠ ĠError String Code . CREATE _ MARK _ FAILED . value Ġ-> Ġthrow ĠMark Create Exception ĊĠĠĠĠĠ ĠError String Code . UPDATE _ MARK _ FAILED . value Ġ-> Ġthrow ĠMark Update Exception ĊĊĠĠĠĠĠ ĠError String Code . SESSION _ CLOSE _ FAILED . value Ġ-> Ġthrow ĠClose Session Exception ĊĠĠĠĠĠ ĠError String Code . SESSION _ EXPI RED . value Ġ-> Ġthrow ĠSession Expired Exception ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException ( BASE _ ERROR ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ