package Ġcom . or ata k ashi . covid 1 9 . ui . hospital Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġbutter knife . OnClick Ċ import Ġcom . or ata k ashi . covid 1 9 . R Ċ import Ġcom . or ata k ashi . covid 1 9 . data . db . Database Ċ import Ġcom . or ata k ashi . covid 1 9 . data . model . local storage . Data Ho spital Ċ import Ġcom . or ata k ashi . covid 1 9 . root . App Ċ import Ġcom . or ata k ashi . covid 1 9 . ui . hospital . Ho spital State . Error Ċ import Ġcom . or ata k ashi . covid 1 9 . ui . hospital . Ho spital State . Loading Ċ import Ġcom . or ata k ashi . covid 1 9 . ui . hospital . Ho spital State . Result Ċ import Ġcom . or ata k ashi . covid 1 9 . ui . hospital . dialog . Ho spital Dialog Fragment Ċ import Ġcom . or ata k ashi . covid 1 9 . ui . hospital . dialog . Ho spital DialogInterface Ċ import Ġcom . or ata k ashi . covid 1 9 . utils . Utility Ċ import Ġdagger . android . support . D agger AppCompatActivity Ċ import Ġkotlinx . android . synt hetic . main . activity _ hospital .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠHo spital Activity Ġ: ĠD agger AppCompatActivity (), ĠHo spital Interface , ĠHo spital DialogInterface Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġview model Factory Ġ: ĠViewModel Provider . Factory ĊĊĠĠĠ Ġval Ġdata Ġ: ĠMutable List < Data Ho spital > Ġ= ĠArrayList () ĊĊĠĠĠ Ġval ĠviewModel Ġ: ĠHo spital ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this , Ġview model Factory ). get ( Ho spital ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġadapter Ġ: ĠHo spital Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHo spital Adapter ( data , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ hospital ) ĊĊĠĠĠĠĠĠĠ ĠB utter Kn ife . bind ( this ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. hide () ĊĊĠĠĠĠĠĠĠ Ġrv Ho spital . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġrv Ho spital . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . state . observe ( this , ĠObserver Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading Ġ Ġ-> Ġsr Ho spital . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult ĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . builder !!. delete ( Database . TABLE _ HO SP ITAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . async ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . cache Data ( it . data . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getCache () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsr Ho spital . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError ĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsr Ho spital . is Refresh ing Ġ= Ġfalse ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getCache () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" G agal Ġmem u at Ġdata Ġter bar u !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . cache . observe ( this , ĠObserver Ġ{ Ġcache Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . addAll ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsr Ho spital . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getData () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . setup Instant Search ( et Search ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selected ( data : ĠData Ho spital ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHo spital Dialog Fragment . newInstance ( data , Ġthis ). show ( support FragmentManager , Ġ" dialog ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selected ( menu : ĠString , Ġdata Ġ: ĠData Ho spital ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( menu ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" direction " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data . lat Ġ!= Ġnull Ġ&& Ġdata . lang Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ VIEW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" google . navigation : q =${ data . lat }, ${ data . lang }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( intent . resolve Activity ( package Manager )!= null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Tid ak Ġada Ġaplik asi ĠMap !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else ĠToast . makeText ( application Context , Ġ" L ok asi Ġtidak Ġd ik eta h ui !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data . phone Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ DI AL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" tel :${ data . phone }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else ĠToast . makeText ( application Context , Ġ" Nom or ĠTele pon Ġtidak Ġd ik eta h ui !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif ( viewModel . check Cache ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getCache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getData () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ OnClick ( R . id . iv Back ) Ġfun Ġon Back (){ ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ OnClick ( R . id . iv Search ) Ġfun Ġon Search Trigger (){ ĊĠĠĠĠĠĠĠ Ġll Header . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġrl Search . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġet Search . request Focus () ĊĠĠĠĠĠĠĠ ĠUtility . show Keyboard ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ OnClick ( R . id . iv Cancel ) Ġfun Ġon Cancel (){ ĊĠĠĠĠĠĠĠ Ġll Header . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġrl Search . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġet Search . setText ("") ĊĠĠĠĠĠĠĠ ĠUtility . dis mis Keyboard ( this ) ĊĠĠĠ Ġ} Ċ }