package Ġcom . zo os um zo os um . zo os um x 2 Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . zo os um zo os um . zo os um x 2 . dialog . Approve Rejected Dialog Ċ import Ġcom . zo os um zo os um . zo os um x 2 . dialog . Approve To Reward Dialog Ċ import Ġcom . zo os um zo os um . zo os um x 2 . dialog . Confirm Re cycle Dialog Ċ import Ġcom . zo os um zo os um . zo os um x 2 . menu . Mailbox Fragment Ċ import Ġcom . zo os um zo os um . zo os um x 2 . menu . My page Fragment Ċ import Ġcom . zo os um zo os um . zo os um x 2 . menu . Pager Home Fragment Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . FieldValue Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . Set Options Ċ import Ġcom . zo os um zo os um . zo os um x 2 . dialog . Write UserInfo Dialog Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠBottom Navigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĠĠĠ Ġvar Ġfb Auth : ĠFirebase Auth ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfb Fire store : ĠFirebase Fire store ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġë° ± Ġë²Ħ íĬ ¼ Ġê¸ Ī ì§Ģ ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġfb Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġfb Fire store Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠĠĠĠĠ Ġfb Fire store ?. collection (" users ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add Snapshot Listener { Ġdocument Snapshot , Ġfires base Fire store Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot Ġ== Ġnull ) Ġreturn @ add Snapshot Listener ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot . data ?. get (" nickname ")== null ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġdocument Snapshot . data ?. get (" address Region ")== null ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġdocument Snapshot . data ?. get (" is land Name ")== null ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdlg Ġ= ĠWrite UserInfo Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdlg . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġìŀ¬ íĻ ľ ìļ© ĠìĿ¸ ì¦ Ŀ ĠìļĶ ì²Ń ìĿ´ ĠìĻ Ģ ìŀ Ī ìĿĦ Ġê²½ìļ° Ġëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ ë¥¼ Ġì¶ľëł¥ ( ëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ Ġ-> Ġìķ ¡ íĭ° ë¹Ħ íĭ° ) ĊĠĠĠĠĠĠĠ Ġfb Fire store ?. collection (" users ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add Snapshot Listener { Ġdocument Snapshot , Ġfires base Fire store Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot Ġ== Ġnull ) Ġreturn @ add Snapshot Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot . data ?. get (" is Received Re cycle ") != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ Ġíĺ¸ì¶ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdlg Ġ= ĠConfirm Re cycle Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdlg . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġë³ ´ë Ĥ ¸ Ġìŀ¬ íĻ ľ ìļ© ĠìĿ¸ ì¦ Ŀ ĠìĤ¬ ì§Ħ ìĹĲ ĠëĮĢíķľ ĠìĬ ¹ ìĿ¸ ìĿ´ ĠëĲľ Ġê²½ìļ° Ġëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ ìĻĢ Ġë¦¬ ìĽĮ ëĵľ Ġì¶ľëł¥ ( ëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ Ġ-> Ġë¦¬ ìĽĮ ëĵľ Ġìķ ¡ íĭ° ë¹Ħ íĭ° ) ĊĠĠĠĠĠĠĠ Ġfb Fire store ?. collection (" users ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission Detail ") ?. document (" recycle ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add Snapshot Listener { document Snapshot , Ġfirebase Fire store Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot Ġ== Ġnull ) Ġreturn @ add Snapshot Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot . data ?. get (" is Approved "). toString (). to Boolean ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// confirm Ok Ġ== Ġtrue ë©´ Ġë¦¬ ìĽĮ ëĵľ ĠìĹ° ê²° ëĲľ Ġëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ , Ġfalse ë©´ Ġrejected Ġëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot . data ?. get (" confirm Ok "). toString () ==" true "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ Ġíĺ¸ì¶ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdlg Ġ= ĠAppro ve To Reward Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdlg . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot . data ?. get (" confirm Ok "). toString () ==" false "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ Ġíĺ¸ì¶ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdlg Ġ= ĠAppro ve Rejected Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdlg . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ë¯¸ ìħĺ Ġìĭľìŀĳ ĠëĤ ł ì§ ľ Ġë°ı Ġì ´Ī ê¸° íĻĶ ĠëĤ ł ì§ ľ Ġê³Ħ ìĤ° ĊĠĠĠĠĠĠĠ Ġval Ġtoday : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġtoday Week : Int Ġ= Ġtoday . get ( Calendar . WEEK _ OF _ YEAR ) ĊĊĠĠĠĠĠĠĠ Ġfb Fire store ?. collection (" users ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add Snapshot Listener Ġ{ Ġdocument Snapshot , Ġfirebase Fire store Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document Snapshot Ġ== Ġnull ) Ġreturn @ add Snapshot Listener ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( document Snapshot . data ?. get (" creation Timestamp "). toString ()!= today Week . toString ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ë§Į ìĿ¼ Ġìĺ¤ ëĬ ĺ ĠëĤ ł ì§ ľ ìĿĺ ĠìĿ´ë ² Ī Ġëħ Ħ ëıĦ Ġì£¼ ì°¨ ĠìĪĺ ê°Ģ ĠDB ìĹĲ ĠìłĢìŀ¥ ëĲĺìĸ´ ĠìŀĪëĬĶ ĠìĿ´ë ² Ī Ġëħ Ħ ëıĦ Ġì£¼ ì°¨ ĠìĪĺ ìĻĢ Ġëĭ¤ ë¥´ ëĭ¤ ë©´ , Ġì ¦ ī ĠìĥĪ ë¡ľ ìļ´ Ġì£¼ ê°Ģ Ġìĭľìŀĳ ëĲľ Ġê²½ìļ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 1 ) ĠDB ìĿĺ Ġì£¼ ì°¨ ( creation Timestamp ) ĠìĹħ ë į°ìĿ´ íĬ¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 ) Ġmission ĠìĪĺ íĸī Ġê´Ģ ëł¨ ĠDB Ġê°Ĵ ĠìĪĺ ìłķ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmission Flag Ġ= Ġhash Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" creation TimeStamp " Ġto Ġtoday Week , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mission M aking Quiz " Ġto Ġ" false ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mission Re cycle " Ġto Ġ" false ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mission Sense Quiz " Ġto Ġ" false ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mission User Quiz " Ġto Ġ" false " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfb Fire store ?. collection (" users ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set ( mission Flag , ĠSet Options . merge ()) ?. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d (" Set ĠWeek Number Ġto ĠDB ", Ġ" Document Snapshot Ġsuccessfully Ġwritten !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre cycle Ref Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfb Fire store ?. collection (" users ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission ") ?. document ( fb Auth ?. uid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . collection (" mission Detail ") ?. document (" recycle ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdates Ġ= Ġhash Map Of < String , ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Approved " Ġto ĠField Value . delete (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" confirm Ok " Ġto ĠField Value . delete (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" send K ak ao " Ġto ĠField Value . delete (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" who Approved " Ġto ĠField Value . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycle Ref ?. update ( updates ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ?. add On Failure Listener Ġ{ Ġe Ġ-> ĠLog . w (" Set ĠWeek Number Ġto ĠDB ", Ġ" Error Ġwriting Ġdocument ", Ġe ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" compare Ġweek "," success Ġand Ġsame ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠëĦ ¤ ë¹Ħ ê²Į ìĿ´ ìħĺ ë°Ķ ìĹĲ Ġë¦¬ ìĬ¤ ëĦ Ī Ġë¶Ģ ì° © ĊĠĠĠĠĠĠĠ Ġnavigation . setOn Navigation ItemSelected Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠíĻ Ī ĠíĻ Ķ ë©´ ìľ¼ë¡ľ Ġì ´Ī ê¸° íĻĶ Ġ-> ĠíĻ Ī ĠìķĦ ìĿ´ ì ½ ĺ Ġìĥ ī ìĥģ ë§Į Ġfriendly _ green ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . frame _ main , ĠP ager Home Fragment ()). commit () ĊĠĠĠĠĠĠĠ Ġnavigation . menu . getItem ( 1 ). isChecked Ġ= Ġtrue ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġres / menu / navigation _ items . xml ĠíĮĮìĿ¼ ìĹĲìĦľ Ġê°ģ ĠìķĦ ìĿ´ íħľ ìĿĺ Ġid ĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( p 0 : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( p 0 . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button _ mailbox Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . fade _ in 4 , ĠR . anim . fade _ out 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . frame _ main , ĠMail box Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button _ home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . fade _ in 4 , ĠR . anim . fade _ out 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . frame _ main , ĠP ager Home Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button _ my page Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . set Custom Animations ( R . anim . fade _ in 4 , ĠR . anim . fade _ out 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . frame _ main , ĠMy page Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġ} Ċ }