package Ġcom . mt jin . nom oney trip . views . reservation _ phase _ first Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . mt jin . nom oney trip . base . Base ViewModel Ċ import Ġcom . mt jin . nom oney trip . data . home . Product Ċ import Ġcom . mt jin . nom oney trip . data . reservation . Reservation Ċ import Ġcom . mt jin . nom oney trip . data . reservation _ phase _ first . source . Reservation Phase First Repository Ċ import Ġcom . mt jin . nom oney trip . utils .* Ċ import Ġcom . mt jin . nom oney trip . utils . extensions . convert Date To Timestamp Ċ import Ġcom . mt jin . nom oney trip . utils . extensions . convert Timestamp To Day Ċ import Ġcom . mt jin . nom oney trip . utils . extensions . convert Timestamp To Point Full Date Ċ import Ġcom . pro l ific interactive . material calendar view . Calendar Day Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠReser vation Phase First ViewModel ( private Ġval Ġrepository : ĠReser vation Phase First Repository ) Ġ: ĊĠĠĠ ĠBase ViewModel () Ġ{ ĊĠĠĠ Ġvar Ġis Date Selected Ġ= Ġfalse ĊĠĠĠ Ġvar Ġstart DateTime stamp : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġend DateTime stamp : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġselected Option : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġ_ show Calendar Ġ= ĠMutable LiveData < Boolean >( false ) ĊĠĠĠ Ġprivate Ġval Ġ_ date Range Ġ= ĠMutable LiveData < String >(" ëĤ ł ì§ ľ ë¥¼ ĠìĦłíĥĿ íķ´ ì£¼ ìĦ¸ìļĶ ") ĊĠĠĠ Ġprivate Ġval Ġ_ day Range Ġ= ĠMutable LiveData < String >(" ") ĊĠĠĠ Ġprivate Ġval Ġ_ date List Ġ= ĠMutable LiveData < ArrayList < Reservation >>() ĊĠĠĠ Ġprivate Ġval Ġ_ go Reservation Ġ= ĠSingle Live Event < Unit >() ĊĠĠĠ Ġprivate Ġval Ġ_ num Ġ= ĠMutable LiveData < String >(" 1 ") ĊĠĠĠ Ġprivate Ġval Ġ_ option 1 Ġ= ĠMutable LiveData < Boolean >( false ) ĊĠĠĠ Ġprivate Ġval Ġ_ option 2 Ġ= ĠMutable LiveData < Boolean >( false ) ĊĠĠĠ Ġprivate Ġval Ġ_ all Selected Ġ= ĠMutable LiveData < Boolean >( false ) ĊĠĠĠ Ġprivate Ġval Ġis All Selected : ĠBoolean Ġget () Ġ= Ġ( is Date Selected Ġ&& Ġ( option 1 . value Ġ== Ġtrue Ġ|| Ġoption 2 . value Ġ== Ġtrue )) ĊĊĠĠĠ Ġval Ġshow Calendar : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ show Calendar ĊĠĠĠ Ġval Ġdate Range : ĠLive Data < String > Ġget () Ġ= Ġ_ date Range ĊĠĠĠ Ġval Ġday Range : ĠLive Data < String > Ġget () Ġ= Ġ_ day Range ĊĠĠĠ Ġval Ġdate List : ĠLive Data < ArrayList < Reservation >> Ġget () Ġ= Ġ_ date List ĊĠĠĠ Ġval Ġgo Reservation : ĠLive Data < Unit > Ġget () Ġ= Ġ_ go Reservation ĊĠĠĠ Ġval Ġnum : ĠLive Data < String > Ġget () Ġ= Ġ_ num ĊĠĠĠ Ġval Ġoption 1 : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ option 1 ĊĠĠĠ Ġval Ġoption 2 : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ option 2 ĊĠĠĠ Ġval Ġall Selected : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ all Selected ĊĊĠĠĠ Ġfun Ġshow Calendar () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ show Calendar . value Ġ= Ġ! (_ show Calendar . value ) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnum Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ num . value Ġ= Ġ(_ num . value !!. toInt () Ġ+ Ġ 1 ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnum Down () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ num . value !!. toInt () Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ num . value Ġ= Ġ(_ num . value !!. toInt () Ġ- Ġ 1 ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoption 1 Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( option 1 . value Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ option 1 . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ option 1 . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ option 2 . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset All Selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoption 2 Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( option 2 . value Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ option 2 . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ option 2 . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ option 1 . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset All Selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset All Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ all Selected . value Ġ= Ġis All Selected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Reservation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is All Selected ) Ġ_ go Reservation . call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Reser v ations ( product : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . request Reser v ations ( product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ date List . value Ġ= Ġit Ġas ĠArrayList < Reservation > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Reservation Phase First ViewModel Ġrequest Reser v ations () ĠError Ġ-> Ġ$ it " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Dates Available ( dates : ĠList < Calendar Day >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( date Ġin Ġdates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( reserved Date Ġin Ġdate List . value !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Date To Timestamp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ year Ġ= Ġdate . year , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ month Ġ= Ġdate . month , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ day Ġ= Ġdate . day ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ< Ġreserved Date . end DateTime stamp Ġ&& Ġit Ġ>= Ġreserved Date . start DateTime stamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Date Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset All Selected () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Start DateTime stamp ( date : ĠCalendar Day ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart DateTime stamp Ġ= Ġconvert Date To Timestamp ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ year Ġ= Ġdate . year , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ month Ġ= Ġdate . month , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ day Ġ= Ġdate . day ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset End DateTime stamp ( date : ĠCalendar Day ) Ġ{ ĊĠĠĠĠĠĠĠ Ġend DateTime stamp Ġ= Ġconvert Date To Timestamp ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ year Ġ= Ġdate . year , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ month Ġ= Ġdate . month , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ day Ġ= Ġdate . day ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Single DateRange () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ date Range . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart DateTime stamp . convert Timestamp To Point Full Date () ĊĠĠĠĠĠĠĠ Ġ_ day Range . value Ġ= Ġ" 0 ë° ķ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset DateRange () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ date Range . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart DateTime stamp . convert Timestamp To Point Full Date () Ġ+ Ġ"~ " Ġ+ Ġend DateTime stamp . convert Timestamp To Point Full Date () ĊĠĠĠĠĠĠĠ Ġ_ day Range . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( end DateTime stamp . convert Timestamp To Day () Ġ- Ġstart DateTime stamp . convert Timestamp To Day ()). toString () Ġ+ Ġ" ë° ķ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit DateRange () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ date Range . value Ġ= Ġ" ëĤ ł ì§ ľ ë¥¼ ĠìĦłíĥĿ íķ´ ì£¼ ìĦ¸ìļĶ " ĊĠĠĠĠĠĠĠ Ġ_ day Range . value Ġ= Ġ"" ĊĠĠĠ Ġ} Ċ }