package Ġcom . j pp . mp domain . use case Ċ Ċ import Ġcom . j pp . mp domain . Account Movie Type Ċ import Ġcom . j pp . mp domain . Connectivity Ċ import Ġcom . j pp . mp domain . Movie Page Ċ import Ġcom . j pp . mp domain . Session Ċ import Ġcom . j pp . mp domain . Supported Language Ċ import Ġcom . j pp . mp domain . User Account Ċ import Ġcom . j pp . mp domain . repository . Account Repository Ċ import Ġcom . j pp . mp domain . repository . Configuration Repository Ċ import Ġcom . j pp . mp domain . repository . Connectivity Repository Ċ import Ġcom . j pp . mp domain . repository . Language Repository Ċ import Ġcom . j pp . mp domain . repository . Movie Page Repository Ċ import Ġcom . j pp . mp domain . repository . Session Repository Ċ Ċ /** Ċ Ġ* ĠUse Ġcase Ġto Ġretrieve Ġa Ġ[ Movie Page ] Ġof Ġa Ġparticular Ġ[ Account Movie Type ]. Ċ Ġ*/ Ċ class ĠGetUser Account Movie Page UseCase ( ĊĠĠĠ Ġprivate Ġval Ġmovie Page Repository : ĠMovie Page Repository , ĊĠĠĠ Ġprivate Ġval Ġsession Repository : ĠSession Repository , ĊĠĠĠ Ġprivate Ġval Ġaccount Repository : ĠAccount Repository , ĊĠĠĠ Ġprivate Ġval Ġconfiguration Repository : ĠConfiguration Repository , ĊĠĠĠ Ġprivate Ġval Ġlanguage Repository : ĠLanguage Repository , ĊĠĠĠ Ġprivate Ġval Ġconnectivity Repository : ĠConnect ivity Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġexecute ( page : ĠInt , Ġtype : ĠAccount Movie Type ): ĠTry < Movie Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( connectivity Repository . getCurrent Connectivity () Ġis ĠConnect ivity . Disconnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTry . Failure ( Try . Failure Cause . No Connectivity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Session Ġ= Ġsession Repository . getCurrent Session () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠTry . Failure ( Try . Failure Cause . User Not Logged ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Account Ġ= Ġaccount Repository . getUser Account ( current Session ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠTry . Failure ( Try . Failure Cause . User Not Logged ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget Movie Page ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Session , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Repository . getCurrent App Language () ĊĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġfav Page Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTry . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfav Page . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġfav Page . results . configure Movie Images ( configuration Repository . getApp Configuration ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠTry . Failure ( Try . Failure Cause . Unknown ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Movie Page ( ĊĠĠĠĠĠĠĠ Ġpage : ĠInt , ĊĠĠĠĠĠĠĠ Ġtype : ĠAccount Movie Type , ĊĠĠĠĠĠĠĠ Ġsession : ĠSession , ĊĠĠĠĠĠĠĠ Ġuser Account : ĠUser Account , ĊĠĠĠĠĠĠĠ Ġlanguage : ĠSupported Language ĊĠĠĠ Ġ): ĠMovie Page ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAccount Movie Type . Favorite Ġ-> Ġmovie Page Repository . get Favorite Movie Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġpage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= Ġsession , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account Ġ= Ġuser Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġlanguage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAccount Movie Type . R ated Ġ-> Ġmovie Page Repository . getR ated Movie Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġpage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= Ġsession , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account Ġ= Ġuser Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġlanguage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAccount Movie Type . Watch list Ġ-> Ġmovie Page Repository . get Watch list Movie Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġpage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= Ġsession , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account Ġ= Ġuser Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġlanguage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ