package Ġadmin . meal buff et . com . me aln buff et admin . nav Ċ Ċ import Ġadmin . meal buff et . com . me aln buff et admin . R Ċ import Ġadmin . meal buff et . com . me aln buff et admin . R . id . menu _ list _ add _ item Ċ import Ġadmin . meal buff et . com . me aln buff et admin . model . Food Item Ċ import Ġadmin . meal buff et . com . me aln buff et admin . network . Response Callback Ċ import Ġadmin . meal buff et . com . me aln buff et admin . network . publish Items Ċ import Ġadmin . meal buff et . com . me aln buff et admin . network . un publish Items Ċ import Ġadmin . meal buff et . com . me aln buff et admin . util . Preferences Helper Ċ import Ġadmin . meal buff et . com . me aln buff et admin . view model . Food ItemList ViewModel Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Default Item Animator Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġcom . meal buff et . controller . Base Fragment Ċ import Ġkotlinx . android . synt hetic . main . fragment _ items list .* Ċ Ċ class ĠItems List Fragment Ġ: ĠBase Fragment (), ĠView . OnClickListener , ĠInternal ActionListener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Action ( action : ĠString , Ġdata : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE _ ITEM _ FAILED Ġ-> Ġshow Network Error () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE _ ITEM _ SUCCESS FULL Y Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Custom Error ( getString ( R . string . deleted _ item _ successfully )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Get Items List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠEDIT _ FO OD _ ITEM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap ActionListener (). on Action ( EDIT _ FO OD _ ITEM , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Get Items List () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠ Ġval Ġrestaurant Id Ġ= ĠPreferences Helper . get Restaurant Id ( require Context ()) ĊĠĠĠĠĠĠĠ Ġfood ItemList ViewModel . get Food Items Data ( restaurant Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Resource (): ĠInt Ġ= ĠR . layout . fragment _ items list ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfood ItemList ViewModel : ĠFood ItemList ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfood Items Adapter : ĠFood Items Adapter ĊĠĠĠ Ġprivate Ġvar Ġfood Items Lst Ġ= ĠArrayList < Food Item >() ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Food Items List ViewModel () ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġun publish _ items . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġpublish _ items . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . publish _ items Ġ-> Ġpublish Selected Items () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . un publish _ items Ġ-> Ġun Publish Selected Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġun Publish Selected Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter edList Ġ= Ġfood Items Lst . filter Ġ{ Ġit . checked Ġ== Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġarray List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġfilter edList . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . item Code ?. let Ġ{ Ġit 1 Ġ-> Ġarray List . add ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġun publish Items ( array List , Ġobject Ġ: ĠResponse Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Get Items List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( data : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Network Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpublish Selected Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter edList Ġ= Ġfood Items Lst . filter Ġ{ Ġit . checked Ġ== Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġarray List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġfilter edList . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . item Code ?. let Ġ{ Ġit 1 Ġ-> Ġarray List . add ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpublish Items ( array List , Ġobject Ġ: ĠResponse Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Get Items List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( data : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Network Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Food Items List ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġfood ItemList ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Food ItemList ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġfood ItemList ViewModel . live Data . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Network Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfood Items Lst Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Food Items View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġfetch Get Items List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Food Items View () Ġ{ ĊĠĠĠĠĠĠĠ Ġfood Items Adapter Ġ= ĠFood Items Adapter ( require Context (), Ġthis Ġas ĠInternal ActionListener ) ĊĠĠĠĠĠĠĠ Ġfood Items _ re cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġfood Items Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfood Items _ re cyclerView . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġfood Items Adapter . setData ( food Items Lst ) ĊĠĠĠĠĠĠĠ Ġfood Items Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater ?. inflate ( R . menu . menu _ add _ item , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu _ list _ add _ item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap ActionListener (). on Action ( ADD _ FO OD _ ITEM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEDIT _ FO OD _ ITEM : ĠString Ġ= Ġ" edit Food Item " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠADD _ FO OD _ ITEM : ĠString Ġ= Ġ" add Food Item " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDELETE _ ITEM _ SUCCESS FULL Y : ĠString Ġ= Ġ" Deleted Successfully " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDELETE _ ITEM _ FAILED : ĠString Ġ= Ġ" Delete Item Failed " ĊĠĠĠ Ġ} Ċ }