package Ġca . ets mt l . app lets . repository . data . repository . sign ets Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġca . ets mt l . app lets . repository . App Executors Ċ import Ġca . ets mt l . app lets . repository . data . api . ApiResponse Ċ import Ġca . ets mt l . app lets . repository . data . api . Sign ets Api Ċ import Ġca . ets mt l . app lets . repository . data . api . request body . sign ets . Et ud iant RequestBody Ċ import Ġca . ets mt l . app lets . repository . data . api . response . mapper . to Program mes Entities Ċ import Ġca . ets mt l . app lets . repository . data . api . response . sign ets . Api List e Program mes Ċ import Ġca . ets mt l . app lets . repository . data . api . response . sign ets . Api Sign ets Model Ċ import Ġca . ets mt l . app lets . repository . data . db . dao . sign ets . Program me Dao Ċ import Ġca . ets mt l . app lets . repository . data . db . entity . mapper . to Program mes Ċ import Ġmodel . Program me Ċ import Ġmodel . User Credentials Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSon phil Ġon Ġ 3 0 - 1 0 - 1 8 . Ċ Ġ*/ Ċ Ċ class ĠProgram me Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġapp Executors : ĠApp Executors , ĊĠĠĠ Ġprivate Ġval Ġapi : ĠSign ets Api , ĊĠĠĠ Ġprivate Ġval Ġdao : ĠProgram me Dao Ċ ) Ġ: ĠSign ets Repository ( app Executors ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġlist Ġof Ġthe Ġstudent 's Ġprograms Ġof Ġstudy ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Credentials ĠThe Ġuser 's Ġcredentials ĊĠĠĠĠ Ġ* Ġ@ param Ġshould Fetch ĠThis Ġfunction Ġis Ġcalled Ġto Ġdetermine Ġwhether Ġthe Ġdata Ġshould ĊĠĠĠĠ Ġ* Ġbe Ġfetched Ġfrom Ġthe Ġnetwork Ġor Ġonly Ġfrom Ġthe ĠDB ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Program mes ( ĊĠĠĠĠĠĠĠ Ġuser Credentials : ĠUser Credentials , ĊĠĠĠĠĠĠĠ Ġshould Fetch : Ġ( data : ĠList < Program me > ?) Ġ-> ĠBoolean ĊĠĠĠ Ġ) Ġ= Ġobject Ġ: ĠSign ets Network Bound Resource < List < Program me >, ĠApi List e Program mes >( app Executors ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsave Sign ets Data ( item : ĠApi List e Program mes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . delete All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . insert All ( item . to Program mes Entities ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Fetch ( data : ĠList < Program me > ?) Ġ= Ġshould Fetch ( data ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload From Db (): ĠLive Data < List < Program me >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTransform ations . map ( dao . getAll ()) Ġ{ Ġit . to Program mes () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Call (): ĠLive Data < ApiResponse < Api Sign ets Model < Api List e Program mes >>> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapi . liste Program mes ( Et ud iant RequestBody ( user Credentials )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. as LiveData () Ċ }