package in.paperwrk.safetycollabproject.accounts; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.TextInputEditText; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import in.paperwrk.safetycollabproject.R; import in.paperwrk.safetycollabproject.models.UserData; import in.paperwrk.safetycollabproject.utilities.Helpers; public class SignupActivity extends AppCompatActivity implements View.OnClickListener { private TextInputEditText mEmailText; private TextInputEditText mNameText; private TextInputEditText mPhoneText; private TextInputEditText mPasswordText; private Helpers mHelpers; private FirebaseAuth mFirebaseAuth; private static final String TAG = SignupActivity.class.getSimpleName(); private FirebaseDatabase mFirebaseDatabase; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); mHelpers = new Helpers(this); mFirebaseAuth = FirebaseAuth.getInstance(); mFirebaseDatabase = FirebaseDatabase.getInstance(); mEmailText = findViewById(R.id.sign_up_email_tv); mNameText = findViewById(R.id.sign_up_name_tv); mPhoneText = findViewById(R.id.sign_up_phone_tv); mPasswordText = findViewById(R.id.sign_up_password_tv); findViewById(R.id.sign_up_button).setOnClickListener(this); findViewById(R.id.sign_up_login_tv).setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.sign_up_button: doSignUp(); break; case R.id.sign_up_login_tv: showSignIn(); break; default: break; } } private void showSignIn() { finish(); } private void doSignUp() { String name = mNameText.getText().toString(); String email = mEmailText.getText().toString(); String phone = mPhoneText.getText().toString(); String password = mPasswordText.getText().toString(); if (name.isEmpty()) { mHelpers.showAlertDialog(getString(R.string.name_required_msg), getString(R.string.enter_name_msg)).show(); return; } if (email.isEmpty()) { mHelpers.showAlertDialog(getString(R.string.email_required_msg), getString(R.string.enter_email_msg)).show(); return; } if (phone.isEmpty()) { mHelpers.showAlertDialog(getString(R.string.phone_required_msg), getString(R.string.enter_phone_msg)).show(); if (phone.length() != 10) { mHelpers.showAlertDialog(getString(R.string.valid_phone_required_msg), getString(R.string.enter_valid_phone_msg)).show(); } return; } if (password.isEmpty()) { mHelpers.showAlertDialog(getString(R.string.password_required_msg), getString(R.string.enter_password_msg)).show(); return; } signUp(email, password, name, phone); } private void signUp(final String email, final String password, final String name, final String number) { mHelpers.showProgressDialog(getString(R.string.creating_account)); mFirebaseAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { mHelpers.hideProgressDialog(); if (task.isSuccessful()) { Log.v(TAG, "New User Crated successfully"); String userID = mFirebaseAuth.getCurrentUser().getUid(); addNewUser(email, name, number, userID); } else { Log.w(TAG, task.getException().toString()); mHelpers.showAlertDialog(getString(R.string.error_message), task.getException().getMessage()).show(); } } }); } private void addNewUser(String email, String name, String number, String userID) { UserData user = new UserData(name, email, number); DatabaseReference mDatabaseReference = mFirebaseDatabase.getReference(); mDatabaseReference.child("users").child(userID).setValue(user) .addOnCompleteListener(this, new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.v(TAG, "New User Data stored successfully"); Intent intent = new Intent(SignupActivity.this, SigninActivity.class); startActivity(intent); } else { mHelpers.showAlertDialog(getString(R.string.error_message), task.getException().getMessage()).show(); Log.w(TAG, task.getException().toString()); } } }); } }