package Ġio . eur u app . view Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . custom view . custom View Ċ import Ġcom . google . android . gms . location . places . ui . Place Picker Ċ import Ġcom . google . android . material . sn ackbar . Base Transient Bottom Bar Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġcom . google . firebase . firestore . Geo Point Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġio . code labs . sdk . util . debug Log Ċ import Ġio . code labs . sdk . util . toast Ċ import Ġio . eur u app . R Ċ import Ġio . eur u app . core . Base Activity Ċ import Ġio . eur u app . databinding . Activity Pending Registration Binding Ċ import Ġio . eur u app . model . Business Ċ import Ġio . eur u app . util . Constants Utils Ċ import Ġio . eur u app . util . extract Names Ċ import Ġio . eur u app . util . validate Ċ import Ġjava . util .* Ċ Ċ class ĠPending Registration Activity ( override Ġval Ġlayout Id : ĠInt Ġ= ĠR . layout . activity _ pending _ registration ) Ġ: ĊĠĠĠ ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Pending Registration Binding ĊĠĠĠ Ġ// ĠBusiness ĠID ĊĠĠĠ Ġprivate Ġvar Ġbusiness Id : ĠString ? Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( intent : ĠIntent , Ġinstance State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ pending _ registration ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSend Ġuser Ġdevice Ġregistration Ġtoken Ġto Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġsend Registration () ĊĊĠĠĠĠĠĠĠ Ġ// ĠBind Ġuser 's Ġdata Ġto ĠUI ĊĠĠĠĠĠĠĠ Ġbinding . user Ġ= Ġdatabase . user ĊĊĠĠĠĠĠĠĠ Ġget Business For Provider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Business For Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfire store . collection ( Constants Utils . COLLECTION _ BUS INESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where EqualTo (" user UID ", Ġdatabase . user ?. key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġit . result ?. documents ?. isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b Ġ!= Ġnull Ġ&& Ġb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . business Ġ= Ġit . result !!. documents [ 0 ]. toObject ( Business :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbusiness Id Ġ= Ġbinding . business ?. key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . business Ġ!= Ġnull Ġ&& Ġbinding . business !!. addresses !!. isEmpty ()) Ġallow Location Registration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġshow Tutorial () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġshow Tutorial () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( ex . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Tutorial () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( text Ġ= Ġ" Welcome Ġto ĠE uru ĠDashboard ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( res Ġ= ĠR . string . business _ registration _ tutorial ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" Ok ") Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Registration () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Send Ġregistration Ġto Ġserver ĊĠĠĠĠĠĠĠ Ġ// todo : Ġfix ĠAUTH ENT ICATION _ FAILED Ġexception ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdatabase . user ĊĠĠĠĠĠĠĠ Ġauth . signIn Anonymous ly (). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase InstanceId . getInstance (). instanceId . add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Create Ġhash Ġmap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Map Ġ= ĠHashMap < Any , ĠAny ? >( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" key "] Ġ= Ġit . result ?. token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" type "] Ġ= Ġuser . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" uid "] Ġ= Ġuser . key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" name "] Ġ= Ġuser . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" timestamp "] Ġ= ĠSystem . currentTimeMillis (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" service "] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map [" address "] Ġ= ĠGeo Point ( tracker . latitude , Ġtracker . longitude ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Push Ġdata Ġto Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfire store . collection ( Constants Utils . COLLECTION _ TOKEN S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( user . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( hash Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result ( it . result ?. token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result ( if Ġ( task 1 . is Successful ) Ġ" Device ĠToken Ġuploaded " Ġelse Ġ" Failed Ġto Ġupload Ġdevice Ġtoken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġe Ġ-> ĠConstants Utils . log Result ( e . localized Message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result (" ID ĠToken Ġerror : Ġ${ it . exception ?. localized Message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Registration ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( res Ġ= ĠR . string . cancel _ registration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( text Ġ= Ġ" Do Ġyou Ġwish Ġto Ġcancel Ġyour Ġ${ getString ( R . string . app _ name )} Ġregistration ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" Ok ") Ġ{ Ġdialog Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar . make ( binding . container , Ġ" Please Ġwait ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfire store . collection ( Constants Utils . COLLECTION _ PENDING _ REGISTR ATION ). document ( database . user . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this @ Pending Registration Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . logout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . is Pending Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Pending Registration Activity , ĠAuth Activity :: class . java )). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Your Ġregistration Ġwas Ġcancelled Ġsuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish After Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setText (" Unable Ġto Ġdelete Ġyour Ġregistration ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( Base Transient Bottom Bar . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener ( this @ Pending Registration Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setText ( it . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( Base Transient Bottom Bar . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button ( text Ġ= Ġ" Dismiss ") Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit User ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofile View Ġ= Ġlayout Inflater . inflate ( R . layout . profile _ edit _ dialog , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġusername User Ġ= Ġprofile View . findViewById < TextInput EditText >( R . id . profile _ username ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( binding . user ?. name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġphone User Ġ= Ġprofile View . findViewById < TextInput EditText >( R . id . profile _ phone ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( binding . user ?. phone ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġabout User Ġ= Ġprofile View . findViewById < TextInput EditText >( R . id . profile _ about ) ĊĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( text Ġ= Ġ" Update Ġprofile Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom View ( view Ġ= Ġprofile View , Ġdialog Wrap Content Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" Save ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar . make ( binding . container , Ġ" Please Ġwait ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfire store . collection ( Constants Utils . COLLECTION _ PENDING _ REGISTR ATION ). document ( database . user . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of < String , ĠAny ? >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone " Ġto Ġphone User . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġusername User . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" about Me " Ġto Ġabout User . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . user ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Ġ= Ġphone User . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġusername User . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . user Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . localized Message Ġ?: Ġ" Unable Ġto Ġregister Ġyour Ġbusiness " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Duration ( Base Transient Bottom Bar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button ( text Ġ= Ġ" Dismiss ") Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Business ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbusiness View Ġ= Ġlayout Inflater . inflate ( R . layout . business _ edit _ dialog , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġbusiness Name Ġ= Ġbusiness View . findViewById < TextInput EditText >( R . id . business _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġbusiness Desc Ġ= Ġbusiness View . findViewById < TextInput EditText >( R . id . business _ desc ) ĊĠĠĠĠĠĠĠ Ġval Ġbusiness Phone Ġ= Ġbusiness View . findViewById < TextInput EditText >( R . id . business _ phone ) ĊĠĠĠĠĠĠĠ Ġval Ġbusiness Category Ġ= Ġbusiness View . findViewById < Spinner >( R . id . business _ category ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠArray Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Pending Registration Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ dropdown _ item _ 1 line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . categories . extract Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( text Ġ= Ġ" Register Ġbusiness ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom View ( view Ġ= Ġbusiness View , Ġdialog Wrap Content Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" Continue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Register ing Ġyour Ġbusiness . ĠThis Ġmight Ġtake Ġsome Ġtime ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ IN DEFIN ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( business Name . validate () Ġ&& Ġbusiness Desc . validate () Ġ&& Ġbusiness Phone . validate () Ġ&& Ġbusiness Category . validate ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġfire store . collection ( Constants Utils . COLLECTION _ BUS INESS ). document () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbusiness Id Ġ= Ġdocument . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġbusiness ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbusiness Ġ= ĠBusiness ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . user ?. key !! , Ġdocument . id , Ġbusiness Name . text . toString (), Ġbusiness Phone . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbusiness Category . selected Item . toString (), Ġbusiness Desc . text . toString (), Ġ"", Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . set ( business ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setText ( exception . localized Message ). set Duration ( Base Transient Bottom Bar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . exception ?. localized Message Ġ?: Ġ" Unable Ġto Ġregister Ġyour Ġbusiness " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( Base Transient Bottom Bar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ add On Complete Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Business Ġregistered Ġsuccessfully " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Duration ( Base Transient Bottom Bar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . business Ġ= Ġbusiness ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Location Registration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Fill Ġin Ġall Ġrequired Ġfields ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button ( text Ġ= Ġ" Dismiss ") Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġallow Location Registration () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( text Ġ= Ġ" Almost Ġdone ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( text Ġ= Ġ" Add Ġa Ġlocation Ġfor Ġyour Ġbusiness Ġto Ġcomplete Ġthis Ġprocess ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" Pick Ġlocation ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠPlace Picker . Intent Builder (). build ( this @ Pending Registration Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠRC _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Unable Ġto Ġpick Ġyour Ġlocation . ĠPlease Ġtry Ġagain Ġlater ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( e . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel On Touch Outside ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel able ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Avatar ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// todo : ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠRC _ LOCATION Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Ġ= ĠPlace Picker . get Place ( this , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Lng Ġ= Ġplace . lat Lng ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġplace . address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġplace . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log (" Place : Ġ${ place . lat Lng }") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Unable Ġto Ġpick Ġyour Ġlocation . ĠPlease Ġtry Ġagain Ġlater ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpick Location ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠPlace Picker . Intent Builder (). build ( this @ Pending Registration Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠRC _ LOCATION ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Unable Ġto Ġpick Ġyour Ġlocation . ĠPlease Ġtry Ġagain Ġlater ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( e . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRC _ LOCATION Ġ= Ġ 9 ĊĊĠĠĠ Ġ} Ċ } Ċ