package Ġpl . pat ry k . my hair d ress er . ui . app ointments . registration Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġpl . pat ry k . my hair d ress er . data . model . Appointment Date Ċ import Ġpl . pat ry k . my hair d ress er . data . model . User Ċ import Ġpl . pat ry k . my hair d ress er . data . repository . UserRepository Ċ Ċ class ĠAppointment Registration ViewModel ( private Ġval Ġrepository : ĠUser Repository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval ĠuserId Ġby Ġlazy Ġ{ Ġrepository . current UserId () Ġ} ĊĠĠĠ Ġval Ġuser Reference Ġby Ġlazy Ġ{ Ġrepository . getUser Reference ( userId !! ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġuser LiveData : ĠMutable LiveData < User > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < User >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload User () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser (): ĠLive Data < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser LiveData ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload User () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Reference . addListener For Single Value Event ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser : ĠUser Ġ= Ġdata Snapshot . getValue ( User :: class . java ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser LiveData . post Value ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser App ointments Reference ( uid : ĠString ) Ġ= Ġrepository . getUser App ointments Reference ( uid ) ĊĠĠĠ Ġfun Ġget Available Hours From Day Reference ( date : ĠString ) Ġ= Ġrepository . get Available Hours From Day Reference ( date ) ĊĠĠĠ Ġfun Ġbook AD ate ( date : ĠString , Ġkey : ĠString , Ġappointment Date : ĠAppointment Date ) Ġ= Ġrepository . book AD ate ( date , Ġkey , Ġappointment Date ) Ċ }