package Ġcom . al vin h kh . bu set a . route . ui Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . al vin h kh . bu set a . arrival time . dao . Arrival Time Database Ċ import Ġcom . al vin h kh . bu set a . follow . dao . Follow Database Ċ import Ġcom . al vin h kh . bu set a . route . dao . Route Database Ċ import Ġcom . al vin h kh . bu set a . route . model . Route Stop Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠRoute Stop List ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġar rival Time Database Ġ= ĠAr rival Time Database . getInstance ( application ) ĊĊĠĠĠ Ġprivate Ġval Ġfollow Database Ġ= ĠFollow Database . getInstance ( application ) ĊĊĠĠĠ Ġprivate Ġval Ġroute Database Ġ= ĠRoute Database . getInstance ( application ) ĊĊĠĠĠ Ġfun Ġlive Data ( company Code : ĠString , Ġroute Id : ĠString , Ġroute No : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Sequence : ĠString , Ġroute ServiceType : ĠString ): ĠLive Data < Mutable List < Route Stop >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMutable LiveData < Mutable List < Route Stop >>() ĊĠĠĠĠĠĠĠ Ġresult . value Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute Database ?. route Stop Dao ()?. live Data ( company Code , Ġroute Id , Ġroute No , Ġroute Sequence , Ġroute ServiceType )?. observe Fore ver Ġ{ Ġroute Stop List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf < Route Stop >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop List . forEach Ġ{ Ġroute Stop Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar rival Time Database ?. arrival Time Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get LiveData ( route Stop . company Code ? :" ", Ġroute Stop . route No ? :" ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . route Sequence ? :" ", Ġroute Stop . stop Id ? :" ", Ġroute Stop . sequence ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . observe Fore ver Ġ{ Ġet as Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . et as Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet as . forEach Ġ{ Ġeta Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( eta . updatedAt Ġ> ĠSystem . currentTimeMillis () Ġ- Ġ 6 0 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . et as Ġ+= Ġeta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfollow Database ?. follow Dao ()?. live Count ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . company Code ? :" ", Ġroute Stop . route No ? :" ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . route Sequence ? :" ", Ġroute Stop . route ServiceType ? :" ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . stop Id ? :" ", Ġroute Stop . sequence ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . observe Fore ver Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Stop . is Follow Ġ= Ġcount Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( route Stop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }