package Ġcom . project mov iles . my application Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . method . Hide Returns Transformation Method Ċ import Ġandroid . text . method . Password Transformation Method Ċ import Ġandroid . util . Patterns Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġkotlinx . android . synt hetic . main . activity _ regist r arse .* Ċ import Ġjava . util . HashMap Ċ Ċ class ĠRegist rase Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġlateinit Ġvar Ġm Database : ĠFirebase Fire store ĊĠĠĠ Ġprivate Ġvar Ġm Is Show Pass Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ regist r arse ) ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance (); ĊĠĠĠĠĠĠĠ Ġm Database Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠ Ġver Con tras enia ( m Is Show Pass ) ĊĠĠĠĠĠĠĠ Ġver Conf ir mar Con tras enia ( m Is Show Pass ) ĊĠĠĠĠĠĠĠ Ġshow _ Con tras enia . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Show Pass = ! m Is Show Pass ĊĠĠĠĠĠĠĠĠĠĠĠ Ġver Con tras enia ( m Is Show Pass ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshow Conf ir mar Con tras enia . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Show Pass = ! m Is Show Pass ĊĠĠĠĠĠĠĠĠĠĠĠ Ġver Conf ir mar Con tras enia ( m Is Show Pass ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn Registrar Datos . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNO MBR RE _ US U ARIO Ġ= Ġedit Text Person Name . text . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOR RE O Ġ= Ġedit Text Text EmailAddress . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCON TR AS EN IA Ġ= Ġedit Text Text Password . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCON FIRM AR _ CON TR AS EN IA Ġ= Ġedit Text Password Confirm . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( COR RE O . isEmpty () Ġ|| Ġ! Patterns . EMAIL _ ADDRESS . matcher ( COR RE O ). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Text EmailAddress . setError ( M EN SA JE _ ERROR _ COR RE O ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( COR RE O . isEmpty () Ġ|| ĠCON TR AS EN IA . isEmpty () Ġ|| ĠCON FIRM AR _ CON TR AS EN IA . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Text EmailAddress . setError ( CA MP OS _ V AC IOS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( CON TR AS EN IA . isEmpty () Ġ|| ĠCON TR AS EN IA . length Ġ< Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Text Password . setError ( M EN SA JE _ ERROR _ CON TR AS EN IA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( CON TR AS EN IA Ġ!= ĠCON FIRM AR _ CON TR AS EN IA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠM EN SA JE _ ERROR _ CON TR AS EN I AS _ IG UAL ES , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! COR RE O . isEmpty () Ġ&& ĠPattern s . EMAIL _ ADDRESS . matcher ( COR RE O ). matches () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! CON TR AS EN IA . isEmpty () Ġ&& ĠCON TR AS EN IA . length Ġ>= 8 Ġ&& Ġ! CONFIRM AR _ CON TR AS EN IA . isEmpty () Ġ&& ĠCON TR AS EN IA == CONFIRM AR _ CON TR AS EN IA ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistro Usuario ( COR RE O , ĠCON TR AS EN IA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠE SCO GER ĠG Y MS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġguard ar Usuario ( NO MBR RE _ US U ARIO , ĠCOR RE O , ĠCON TR AS EN IA ," VAR AD ERO ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli mp iar Campos () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir AL og in () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Inicio Login . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġir AL og in () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġguard ar Usuario ( NO MB RE _ US U ARIO : String , ĠCOR RE O : String , ĠCON TR AS EN IA : String , Ġcent ro De port ivo : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġmap Ġ: ĠHashMap < String , ĠString > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠHashMap < String , ĠString > Ġ() ĊĠĠĠĠĠĠĠ Ġmap . put (" nombre ", ĠNO MB RE _ US U ARIO ); ĊĠĠĠĠĠĠĠ Ġmap . put (" corre o ", ĠCOR RE O ); ĊĠĠĠĠĠĠĠ Ġmap . put (" con tras enia ", ĠCON TR AS EN IA ); ĊĠĠĠĠĠĠĠ Ġmap . put (" cent ro De port ivo ", Ġcent ro De port ivo ); ĊĠĠĠĠĠĠĠ Ġm Database . collection (" usuarios "). document () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , M EN SA JE _ US U ARIO _ CRE ADO , ĠToast . LENGTH _ LONG ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ERROR _ CRE AR _ US U ARIO , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġli mp iar Campos (){ ĊĠĠĠĠĠĠĠ Ġedit Text Person Name . setText ("") ĊĠĠĠĠĠĠĠ Ġedit Text Text EmailAddress . setText ("") ĊĠĠĠĠĠĠĠ Ġedit Text Text Password . setText ("") ĊĠĠĠĠĠĠĠ Ġedit Text Password Confirm . setText ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregistro Usuario ( corre o : String , Ġpass : String ){ ĊĠĠĠĠĠĠĠ Ġauth . createUser With Email And Password ( corre o , pass ). add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( task . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= auth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , M EN SA JE _ US U ARIO _ CRE ADO , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Alert () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġir AL og in (){ ĊĠĠĠĠĠĠĠ Ġvar Ġlogin Intent Ġ= Intent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( login Intent ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġshow Alert (){ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġbuilder . setIcon ( R . drawable . ic _ error ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Error ") ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage ( ERROR _ CRE AR _ US U ARIO ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" A cept ar ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog : ĠAlertDialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġver Con tras enia ( is Show : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġif ( is Show ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Text Password . transformation Method Ġ= ĠHide Returns Transformation Method . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow _ Con tras enia . setImage Resource ( R . drawable . ic _ hide _ password _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Text Password . transformation Method Ġ= ĠPassword Transformation Method . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow _ Con tras enia . setImage Resource ( R . drawable . ic _ show _ password _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġedit Text Text Password . setSelection ( edit Text Text Password . text . toString (). length ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġver Conf ir mar Con tras enia ( is Show : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġif ( is Show ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Password Confirm . transformation Method Ġ= ĠHide Returns Transformation Method . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Conf ir mar Con tras enia . setImage Resource ( R . drawable . ic _ hide _ password _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Password Confirm . transformation Method Ġ= ĠPassword Transformation Method . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Conf ir mar Con tras enia . setImage Resource ( R . drawable . ic _ show _ password _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġedit Text Password Confirm . setSelection ( edit Text Password Confirm . text . toString (). length ) ĊĠĠĠ Ġ} Ċ }