/* Ċ Ġ* ĠAW IS : ĠAd venture ĠWorks ĠInformation ĠSystems , ĠAndroid ĠApp Ċ Ġ* ĠCreated Ġfor Ġthe ĠMM 5 4 3 - 0 9 0 0 - 3 - 2 0 2 0 Ġcourse . Ċ Ġ* ĠTeam : ĠT ob ias ĠBr iones , ĠJ uan ĠV are la Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠT ob ias ĠBr iones . Ċ Ġ* Ċ Ġ* ĠThis Ġsource Ġcode Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense Ġfound Ġin Ġthe Ċ Ġ* ĠLICENSE Ġfile Ġin Ġthe Ġroot Ġdirectory Ġof Ġthis Ġsource Ġtree . Ċ Ġ*/ Ċ Ċ package Ġcom . mm 5 4 3 . aw is . ui . product Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . mm 5 4 3 . aw is . R Ċ import Ġcom . mm 5 4 3 . aw is . domain . model . Product Ċ import Ġcom . mm 5 4 3 . aw is . domain . model . shopping . Cart Ċ import Ġcom . mm 5 4 3 . aw is . domain . model . shopping . Cart Item Ċ import Ġcom . mm 5 4 3 . aw is . domain . use case . Add Product To Cart UseCase Ċ import Ġcom . mm 5 4 3 . aw is . repository . App Cart Repository Ċ import Ġcom . mm 5 4 3 . aw is . ui . checkout . Checkout Activity Ċ import Ġkotlinx . android . synt hetic . main . content _ product .* Ċ Ċ class ĠProduct Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcart Repository Ġ= ĠApp Cart Repository ( this ) ĊĠĠĠ Ġprivate Ġvar Ġproduct : ĠProduct ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġextras Ġ= Ġintent . extras ĊĠĠĠĠĠĠĠ Ġproduct Ġ= Ġextras ?. get Serializable (" product ") Ġas ĠProduct ? ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ product ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . toolbar )) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . product , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġnavigate Back () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ shopping _ cart Ġ-> Ġstart Checkout Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon AddTo Cart Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaddTo Cart UseCase Ġ= ĠAdd Product To Cart UseCase ( cart Repository ) ĊĠĠĠĠĠĠĠ Ġval Ġquantity Ġ= Ġget Quantity () ĊĊĠĠĠĠĠĠĠ Ġproduct ?. let Ġ{ ĠaddTo Cart UseCase . execute ( it , Ġquantity ) Ġ} ĊĠĠĠĠĠĠĠ Ġshow Product Added To Cart Successfully Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Increment Quantity Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Quantity Ġ= Ġget Quantity () Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġset Quantity ( new Quantity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon De crement Quantity Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Quantity Ġ= Ġget Quantity () Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġset Quantity ( new Quantity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Quantity (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquantity Str Ġ= Ġproduct _ quantity _ edit _ text . text . toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Str . toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Quantity ( quantity : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( quantity Ġ< Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġquantity Str Ġ= Ġquantity . toString () ĊĠĠĠĠĠĠĠ Ġproduct _ quantity _ edit _ text . setText ( quantity Str ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cart (): ĠCart Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠApp Cart Repository ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . set ( Cart ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġincrement _ quantity _ button . setOnClickListener Ġ{ Ġon Increment Quantity Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġdecrement _ quantity _ button . setOnClickListener Ġ{ Ġon De crement Quantity Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġadd _ to _ cart _ button . setOnClickListener Ġ{ Ġon AddTo Cart Button Click () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġproduct _ name _ text . text Ġ= Ġproduct ?. name ĊĠĠĠĠĠĠĠ Ġproduct _ code _ text . text Ġ= Ġproduct ?. product Number . toString () ĊĠĠĠĠĠĠĠ Ġproduct _ color _ text . text Ġ= Ġproduct ?. color . toString () ĊĠĠĠĠĠĠĠ Ġproduct _ price _ text . text Ġ= Ġproduct ?. list Price . toString () ĊĊĠĠĠĠĠĠĠ Ġproduct _ size _ text . text Ġ= Ġ" Big " ĊĠĠĠĠĠĠĠ Ġproduct _ weight _ text . text Ġ= Ġ" 1 0 0 lb " ĊĠĠĠĠĠĠĠ Ġupdate Product Quantity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Product Quantity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcart Ġ= Ġget Cart () ĊĠĠĠĠĠĠĠ Ġval Ġproduct Cart Item : ĠCart Item ? Ġ= Ġproduct ?. let Ġ{ Ġcart . find Item Of ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( product Cart Item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Quantity ( product Cart Item . quantity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Quantity ( Cart . DEF _ PRODUCT _ QU ANT ITY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Checkout Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠCheckout Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Product Added To Cart Successfully Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ"${ get Quantity ()} Ġ${ product ?. name } Ġadded Ġto Ġthe Ġcart " ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} Ċ } Ċ