package Ġcom . fest cap Ċ Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Context Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database .* Ċ import Ġcom . fest cap . data . Data Keys Ċ import Ġcom . fest cap . data . F est Ċ import Ġcom . fest cap . data . Head Count Ċ import Ġcom . fest cap . data . Venue Ċ import Ġcom . fest cap . databinding . Fragment F est Drawer Binding Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ class ĠF est Drawer Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment F est Drawer Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠV en ue Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġven ues ViewModel : ĠV en ues ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġhead Counts Ref : ĠDatabase Reference Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Database . getInstance (). getReference ( Data Keys . HEAD COUNT S ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġven ues Ref : ĠDatabase Reference Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Database . getInstance (). getReference ( Data Keys . VEN UES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfest Ref : ĠDatabase Reference Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Database . getInstance (). getReference ( Data Keys . F EST S ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfest Id Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġarguments . getString ( ARG _ F EST _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġven ues ViewModel Ġ= ĠViewModel Providers . of ( context Ġas ĠAppCompatActivity ). get ( Ven ues ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup , ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ fest _ drawer , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġbinding . fest Name Tv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( F ests Activity . create Intent ( activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . recycler . layout Manager Ġ= ĠLinearLayoutManager ( container . context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠV en ue Adapter ( Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Edit Venue Activity . generate New Intent ( activity , ĠV en ue ( fest Id Ġ= Ġfest Id ))) ĊĊĠĠĠĠĠĠĠ Ġ}). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recycler . adapter Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġven ues Ref . add Value EventListener ( venue Data Listener ) ĊĠĠĠĠĠĠĠ Ġfest Ref . add Value EventListener ( fest Data Listener ) ĊĠĠĠĠĠĠĠ Ġhead Counts Ref . add Value EventListener ( head Count Data Listener ) ĊĠĠĠĠĠĠĠ Ġven ues ViewModel . venue Id . observe ( this . activity Ġas ĠAppCompatActivity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . selected Venue Id Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġven ues Ref . removeEventListener ( venue Data Listener ) ĊĠĠĠĠĠĠĠ Ġfest Ref . removeEventListener ( fest Data Listener ) ĊĠĠĠĠĠĠĠ Ġhead Counts Ref . removeEventListener ( head Count Data Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġven ue Data Listener Ġ= Ġobject Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . ven ues Ġ= Ġsnapshot ?. children ?. map NotNull Ġ{ Ġit . getValue ( Venue :: class . java ) Ġ} ?. filter Ġ{ Ġit . fest Id Ġ== Ġfest Id Ġ} ?. sorted By Ġ{ Ġit . name Ġ} Ġ?: Ġempty List < Venue >() ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( e : ĠDatabase Error ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Database Ġconnection Ġerror !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfest Data Listener Ġ= Ġobject Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsnapshot ?. children ?. map NotNull Ġ{ Ġit . getValue ( F est :: class . java ) Ġ} ?. find Ġ{ Ġit . id Ġ== Ġfest Id Ġ} ?. let Ġ{ fest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . fest Name Tv . text Ġ= Ġfest . name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġallow Create Venue Ġ= ĠFirebase Auth . getInstance (). currentUser ?. uid ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfest . admin Ids . containsKey ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . allow Create Ġ= Ġallow Create Venue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( e : ĠDatabase Error ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Database Ġconnection Ġerror !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhead Count Data Listener Ġ= Ġobject Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . head Counts Ġ= Ġsnapshot ?. children ?. map NotNull Ġ{ Ġit . getValue ( Head Count :: class . java ) Ġ} ?. associate By ({ Ġit . id Ġ}) Ġ?: Ġempty Map () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( e : ĠDatabase Error ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Database Ġconnection Ġerror !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ F EST _ ID Ġ= Ġ" ARG _ F EST _ ID " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( fest Id : ĠString ) Ġ= ĠF est Drawer Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ Ġput String ( ARG _ F EST _ ID , Ġfest Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }