/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAr pan ĠS ark ar Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġdev . arp an . e commerce . mock Ċ Ċ import Ġdev . arp an . e commerce . data . model . AddTo Cart Ċ import Ġdev . arp an . e commerce . data . model . Cart Item Ċ import Ġdev . arp an . e commerce . data . model . Filter Ċ import Ġdev . arp an . e commerce . data . model . Product Category Ċ import Ġdev . arp an . e commerce . data . model . Product Details Ċ import Ġdev . arp an . e commerce . data . model . Product Item Ċ import Ġdev . arp an . e commerce . data . model . Selected Filter Options Ċ import Ġdev . arp an . e commerce . data . source . remote . Products Remote DataSource Ċ Ċ class ĠFake Products Remote DataSource () Ġ: ĠProducts Remote DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmock Products Ġ= Ġmutable ListOf < Product Info >() ĊĠĠĠ Ġprivate Ġval Ġmock Categories Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠProduct Category ( name Ġ= Ġ" Top ĠW ear ", Ġ" top _ we ar "), ĊĠĠĠĠĠĠĠ ĠProduct Category ( name Ġ= Ġ" Bottom ĠW ear ", Ġ" bottom _ we ar ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠProduct Info ( ĊĠĠĠĠĠĠĠ Ġval ĠproductId : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġproduct Name : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġprice : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġm rp : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġdiscount : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġcategory : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġimage Urls : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġvar Ġtag : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġis Wish List ed : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġin Sto ke : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġrating : ĠDouble , ĊĠĠĠĠĠĠĠ Ġval Ġavailable Size : ĠList < String > Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġto Product Item () Ġ= ĠProduct Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠproductId Ġ= ĠproductId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Name Ġ= Ġproduct Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġprice , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm rp Ġ= Ġm rp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiscount Ġ= Ġdiscount , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġcategory , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= Ġtag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Wish List ed Ġ= Ġis Wish List ed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Sto ke Ġ= Ġin Sto ke ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġto Product Details ( suggest ed : ĠList < Product Item >) Ġ= ĠProduct Details ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠproductId Ġ= ĠproductId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Name Ġ= Ġproduct Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġprice , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm rp Ġ= Ġm rp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiscount Ġ= Ġdiscount , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Urls Ġ= Ġimage Urls , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Wish List ed Ġ= Ġis Wish List ed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Sto ke Ġ= Ġin Sto ke , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Ġ= Ġrating , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Size Ġ= Ġavailable Size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggested Products Ġ= Ġsuggested ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġto Cart Item ( selected Size : ĠString ?) Ġ= ĠCart Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠproductId Ġ= ĠproductId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Name Ġ= Ġproduct Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġprice , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm rp Ġ= Ġm rp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiscount Ġ= Ġdiscount , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġimage Urls [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Size Ġ= Ġselected Size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Sto ke Ġ= Ġin Sto ke ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcart Products Ġ= Ġmutable Set Of < AddTo Cart >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Products . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProduct Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠproductId Ġ= Ġi . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Name Ġ= Ġ" Product Ġ# ${ i Ġ+ Ġ 1 }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġ" 5 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm rp Ġ= Ġ" 1 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscount Ġ= Ġ" 5 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Urls Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġif Ġ( i Ġ>= Ġ 5 ) Ġmock Categories [ 1 ]. value Ġelse Ġmock Categories [ 0 ]. value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Wish List ed Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Sto ke Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrating Ġ= Ġ 5 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Size Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Categories (): ĠList < Product Category > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmock Categories ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Products ( ĊĠĠĠĠĠĠĠ Ġcategory : ĠString , ĊĠĠĠĠĠĠĠ Ġselected Filter Options : ĠSelected Filter Options ĊĠĠĠ Ġ): ĠList < Product Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmock Products . filter Ġ{ Ġit . category Ġ== Ġcategory Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Product Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsearch Product ( query : ĠString ): ĠList < Product Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmock Products . filter Ġ{ Ġit . product Name . contains ( query ) Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Product Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Product Details ( productId : ĠLong ): ĠProduct Details Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= Ġmock Products . first Ġ{ Ġit . productId Ġ== ĠproductId Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġproduct . to Product Details ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggested Ġ= Ġmock Products . filter Ġ{ Ġit . category Ġ== Ġproduct . category Ġ&& Ġit . productId Ġ!= ĠproductId Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 8 ). map Ġ{ Ġit . to Product Item () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Filters For Category ( category : ĠString ): ĠList < Filter > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Cart Products (): ĠList < Cart Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcart Products . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock Products . find Ġ{ Ġinfo Ġ-> Ġinfo . productId Ġ== Ġit . productId Ġ}. let Ġ{ Ġproduct Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġproduct Info !!. to Cart Item ( it . selected Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġis Product In Cart ( productId : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcart Products . find Ġ{ Ġit . productId Ġ== ĠproductId Ġ} Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġadd Product To Cart ( addTo Cart : ĠAdd To Cart ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcart Products . add ( addTo Cart ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġremove Product From Cart ( productId : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcart Products . removeAll Ġ{ Ġit . productId Ġ== ĠproductId Ġ} ĊĠĠĠ Ġ} Ċ } Ċ