package Ġcom . pix ie ium . a ust travel s . routes Ċ Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . k tx . database Ċ import Ġcom . google . firebase . database . k tx . getValue Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . pix ie ium . a ust travel s . models . Bus Info Ċ import Ġcom . pix ie ium . a ust travel s . models . Bus Timing Ċ import Ġcom . pix ie ium . a ust travel s . models . Route Ċ import Ġkotlinx . coroutines . tasks . await Ċ Ċ class ĠRoutes Repository Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġfetch Route List ( bus Name : ĠString , Ġbus Time : ĠString ): ĠArrayList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠFirebase . database ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot Ġ= Ġdatabase . getReference (" bus /$ bus Name /$ bus Time / routes "). get (). await () ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠArrayList < Route > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( snap : ĠData Snapshot Ġin Ġsnapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsnap . getValue < Route >() ?. let Ġ{ Ġlist . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println ( snap . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġfetch All Bus Info (): ĠArrayList < Bus Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġa Ġmessage Ġto Ġthe Ġdatabase ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠFirebase . database ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot Ġ= Ġdatabase . getReference (" available Bus Info "). get (). await () ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠArrayList < Bus Info > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġiterate Ġover Ġthe Ġtiming ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( snap : ĠData Snapshot Ġin Ġsnapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbus Info Ġ= ĠBus Info () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbus Info . name Ġ= Ġsnap . key . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist 2 : ĠArrayList < Bus Timing > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( snap 1 : ĠData Snapshot Ġin Ġsnap . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsnap 1 . getValue < Bus Timing >() ?. let Ġ{ Ġlist 2 . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbus Info . timing Ġ= Ġlist 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( bus Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// println ( list ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} Ċ Ċ }