/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠN ECT EC Ċ Ġ* ĠĠ ĠNational ĠElectron ics Ġand ĠComputer ĠTechnology ĠCenter , ĠTh ail and Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġf fc . app . health . service . community Ċ Ċ import Ġandroid . content . Context Ċ import Ġf fc . android . connectivity Manager Ċ import Ġf fc . api . Api ErrorException Ċ import Ġf fc . api . F fc Central Ċ import Ġf fc . app . isConnected Ċ import Ġf fc . app . util . Repo Callback Ċ import Ġf fc . entity . gson . parse To Ċ import Ġf fc . entity . gson . toJson Ċ import Ġf fc . entity . health care . Community Service Ċ import Ġretrofit 2 . dsl . enqueue Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ interface ĠCommunity Service Types Ġ{ ĊĊĠĠĠ Ġfun Ġall ( callback Dsl : ĠRepo Callback < List < Community Service . ServiceType >> . () Ġ-> ĠUnit ) Ċ } Ċ Ċ internal Ġfun Ġcommunity Service Types ( context : ĠContext ): ĠCommunity Service Types Ġ= ĠCommunity Service Types Impl ( context ) Ċ Ċ private Ġclass ĠCommunity Service Types Impl ( val Ġcontext : ĠContext ) Ġ: ĠCommunity Service Types Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlocal File Ġ= ĠFile ( context . files Dir , Ġ" home visit type . json ") ĊĠĠĠ Ġprivate Ġval Ġapi Ġby Ġlazy Ġ{ ĠF fc Central (). service < Community Services Api >() Ġ} ĊĠĠĠ Ġprivate Ġvar Ġloading Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġtmp Callback : ĠRepo Callback < List < Community Service . ServiceType >> ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( service Type . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . connectivity Manager . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi . get Home Health Service (). enqueue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalways Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Callback ?. always ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Type Ġ= Ġbody () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Callback ?. on Found ?. invoke ( service Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal File . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal File . write Text ( service Type . toJson ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Callback ?. on Fail !!. invoke ( Api ErrorException ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Callback ?. on Fail !!. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( local File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Type Ġ= Ġlocal File . read Text (). parse To () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġall ( callback Dsl : ĠRepo Callback < List < Community Service . ServiceType >> . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= ĠRepo Callback < List < Community Service . ServiceType >> (). apply ( callback Dsl ) ĊĠĠĠĠĠĠĠ Ġif Ġ( loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Callback Ġ= Ġcallback ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . always ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service Type . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Found !!. invoke ( service Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on NotFound !!. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġservice Type Ġ= ĠlistOf < Community Service . ServiceType >() ĊĠĠĠ Ġ} Ċ } Ċ