package Ġcom . mar co sv br as . rob om ark et . flows . dialog Ċ Ċ import Ġandroid . databinding . Observable Ċ import Ġandroid . databinding . Observable Field Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . mar co sv br as . rob om ark et . R Ċ import Ġcom . mar co sv br as . rob om ark et . business . beans . Item Robot Quantity Ċ import Ġcom . mar co sv br as . rob om ark et . utils . Error Observable Ċ import Ġcom . mar co sv br as . rob om ark et . app . Base ViewModel Ċ Ċ class ĠSale Dialog ViewModel ( private Ġval Ġitem Robot Quantity : ĠItem Robot Quantity ?, Ġprivate Ġval Ġdialog Form Actions : ĠDialog Form Actions ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġitem Quantity Ġ= ĠObservable Field (" 1 ") ĊĠĠĠ Ġval Ġtotal Value Ġ= ĠObservable Field (" Total : Ġ$ Ġ 0 ") ĊĠĠĠ Ġval Ġmodel Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġerror Ġ= ĠError Observable () ĊĠĠĠ Ġprivate Ġvar Ġdialog Actions : ĠDialog Actions ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprepare Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Actions ( dialog Actions : ĠDialog Actions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . dialog Actions Ġ= Ġdialog Actions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Robot Quantity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . set ( item Robot Quantity . robot . model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Quantity . add On PropertyChanged Callback ( on Quantity Changed ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Robot Quantity . item Quantity Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Quantity . set ( item Robot Quantity . item Quantity . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Quantity Changed (): ĠObservable . On PropertyChanged Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠObservable . On PropertyChanged Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon PropertyChanged ( sender : ĠObservable , Ġproperty Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Total Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġincrease Quantity () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( item Quantity . get ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Quantity . set (" 1 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġquantity Int Ġ= ĠInteger . parseInt ( item Quantity . get () !! ) ĊĠĠĠĠĠĠĠ Ġitem Quantity . set (( quantity Int Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠĠĠ Ġupdate Total Value () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrease Quantity () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( item Quantity . get ()) Ġ|| Ġitem Quantity . get () Ġ== Ġ" 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Quantity . set (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġquantity Int Ġ= Ġitem Quantity . get () !!. toInt () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( quantity Int Ġ> Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Int -- ĊĊĠĠĠĠĠĠĠ Ġitem Quantity . set ( quantity Int . toString ()) ĊĠĠĠĠĠĠĠ Ġupdate Total Value () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Item () Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Form Actions . on Remove ( item Robot Quantity !! ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Item () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Stock ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Robot Quantity !!. item Quantity Ġ= Ġif Ġ( TextUtils . isEmpty ( item Quantity . get ())) Ġ 0 Ġelse ĠInteger . valueOf ( item Quantity . get () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Form Actions . on Save ( item Robot Quantity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish () Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Actions ?. on Finished () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Total Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( item Quantity . get ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Value . set (" Total : Ġ$ Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġitem Quantity . get ()?. toInt ()?. times ( item Robot Quantity ?. robot ?. price !! ) ĊĠĠĠĠĠĠĠ Ġtotal Value . set (" Total : Ġ$ Ġ" Ġ+ Ġvalue . toString ()) ĊĠĠĠĠĠĠĠ Ġcheck Stock () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Stock (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquantity Int Ġ= Ġif Ġ( TextUtils . isEmpty ( item Quantity . get ())) Ġ 0 Ġelse Ġitem Quantity . get ()?. toInt () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( quantity Int !! Ġ> Ġitem Robot Quantity ?. robot ?. quantity !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . error Resource Ġ= ĠR . string . error _ stock _ not _ en ough ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcleanup Subscriptions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcleanup Subscriptions () Ġ{ ĊĊĠĠĠ Ġ} Ċ }