package monnethic.mobile.homepage; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.Toast; import com.example.monnthic.monnethicmobile.R; import org.json.JSONObject; import monnethic.mobile.database.User; import monnethic.mobile.restApi.UserApiHandler; import monnethic.mobile.wallet.HomeWalletActivity; public class LoginActivity extends AppCompatActivity { private EditText email; private EditText password; private Button buttonCancel; private Button buttonOk; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); email = findViewById(R.id.editTextEmail); password = findViewById(R.id.editTextPassword); buttonCancel = findViewById(R.id.buttonCancel); buttonOk = findViewById(R.id.buttonOkLogin); buttonCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); buttonOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { validateInput(); } }); } /* public void onClickForgetPassword(View v){ Toast.makeText(this, "Forget password", Toast.LENGTH_SHORT).show(); } public void onClickForgetEmail(View v){ Toast.makeText(this, "Forget email", Toast.LENGTH_SHORT).show(); } */ private void validateInput(){ InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),0); if(InputController.isEmptyEdit(email)){ Toast.makeText(this, "You did not enter your email", Toast.LENGTH_SHORT).show(); } else if(!InputController.validEmail(email.getText().toString())){ Toast.makeText(this, "Your email is invalid", Toast.LENGTH_SHORT).show(); } else if(InputController.isEmptyEdit(password)) { Toast.makeText(this, "You did not enter your password", Toast.LENGTH_SHORT).show(); } else { User user = new User(email.getText().toString(),password.getText().toString()); new UserLoggerTask(this).execute(user); } } //AsyncTask for login private class UserLoggerTask extends AsyncTask { Context mContext; RelativeLayout progress = findViewById(R.id.progressLayout); private UserLoggerTask(final Context context){ mContext = context; } @Override protected void onPreExecute() { super.onPreExecute(); email.setEnabled(false); password.setEnabled(false); buttonCancel.setEnabled(false); buttonOk.setEnabled(false); getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); progress.setVisibility(View.VISIBLE); } @Override protected void onPostExecute(JSONObject jsonObject) { try{ if(jsonObject!=null){ if(jsonObject.getInt("status")==404){ Toast.makeText(mContext, "User Not Found", Toast.LENGTH_SHORT).show(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); progress.setVisibility(View.GONE); email.setEnabled(true); password.setEnabled(true); buttonCancel.setEnabled(true); buttonOk.setEnabled(true); } else if(jsonObject.getInt("status")==403){ Toast.makeText(mContext, "Wrong authentication", Toast.LENGTH_SHORT).show(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); progress.setVisibility(View.GONE); email.setEnabled(true); password.setEnabled(true); buttonCancel.setEnabled(true); buttonOk.setEnabled(true); } else if(jsonObject.getInt("status")==200){ Intent walletHomeIntent = new Intent(LoginActivity.this, HomeWalletActivity.class); walletHomeIntent.putExtra("USER_HASH", jsonObject.getString("user_hash")); walletHomeIntent.putExtra("USER_PWD",password.getText().toString()); walletHomeIntent.putExtra("SESSION_ID",jsonObject.getString("session_id")); walletHomeIntent.putExtra("email",email.getText().toString()); Boolean approved = new CheckApprovalTask().execute(jsonObject.getString("user_hash"),email.getText().toString()).get(); walletHomeIntent.putExtra("approved", approved.toString()); LoginActivity.this.startActivity(walletHomeIntent); finish(); } else { Toast.makeText(mContext, "AN ERROR OCCURED", Toast.LENGTH_SHORT).show(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); progress.setVisibility(View.GONE); email.setEnabled(true); password.setEnabled(true); buttonCancel.setEnabled(true); buttonOk.setEnabled(true); } }else{ Toast.makeText(mContext, "AN ERROR OCCURED", Toast.LENGTH_SHORT).show(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); progress.setVisibility(View.GONE); email.setEnabled(true); password.setEnabled(true); buttonCancel.setEnabled(true); buttonOk.setEnabled(true); } }catch (Exception e){ e.printStackTrace(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); progress.setVisibility(View.GONE); email.setEnabled(true); password.setEnabled(true); buttonCancel.setEnabled(true); buttonOk.setEnabled(true); } } @Override protected JSONObject doInBackground(User... u) { try{ UserApiHandler userApiHandler = new UserApiHandler(); return userApiHandler.loginUser(u[0]); }catch (Exception e){ e.printStackTrace(); return null; } } } private class CheckApprovalTask extends AsyncTask{ @Override protected Boolean doInBackground(String... strings) { try{ UserApiHandler userApiHandler = new UserApiHandler(); return userApiHandler.checkApproval(strings[0],strings[1]); }catch (Exception e){ return null; } } } }