package Ġk tx Game Prototype 0 1 . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . github . trust worth y bl ake . k tx Game Prototype 0 1 . R Ċ import Ġcom . github . trust worth y bl ake . k tx Game Prototype 0 1 . databinding . Fragment Register Binding Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . k tx . auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main .* Ċ import Ġk tx Game Prototype 0 1 . App Activity Ċ import Ġk tx Game Prototype 0 1 . DB Object Ċ Ċ class ĠRegister Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Register Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġprivate Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, savedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ register , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠFirebase ĠAuth ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase . auth ĊĊĠĠĠĠĠĠĠ Ġ// Ġgetting Ġdata Ġfrom Ġthe Ġtext Ġfields ĊĠĠĠĠĠĠĠ Ġval Ġtext Field Username Ġ= Ġbinding . root . findViewById < EditText >( R . id . et _ register _ email ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Field Password Ġ= Ġbinding . root . findViewById < EditText >( R . id . et _ register _ password ) ĊĠĠĠĠĠĠĠ Ġval Ġtext FieldName Ġ= Ġbinding . root . findViewById < EditText >( R . id . et _ register _ name ) ĊĠĠĠĠĠĠĠ Ġval ĠcheckBox Ġ= Ġbinding . root . findViewById < CheckBox >( R . id . cb _ is Teacher ) ĊĠĠĠĠĠĠĠ Ġval Ġbutton Register Ġ= Ġbinding . root . findViewById < Button >( R . id . btn _ register ) ĊĊĠĠĠĠĠĠĠ Ġbutton Register . setOnClickListener (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentUser Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġsomeone Ġis Ġalready Ġsigned Ġin , Ġsign Ġthem Ġout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth . sign Out () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Email Ġ= Ġtext Field Username . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġtext Field Password . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġtext FieldName . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Teacher Ġ= ĠcheckBox . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlogging Ġin Ġusing Ġthe Ġdata Ġentered Ġin Ġthe Ġtext Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Email Ġ!= Ġ"" Ġ&& Ġpassword Ġ!= Ġ"" Ġ&& Ġname Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate User ( user Email , Ġpassword , Ġname , Ġis Teacher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth . sign Out () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Please Ġfill Ġall Ġthe Ġfields !", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠ Ġ} ĠĠĠĠĠ ĊĊĠĠĠ Ġprivate Ġfun Ġcreate User ( email : ĠString , Ġpassword : ĠString , Ġname : ĠString , Ġis Teacher : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġauth . createUser With Email And Password ( email , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener () Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġsuccess ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserID Ġ= ĠFirebase Auth . getInstance (). currentUser !!. uid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Object . create Database Entry ( email , Ġname , Ġis Teacher , ĠuserID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity ," User Ġsuccessfully Ġcreated !", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Object . getUser Data ( userID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Teacher DB ( userID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity ," Error Ġregistering Ġuser !", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Failed Ġto Ġcreate Ġnew Ġuser ", Ġ" Error Ġcreating Ġnew Ġuser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO ĠFix Ġso Ġyou Ġcan Ġmove Ġthese Ġfour Ġfunctions Ġinto Ġdb Ġobject , Ġso Ġwe Ġdon 't Ġneed Ġto Ġhave Ġidentical Ġfunctions Ġin Ġmain - , Ġregister - Ġand Ġlogin Fragment ĊĠĠĠ Ġ// Ġchecking Ġuser Object Ġif Ġuser Ġis Ġteacher ĠNOT ĠWORK ING ĠAS ĠINT ENDED Ġ- ĠHAS ĠTO ĠP RESS ĠLOGIN ĠBUTTON ĠT W ICE ĊĠĠĠ Ġfun Ġcheck Teacher Object () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( App Activity (). user Object . is U Ser Loaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( App Activity (). user Object . check For Teacher ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog In As Teacher () Ġ// Ġsign Ġin Ġas Ġteacher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġlog In As Student () Ġ// Ġsign Ġin Ġas Ġstudent ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠLog . w (" Failed Ġto Ġread Ġdatabase ", Ġ" Error Ġchecking Ġspecified Ġuser Ġin Ġdatabase ") Ġ// Ġdatabase Ġread Ġfail ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġchecking Ġdb Ġif Ġthe Ġuser Ġis Ġa Ġteacher ĊĠĠĠ Ġprivate Ġfun Ġcheck Teacher DB ( userID : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . collection (" users "). document ( userID ). get (). add On Complete Listener () Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġquery Ġis Ġsuccessful , Ġreads Ġthe Ġdata Ġand Ġstores Ġin Ġvariables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġtask . result ?. get (" teacher ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġuser Ġlogging Ġin Ġis Ġteacher Ġor Ġstudent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res Ġas ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog In As Teacher () Ġ// Ġsign Ġin Ġas Ġteacher ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġlog In As Student () Ġ// Ġsign Ġin Ġas Ġstudent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdatabase Ġread Ġfail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Failed Ġto Ġread Ġdatabase ", Ġ" Error Ġchecking Ġspecified Ġuser Ġin Ġdatabase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġlog Ġin Ġas Ġteacher , Ġgo Ġto Ġteacher Ġpage ĊĠĠĠ Ġprivate Ġfun Ġlog In As Teacher () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Logged Ġin Ġas Ġteacher !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . dest _ user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġlog Ġin Ġas Ġstudent , Ġgo Ġto Ġstudent Ġpage ĊĠĠĠ Ġprivate Ġfun Ġlog In As Student () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Logged Ġin Ġas Ġstudent !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . dest _ user ) ĊĠĠĠ Ġ} Ċ Ċ } ĠĠĠĠ