package Ġca . bc . gov . b che alth . ui . health record . v accine Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . lifecycle . repeat On Lifecycle Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġca . bc . gov . b che alth . R Ċ import Ġca . bc . gov . b che alth . databinding . Fragment V accine Record Detail Binding Ċ import Ġca . bc . gov . b che alth . ui . Base Fragment Ċ import Ġca . bc . gov . b che alth . ui . health pass . add . Fetch V accine Record Fragment Ċ import Ġca . bc . gov . b che alth . utils . AlertDialog Helper Ċ import Ġca . bc . gov . b che alth . utils . view Bindings Ċ import Ġca . bc . gov . common . model . Authentication Status Ċ import Ġca . bc . gov . common . model . Imm un ization Status Ċ import Ġca . bc . gov . common . utils . to DateTime String Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Android EntryPoint Ċ class ĠV accine Record Detail Fragment Ġ: ĠBase Fragment ( R . layout . fragment _ v accine _ record _ detail ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Bindings ( Fragment V accine Record Detail Binding :: bind ) ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠV accine Record Detail Fragment Args Ġby Ġnav Args () ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠV accine Record Detail ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠV accine Details Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġv accine Record Id : ĠLong Ġ= Ġ- 1 L ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmenu In fl ated : ĠMenu ĊĠĠĠ Ġoverride Ġfun Ġset ToolBar ( app Bar Configuration : ĠApp Bar Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding . layout Toolbar . top AppBar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation Icon ( R . drawable . ic _ toolbar _ back ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( find Nav Controller (). previous Back Stack Entry ?. destination ?. id Ġ== ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fetch V accine Record Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). previous Back Stack Entry ?. saved State Handle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFetch V accine Record Fragment . V ACC INE _ RECORD _ AD DED _ SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . patient Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . v acc ination _ record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinf late Menu ( R . menu . menu _ details _ page _ delete ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu In fl ated Ġ= Ġmenu ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener Ġ{ Ġmenu Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( menu . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog Helper . show AlertDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . delete _ hc _ record _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Ġ= ĠgetString ( R . string . delete _ individual _ v accine _ record _ message ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Btn Msg Ġ= ĠgetString ( R . string . delete ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Btn Msg Ġ= ĠgetString ( R . string . not _ now ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Btn Callback Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete V accine Record ( v accine Record Id ). invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠsetUp RecyclerView () ĊĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle . repeat On Lifecycle ( Lifecycle . State . STARTED ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . ui State . collect Ġ{ Ġstate Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . isVisible Ġ= Ġstate . on Loading ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . on V accine Record Dto Detail ?. let Ġ{ Ġpatient And V accine Record Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatient And V accine Record . v accine With Do ses ?. v accine ?. id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv accine Record Id Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu In fl ated . getItem ( 0 ). isVisible Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatient And V accine Record . patient . authentication Status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠAuthentication Status . AUTHENT IC ATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv FullName . text Ġ= Ġpatient And V accine Record . patient . fullName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Issue Date . text Ġ= ĠgetString ( R . string . iss ued _ on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatient And V accine Record . v accine With Do ses ?. v accine ?. qr Issue Date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . to DateTime String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatient And V accine Record . v accine With Do ses ?. v accine ?. status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġstatus Ġ-> Ġset Ui State ( status ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpatient And V accine Record . v accine With Do ses ?. do ses ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġdo ses Ġ-> Ġadapter . submit List ( do ses ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . get V accine Record Details ( args . patient Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp RecyclerView () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠV accine Details Adapter () ĊĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġbinding . rv V accine List ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Ui State ( im mun ization Status : ĠImm un ization Status ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpartially V acc inated Color Ġ= Ġresources . getColor ( R . color . status _ blue , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġfully V acc inated Color Ġ= Ġresources . getColor ( R . color . status _ green , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġin Valid Color Ġ= Ġresources . getColor ( R . color . grey , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= Ġin Valid Color ĊĠĠĠĠĠĠĠ Ġvar Ġstatus Text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġwhen Ġ( im mun ization Status ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠImm un ization Status . PAR TI ALLY _ IM M UN IZED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġpartially V acc inated Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Text Ġ= ĠgetString ( R . string . part ially _ v acc inated ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv V accine Status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Compound Draw ables With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠImm un ization Status . FULL Y _ IM M UN IZED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġfully V acc inated Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Text Ġ= ĠgetString ( R . string . v acc inated ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv V accine Status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Compound Draw ables With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ check _ mark , Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠImm un ization Status . INVALID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġin Valid Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Text Ġ= ĠgetString ( R . string . no _ record ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv V accine Status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Compound Draw ables With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . tv V accine Status . text Ġ= Ġstatus Text ĊĊĠĠĠĠĠĠĠ Ġbinding . view Status . set BackgroundColor ( color ) ĊĠĠĠ Ġ} Ċ } Ċ