package Ġcom . android . loan ppi Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . activity . add Callback Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . facebook . AccessToken Ċ import Ġcom . facebook . Graph Request Ċ import Ġcom . facebook . HttpMethod Ċ import Ġcom . facebook . login . Login Manager Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View ĊĊ Ċ class Ġdashboard Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ// ĠData Ġfrom Ġlogin ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Type : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaccess With : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaccess From : ĠString ĊĠĠĠ Ġprivate Ġvar Ġaccess Info : ĠBundle ? Ġ= ĠBundle () ĊĠĠĠ Ġprivate Ġvar Ġaccount : ĠBundle ? Ġ= ĠBundle () ĊĠĠĠ Ġprivate Ġvar Ġbundle : ĠBundle ? Ġ= ĠBundle () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdash MenuBar Container : ĠBottom Navigation View ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ dashboard ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġinfo Ġfrom Ġlogin ĊĠĠĠĠĠĠĠ Ġbundle Ġ= Ġintent . extras ĊĠĠĠĠĠĠĠ Ġaccess Info Ġ= Ġbundle ?. get Bundle (" access Info ") Ġas ĠBundle ĊĊĠĠĠĠĠĠĠ Ġaccess With Ġ= Ġaccess Info ?. get (" access With ") Ġas ĠString ĊĠĠĠĠĠĠĠ Ġaccess From Ġ= Ġaccess Info ?. get (" access From ") Ġas ĠString ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġinfo Ġdepending Ġof Ġaccess Ġmethod ĊĠĠĠĠĠĠĠ Ġif Ġ( access From Ġ== Ġ" login ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ġ= Ġbundle ?. get Bundle (" account ") Ġas ĠBundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Type Ġ= Ġaccount ?. get (" user Type "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Type Ġ= Ġuser Type . substring ( 0 , Ġuser Type . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Type Ġ= Ġaccess Info ?. get (" user Type ") Ġas ĠString ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdash MenuBar Container Ġ= ĠfindViewById ( R . id . dash _ menu _ bar _ container ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDec ide Ġfragment Ġto Ġload Ġdepending Ġof Ġaccess Ġfrom ĊĠĠĠĠĠĠĠ Ġif Ġ( access From Ġ== Ġ" signup ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Fragment ( profile ( bundle )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Bottom Navigation View >( R . id . dash _ menu _ bar _ container ). visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Bottom Navigation View >( R . id . dash _ menu _ bar _ container ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Type Ġ== Ġ" worker ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( main _ worker ( bundle ), Ġ" main _ worker ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdash MenuBar Container . inflate Menu ( R . menu . worker _ dash _ bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( main _ invest or ( bundle ), Ġ" main _ invest or ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdash MenuBar Container . inflate Menu ( R . menu . invest or _ dash _ bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdash MenuBar Container . setOn Navigation ItemSelected Listener ( bar Listener ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġback Ġbutton Ġpressed ĊĠĠĠĠĠĠĠ Ġon Back Pressed Dispatcher . add Callback ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . dashboard _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . java Class ?. name . toString (). replace (" com . android . loan ppi .", Ġ"") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Type Ġ== Ġ" invest or ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Fragment Ġ== Ġ" invest _ options " Ġ|| Ġcurrent Fragment Ġ== Ġ" my _ invest ment _ options " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġcurrent Fragment Ġ== Ġ" profile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( main _ invest or ( bundle ), Ġ" main _ invest or ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdash MenuBar Container . selected ItemId Ġ= ĠR . id . nav _ i _ home ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Fragment Ġ== Ġ" invest _ details ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( invest _ options ( bundle ), Ġ" invest _ options ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdash MenuBar Container . selected ItemId Ġ= ĠR . id . nav _ i _ invest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Fragment Ġ== Ġ" my _ invest ment _ details ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( my _ invest ment _ options ( bundle ), Ġ" my _ invest ment _ options ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdash MenuBar Container . selected ItemId Ġ= ĠR . id . nav _ i _ my _ invest ments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Fragment Ġ== Ġ" l end " Ġ|| Ġcurrent Fragment Ġ== Ġ" my _ loan " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġcurrent Fragment Ġ== Ġ" profile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( main _ worker ( bundle ), Ġ" main _ worker ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdash MenuBar Container . selected ItemId Ġ= ĠR . id . nav _ w _ home ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠLoad Ġfragment Ġfrom Ġdashboard Ġbar Ġdepending Ġof Ġuser Ġrole ĊĠĠĠ Ġprivate Ġval Ġbar Listener Ġ= ĠBottom Navigation View . On Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġvar Ġnew Fragment : ĠFragment ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġtag Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ i _ home Ġ-> Ġ{ Ġnew Fragment Ġ= Ġmain _ invest or ( bundle ); Ġtag Ġ= Ġ" main _ invest or " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ i _ invest Ġ-> Ġ{ Ġnew Fragment Ġ= Ġinvest _ options ( bundle ); Ġtag Ġ= Ġ" invest _ options " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ i _ my _ invest ments Ġ-> Ġ{ Ġnew Fragment Ġ= Ġmy _ invest ment _ options ( bundle ); Ġtag Ġ= Ġ" my _ invest ment _ options " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ i _ profile Ġ-> Ġ{ Ġnew Fragment Ġ= Ġprofile ( bundle ); Ġtag Ġ= Ġ" profile " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ w _ home Ġ-> Ġ{ Ġnew Fragment Ġ= Ġmain _ worker ( bundle ); Ġtag Ġ= Ġ" main _ worker " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ w _ l end Ġ-> Ġ{ Ġnew Fragment Ġ= Ġl end ( bundle ); Ġtag Ġ= Ġ" l end " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ w _ my _ loan Ġ-> Ġ{ Ġnew Fragment Ġ= Ġmy _ loan ( bundle ); Ġtag Ġ= Ġ" my _ loan " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ w _ profile Ġ-> Ġ{ Ġnew Fragment Ġ= Ġprofile ( bundle ); Ġtag Ġ= Ġ" profile " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( new Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( new Fragment , Ġtag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFunction Ġthat Ġcreate Ġa Ġmenu Ġdepending Ġof Ġaccess Ġfrom ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater : ĠMenu Inflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġif Ġ( access From Ġ== Ġ" signup ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ non _ registered , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ registered , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFunction Ġthat Ġallows Ġknow Ġmenu Ġitem Ġselected ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġitem Ġselection ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ sign out Ġ-> Ġ{ Ġsign Out () Ġ; Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFunction Ġthat Ġload Ġa Ġfragment Ġon Ġcontainer ĊĠĠĠ Ġfun Ġload Fragment ( fragment : ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Transaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġfragment Transaction . add ( R . id . dashboard _ container , Ġfragment ) ĊĠĠĠĠĠĠĠ Ġfragment Transaction . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFunction Ġthat Ġreplace Ġthe Ġcurrent Ġfragment Ġfor Ġother Ġfragment ĊĠĠĠ Ġfun Ġreplace Fragment ( fragment : ĠFragment , Ġtag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Transaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġfragment Transaction . replace ( R . id . dashboard _ container , Ġfragment , Ġtag ) ĊĠĠĠĠĠĠĠ Ġfragment Transaction . addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠ Ġfragment Transaction . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFunction Ġto Ġfinish Ġthe Ġcurrent Ġsession Ġaccess Ġmethod ĊĠĠĠ Ġprivate Ġfun Ġsign Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( access With Ġ== Ġ" google ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg so Ġ= Ġaccess Info ?. get (" g so ") Ġas ĠGoogle SignIn Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Google SignIn Client Ġ= ĠGoogle SignIn . getClient ( this , Ġg so ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google SignIn Client . sign Out () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( AccessToken . getCurrent AccessToken () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Request ( AccessToken . getCurrent AccessToken (), Ġ"/ me / permissions /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĠHttpMethod . DELETE , ĠGraph Request . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Token . setCurrent AccessToken ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). log Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). execute Async () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ } Ċ