package Ġca . ets mt l . app lets . ets mobile . presentation . profile Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġca . ets mt l . app lets . ets mobile . R Ċ import Ġca . ets mt l . app lets . ets mobile . domain . Fetch Et ud iant UseCase Ċ import Ġca . ets mt l . app lets . ets mobile . domain . Fetch Program mes UseCase Ċ import Ġca . ets mt l . app lets . ets mobile . extension . get Generic ErrorMessage Ċ import Ġca . ets mt l . app lets . ets mobile . presentation . App Ċ import Ġca . ets mt l . app lets . ets mobile . util . Event Ċ import Ġca . ets mt l . app lets . ets mobile . util . Refresh able LiveData Ċ import Ġca . ets mt l . app lets . repository . util . zip Resource To Ċ import Ġcom . shop ify . li ved ata k tx . map Ċ import Ġcom . shop ify . li ved ata k tx . non Null Ċ import Ġmodel . Et ud iant Ċ import Ġmodel . Program me Ċ import Ġmodel . Resource Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSon phil Ġon Ġ 1 5 - 0 3 - 1 8 . Ċ Ġ*/ Ċ class ĠProfile ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġfetch Et ud iant UseCase : ĠFetch Et ud iant UseCase , ĊĠĠĠ Ġprivate Ġval Ġfetch Program mes UseCase : ĠFetch Program mes UseCase , ĊĠĠĠ Ġprivate Ġval Ġapp : ĠApp Ċ ) Ġ: ĠViewModel (), ĠLifecycle Observer Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġprofile Res Ġ= Ġobject Ġ: ĠRefresh able LiveData < Resource < List < Profile Item < out ĠProfile Adapter . Profile ViewHolder >>>> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Source (): ĠLive Data < Resource < List < Profile Item < out ĠProfile Adapter . Profile ViewHolder >>>> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( fetch Et ud iant UseCase Ġ{ Ġtrue Ġ} Ġzip Resource To Ġfetch Program mes UseCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġres Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsections Ġ= Ġmutable ListOf < Profile Item < out ĠProfile Adapter . Profile ViewHolder >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet ud iant Ġ= Ġres . data ?. first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogram mes Ġ= Ġres . data ?. second ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et ud iant Ġ!= Ġnull Ġ&& Ġprogram mes Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet ud iant . addTo Sections ( sections ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram mes . as Re versed (). forEach Ġ{ Ġit . addTo Sections ( sections ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . copy Status And Message ( sections . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġprofile : ĠLive Data < List < Profile Item < out ĠProfile Adapter . Profile ViewHolder >>> Ġ= Ġprofile Res ĊĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġloading : ĠLive Data < Boolean > Ġ= Ġprofile Res ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ== Ġnull Ġ|| Ġit . status Ġ== ĠResource . Status . LOADING ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval ĠerrorMessage : ĠLive Data < Event < String ? >> Ġ= Ġprofile Res ĊĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . get Generic ErrorMessage ( app ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġfun Ġrefresh If Content Not Loaded () Ġ= Ġprofile Res . refresh If Value IsNull () ĊĊĠĠĠ Ġfun Ġrefresh () Ġ= Ġprofile Res . refresh () ĊĊĠĠĠ Ġprivate Ġfun ĠEt ud iant . addTo Sections ( sections : ĠMutable List < Profile Item < out ĠProfile Adapter . Profile ViewHolder >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( sections ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Header Item ( app . getString ( R . string . title _ student _ status _ profile ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ balance _ profile ), Ġsol de Total )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Header Item ( app . getString ( R . string . title _ personal _ information _ profile ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ first _ name _ profile ), Ġpre nom )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ last _ name _ profile ), Ġnom )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ permanent _ code _ profile ), Ġcode Perm )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProgram me . addTo Sections ( sections : ĠMutable List < Profile Item < out ĠProfile Adapter . Profile ViewHolder >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( sections ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Header Item ( lib elle )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ code _ program _ profile ), Ġcode )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ average _ program _ profile ), Ġmo y enne )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ number _ acc umulated _ credits _ program _ profile ), Ġnb Credits Comp letes . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ number _ registered _ credits _ program _ profile ), Ġnb Credits In sc rit s . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ number _ completed _ courses _ program _ profile ), Ġnb C rs Re uss is . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ number _ failed _ courses _ program _ profile ), Ġnb C rs E ch ou es . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ number _ e quivalent _ courses _ program _ profile ), Ġnb E quival ences . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Profile Value Item ( app . getString ( R . string . label _ status _ program _ profile ), Ġstat ut )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }