package Ġcom . o . covid 1 9 vol unteer app . activity Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . DatePicker Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . o . covid 1 9 vol unteer app . R Ċ import Ġcom . o . covid 1 9 vol unteer app . databinding . Activity Signup Binding Ċ import Ġcom . o . covid 1 9 vol unteer app . model . User Ċ import Ġkotlinx . android . synt hetic . main . activity _ signup .* Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ class ĠSign up Activity Ġ: ĠAppCompatActivity () Ġ, ĠDate Picker Dialog . On Date Set Listener { ĊĊĠĠĠ Ġprivate Ġvar Ġvol unteer : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Ġ: ĠActivity Signup Binding ĊĠĠĠ Ġprivate Ġvar Ġdate Ġ: ĠCalendar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ signup ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Dialog Ġ= ĠDate Picker Dialog ( this , Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 0 , Ġ 0 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġbinding . content . dob . setOnClickListener Ġ{ Ġdate Picker Dialog . show () Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Input () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġbinding . content . name . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġcountry Code Ġ= Ġbinding . content . cc p . selected CountryCode With Plus ĊĠĠĠĠĠĠĠ Ġval ĠphoneNumber Ġ= Ġbinding . content . phone . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġbinding . content . email . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġbinding . content . password . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġre Password Ġ= Ġbinding . content . re Password . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġdo b Ġ= Ġdate ĊĊĠĠĠĠĠĠĠ Ġvar Ġfocus View Ġ: ĠView ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . name . error Ġ= Ġ" Please Ġenter Ġyour Ġname " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid Mobile ( phoneNumber )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . phone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . phone . error Ġ= Ġ" Please Ġenter Ġa Ġvalid Ġphone Ġnumber " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid Mail ( email )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . email . error Ġ= Ġ" Please Ġenter Ġa Ġvalid Ġemail Ġaddress " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password . length Ġ< Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . password . error Ġ= Ġ" Password Ġshould Ġhave Ġat Ġleast Ġ 8 Ġcharacters " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password Ġ!= Ġre Password ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . re Password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . re Password . error Ġ= Ġ" Password s Ġdon 't Ġmatch " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( dob Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . dob ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . dob . error Ġ= Ġ" Please Ġenter Ġyour ĠDate Ġof ĠB irth " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( vol unteer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View Ġ= Ġbinding . content . radio Heading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . radio Heading . error Ġ= Ġ" Please Ġselect Ġan Ġoption " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( focus View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser ( name , Ġcountry Code Ġ+ ĠphoneNumber , Ġemail , Ġdo b !!. time In Millis , Ġvol unteer !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠPhone Verification Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" user ", Ġgson . toJson ( user )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" password ", Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocus View . request Focus () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid Mail ( email : ĠString ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠE MAIL _ STRING Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"^ [_ A - Za - z 0 - 9 - \\ + ]+ ( \\. [_ A - Za - z 0 - 9 - ]+ )* @" Ġ+ Ġ"[ A - Za - z 0 - 9 - ]+ (\\ .[ A - Za - z 0 - 9 ]+ )*( \\ .[ A - Za - z ]{ 2 , }) $" ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPattern . compile ( EMAIL _ STRING ). matcher ( email ). matches () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid Mobile ( phone : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! Pattern . matches ("[ a - zA - Z ]+ ", Ġphone )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone . length Ġin Ġ 7 .. 1 3 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Date Set ( p 0 : ĠDate Picker ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . content . dob . error Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdate Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġdate !!. set ( p 1 , Ġp 2 , Ġp 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġdate String Ġ: ĠString Ġ= ĠString . format ("% d /% d /% d ", Ġdate !!. get ( Calendar . DATE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( date !!. get ( Calendar . MONTH ) Ġ+ Ġ 1 ), Ġdate !!. get ( Calendar . YEAR )) ĊĠĠĠĠĠĠĠ Ġbinding . content . dob . setText ( date String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon RadioButton Clicked ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠRadio Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIs Ġthe Ġbutton Ġnow Ġchecked ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchecked Ġ= Ġview . isChecked ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . radio Heading . error Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġwhich Ġradio Ġbutton Ġwas Ġclicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view . getId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio _ vol unteer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvol unteer Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio _ needs _ help Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvol unteer Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ