package Ġorg . w ats i . u hp . fragments Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġkotlinx . android . synt hetic . demo . fragment _ claims _ list . claims _ list Ċ import Ġkotlinx . android . synt hetic . demo . fragment _ claims _ list . total _ claims _ label Ċ import Ġkotlinx . android . synt hetic . demo . fragment _ claims _ list . total _ price _ label Ċ import Ġorg . th reet en . bp . Clock Ċ import Ġorg . w ats i . device . managers . Logger Ċ import Ġorg . w ats i . domain . relations . Encounter With Extras Ċ import Ġorg . w ats i . domain . use cases . Load Returned Claims UseCase Ċ import Ġorg . w ats i . u hp . R Ċ import Ġorg . w ats i . u hp . R . plurals . returned _ claims _ count Ċ import Ġorg . w ats i . u hp . R . string . returned _ claims _ count _ empty Ċ import Ġorg . w ats i . u hp . activities . Clin ic Activity Ċ import Ġorg . w ats i . u hp . adapters . Claim ListItem Adapter Ċ import Ġorg . w ats i . u hp . flow states . Encounter Flow State Ċ import Ġorg . w ats i . u hp . helpers . RecyclerView Helper Ċ import Ġorg . w ats i . u hp . helpers . Snackbar Helper Ċ import Ġorg . w ats i . u hp . managers . Navigation Manager Ċ import Ġorg . w ats i . u hp . utils . Currency Util Ċ import Ġorg . w ats i . u hp . view models . Search able Claims List ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠReturned Claims Fragment Ġ: ĠD agger Fragment () Ġ{ ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġnavigation Manager : ĠNavigation Manager ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġlogger : ĠLogger ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġclock : ĠClock ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġload Returned Claims UseCase : ĠLoad Returned Claims UseCase ĊĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠSearch able Claims List ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġclaims Adapter : ĠClaim ListItem Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġsn ackbar Message To Show : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPARAM _ SN ACK BAR _ MESSAGE Ġ= Ġ" sn ackbar _ message " ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Snackbar Message ( message : ĠString ): ĠReturned Claims Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠReturned Claims Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( PARAM _ SN ACK BAR _ MESSAGE , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Search able Claims List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġset And Ob serve ViewModel () ĊĊĠĠĠĠĠĠĠ Ġsn ackbar Message To Show Ġ= Ġarguments ?. getString ( PARAM _ SN ACK BAR _ MESSAGE ) ĊĠĠĠĠĠĠĠ Ġclaims Adapter Ġ= ĠClaim ListItem Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclock Ġ= Ġclock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Claim Selected Ġ= Ġ{ Ġencounter Relation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Manager . goTo ( Receipt Fragment . for Encounter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEn counter Flow State . from Encounter With Extras ( en counter Relation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset And Ob serve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobservable Ġ= ĠviewModel . get Observable ( load Returned Claims UseCase ) ĊĠĠĠĠĠĠĠ Ġobservable . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġview State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Claims ( view State . visible Claims ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Claims ( returned Claims : ĠList < Encounter With Extras >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtotal _ claims _ label . text Ġ= Ġif Ġ( returned Claims . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( returned _ claims _ count _ empty ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturned _ claims _ count , Ġreturned Claims . size , Ġreturned Claims . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtotal _ price _ label . text Ġ= ĠCurrency Util . format Money With Currency ( context , Ġreturned Claims . sum By Ġ{ Ġit . price () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġclaims Adapter . set Claims ( returned Claims ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠC lin ic Activity ). set Toolbar ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( org . w ats i . u hp . R . string . returned _ claims _ fragment _ label ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorg . w ats i . u hp . R . drawable . ic _ arrow _ back _ white _ 2 4 dp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater ?. inflate ( org . w ats i . u hp . R . layout . fragment _ claims _ list , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠRecyclerView Helper . set RecyclerView ( claims _ list , Ġclaims Adapter , Ġcontext , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġsn ackbar Message To Show ?. let Ġ{ Ġsn ackbar Message Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar Helper . show ( claims _ list , Ġcontext , Ġsn ackbar Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar Message To Show Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġmenu Inflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . clear () ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . claims _ search , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu . find Item ( R . id . search _ claims ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġsearch Item . action View Ġas ĠSearch View ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . filter Claim sBy Search Text ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Close Listener ( object Ġ: ĠSearch View . On Close Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClose (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . filter Claim sBy Search Text ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġsearch View . is Icon ified Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġrequired Ġfor Ġwhen Ġthe Ġuser Ġback Ġnavig ates Ġinto Ġthis Ġscreen ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġobservable Ġdoes Ġnot Ġtrigger , Ġso Ġwe Ġneed Ġto Ġset Ġthe Ġadapter Ġfrom Ġthe ĠviewModel ĊĠĠĠĠĠĠĠ ĠviewModel . get Claims ()?. let Ġ{ Ġupdate Claims ( it . first ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ