package Ġcom . example . cup cake . model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ private Ġconst Ġval ĠPR ICE _ PER _ CUP CA KE Ġ= Ġ 2 . 0 0 Ċ private Ġconst Ġval ĠPR ICE _ FOR _ SAME _ DAY _ P ICK UP Ġ= Ġ 3 . 0 0 Ċ Ċ class ĠOrder ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ quantity : ĠMutable LiveData < Int > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġquantity : ĠLive Data < Int > Ġget () Ġ= Ġ_ quantity ĊĊĠĠĠ Ġprivate Ġval Ġ_ fl avour : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġfl avour : ĠLive Data < String > Ġget () Ġ= Ġ_ fl avour ĊĊĠĠĠ Ġprivate Ġval Ġ_ date : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġdate : ĠLive Data < String > Ġget () Ġ= Ġ_ date ĊĊĠĠĠ Ġprivate Ġval Ġ_ price : ĠMutable LiveData < Double > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġprice : ĠLive Data < Double > Ġget () Ġ= Ġ_ price ĊĊĠĠĠ Ġval Ġdate Options Ġ= Ġget Pickup Options () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġreset Order () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Quantity ( number Cup c akes : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ quantity . value Ġ= Ġnumber Cup c akes ĊĠĠĠĠĠĠĠ Ġupdate Price () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Fl avour ( desired Fl avour : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ fl avour . value Ġ= Ġdesired Fl avour ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Date ( pickup Date : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ date . value Ġ= Ġpick up Date ĊĠĠĠĠĠĠĠ Ġupdate Price () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas No Fl avour () Ġ= Ġ_ fl avour . value . isNull OrEmpty () ĊĊĠĠĠ Ġprivate Ġfun Ġget Pickup Options (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat (" EEE , ĠM MM Ġd ", ĠLocale . US ) ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġrepeat ( 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . add ( formatter . format ( calendar . time )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . add ( Calendar . DATE , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Order () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ quantity . value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ_ fl avour . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ_ date . value Ġ= Ġdate Options [ 1 ] ĊĠĠĠĠĠĠĠ Ġ_ price . value Ġ= Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Price () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Price Ġ= Ġ( quantity . value Ġ?: Ġ 0 ) Ġ* ĠPR ICE _ PER _ CUP CA KE ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġuser Ġselected Ġthe Ġfirst Ġoption Ġ( today ) Ġfor Ġpick up , Ġadd Ġthe Ġsur charge ĊĠĠĠĠĠĠĠ Ġif Ġ( date Options [ 0 ] Ġ== Ġ_ date . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Price Ġ+= ĠPR ICE _ FOR _ SAME _ DAY _ P ICK UP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ price . value Ġ= Ġcalculated Price ĊĠĠĠ Ġ} Ċ } Ċ