Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 39

User registration:

We will create one android application for users. Users can register them in android
application. Then user can add bank details with them profile. Users can select from and to
location using that android application when users are going to local or government bus and
user can generate amount according to that bus.

Location Selection:

A user has to select from and to location and it will generate fare details for based on that
location. Then we have entered the count of passengers and we get total amount. After that,
we have to use QR scanner for mobile payment.

Web Service:

Web service is like connecting android application and server. Server should run 24 hours
and it has to give all the details to database which data’s we are getting from users. We can
connect android application to server. It will collect all the details from android application
and it will send to server.

Database:

Admin can see all the details of users like where they are rode local bus. Then admin has to
analyze those details like users name, from location, to location, amount for bus fare and
admin id.

Classification:

We have classified that each and every 3 hours using SVM algorithm. Because, whenever
reach bus from one place to another place, it has to collect all the details from users who are
all using QR scanner in bus. Then we have analyzed the data like when and where we can
give another or extra bus for according to that place.
Architecture

Data Flow Diagram


Use Case Diagram
Class Diagram

Sequence Diagram
Activity Diagram
E – R Diagram
package com.example.buspay.ui.activity;

import android.app.Dialog;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.graphics.Bitmap;

import android.graphics.Paint;

import android.os.Bundle;

import android.support.design.widget.TextInputLayout;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.LinearLayout;

import android.widget.TextView;

import com.example.buspay.R;

import com.example.buspay.model.UserData;

import com.example.buspay.utils.CommonUtils;

import com.example.buspay.utils.DatabaseUtils;

import com.example.buspay.utils.LogUtils;

import com.example.buspay.utils.PreferenceUtils;

import com.google.firebase.database.DataSnapshot;

import com.google.firebase.database.DatabaseError;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import com.google.firebase.database.Query;

import com.google.firebase.database.ValueEventListener;

import com.google.firebase.storage.FirebaseStorage;

import butterknife.BindView;

import butterknife.ButterKnife;

public class LoginScreen extends AppCompatActivity {

@BindView(R.id.til_username)

TextInputLayout til_username;

@BindView(R.id.til_password)

TextInputLayout til_password;

@BindView(R.id.ed_username)

EditText ed_user_name;

@BindView(R.id.ed_password)

EditText ed_password;

@BindView(R.id.btn_login)

Button btn_login;

@BindView(R.id.llay_forget_password)

LinearLayout llay_forget_password;

@BindView(R.id.llay_register)

LinearLayout llay_register;

@BindView(R.id.tv_new_user)
TextView tv_new_user;

Dialog dialog;

FirebaseStorage storage;

int REQUEST_ID_STORAGE_PERMISSIONS=1;

public static final int PICK_IMAGE = 1;

Context context;

SharedPreferences prefs;

FirebaseDatabase database;

Bitmap bmSelected;

private static final int USER_LOGIN=1,ADMIN_LOGIN=2;

int LOGIN_TYPE=USER_LOGIN;

@Override

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login_screen);

try{

getSupportActionBar().hide();

ButterKnife.bind(this);

context = this;

prefs = getSharedPreferences(PreferenceUtils.PREF_NAME, MODE_PRIVATE);

database = FirebaseDatabase.getInstance();

storage=FirebaseStorage.getInstance();

LogUtils.i("Intent","Intent Action Login : "+getIntent().getAction()+" category :


"+getIntent().getCategories()+"data : "+getIntent().getData());

tv_new_user.setPaintFlags(tv_new_user.getPaintFlags() |
Paint.UNDERLINE_TEXT_FLAG);

btn_login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {


try{

if(LOGIN_TYPE==USER_LOGIN){

String strUserName = ed_user_name.getText().toString().trim();

String strPassword = ed_password.getText().toString().trim();

if (strUserName.length() == 12&&strPassword.length()>0 ) {

loginRequest(strUserName, strPassword);

} else {

if (strUserName.length() !=12) {

til_username.setError(getResources().getString(R.string.id_validation_field));

if (strPassword.length() == 0) {

til_password.setError(getResources().getString(R.string.empty_validation_field
));

}else{

String strUserName = ed_user_name.getText().toString().trim();

String strPassword = ed_password.getText().toString().trim();

if (strUserName.length() > 0&& strPassword.length()>0) {

if(strUserName.equals("admin")&&strPassword.equals("admin@123")){

PreferenceUtils.saveBoolean(PreferenceUtils.LOGIN_STATUS,true,prefs);

PreferenceUtils.saveText(PreferenceUtils.USER_ID,"admin",prefs);
PreferenceUtils.saveText(PreferenceUtils.USER_CODE,"admin",prefs);

PreferenceUtils.saveText(PreferenceUtils.USER_NAME,"Admin",prefs);

String strFcmToken=prefs.getString(PreferenceUtils.FCM_TOKEN,null);

sendFCMToken(strFcmToken,"admin");

CommonUtils.goNextScreen(LoginScreen.this, HomeScreen.class);

finish();

}else{

CommonUtils.showErrorToast(getResources().getString(R.string.invalidCre
dentials),context);

} else {

if (strUserName.length() ==0) {

til_username.setError(getResources().getString(R.string.empty_validation_fi
eld));

if (strPassword.length() == 0) {

til_password.setError(getResources().getString(R.string.empty_validation_field
));

}
}catch (Exception e){

LogUtils.printException(e);

});

// llay_forget_password.setOnClickListener(new View.OnClickListener() {

// @Override

// public void onClick(View view) {

// try{

// CommonUtils.goNextScreen(LoginScreen.this, ForgetPasswordScreen.class);

// }catch (Exception e){

// LogUtils.printException(e);

// }

//

// }

// });

llay_register.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

try{

Intent i=new Intent(LoginScreen.this,RegistrationScreen.class);


startActivity(i);

}catch (Exception e){

LogUtils.printException(e);

});

boolean isLogin=prefs.getBoolean(PreferenceUtils.LOGIN_STATUS,false);

if(isLogin){

String nUserType=prefs.getString(PreferenceUtils.USER_TYPE,null);

CommonUtils.goNextScreen(LoginScreen.this,HomeScreen.class);

finish();

}catch (Exception e){

LogUtils.printException(e);

/**

* This method is used to send login request

* @param strUsername User name


* @param strPassword Password

*/

private void loginRequest(final String strUsername, final String strPassword){

try{

DatabaseReference myRef = database.getReference(DatabaseUtils.TBL_USER);

CommonUtils.showProgress(context);

Query query=myRef.orderByChild("aadhar").equalTo(strUsername);

query.addListenerForSingleValueEvent(new ValueEventListener() {

@Override

public void onDataChange(DataSnapshot dataSnapshot) {

CommonUtils.hideProgress();

if (dataSnapshot.exists()) {

// dataSnapshot is the "issue" node with all children with id 0

for (DataSnapshot issue : dataSnapshot.getChildren()) {

UserData bd = issue.getValue(UserData.class);

if(bd!=null){

if(bd.getAadhar().equals(strUsername)&&bd.getPassword().equals(strPass
word)){
PreferenceUtils.saveBoolean(PreferenceUtils.LOGIN_STATUS,true,prefs)
;

PreferenceUtils.saveText(PreferenceUtils.USER_ID,bd.getId(),prefs);

PreferenceUtils.saveText(PreferenceUtils.USER_CODE,strUsername,pref
s);

PreferenceUtils.saveText(PreferenceUtils.USER_NAME,bd.getName(),pr
efs);

PreferenceUtils.saveText(PreferenceUtils.ACCOUNT,
bd.getAadhar(),prefs);

PreferenceUtils.saveText(PreferenceUtils.MOBILE,bd.getMobile(),prefs);

PreferenceUtils.saveText(PreferenceUtils.CITY,bd.getCity(),prefs);

String strFcmToken=prefs.getString(PreferenceUtils.FCM_TOKEN,null);

sendFCMToken(strFcmToken,bd.getId());

CommonUtils.goNextScreen(LoginScreen.this, HomeScreen.class);

finish();

}else{

CommonUtils.showErrorToast(getResources().getString(R.string.invalidC
redentials),context);

}else{

CommonUtils.showErrorToast(getResources().getString(R.string.invalidCre
dentials),context);

}
}

}else{

CommonUtils.showErrorToast(getResources().getString(R.string.invalidCreden
tials),context);

@Override

public void onCancelled(DatabaseError databaseError) {

});

}catch (Exception e){

LogUtils.printException(e);

private void sendFCMToken(String fcmtoken, String userId) {

try {

FirebaseDatabase database= FirebaseDatabase.getInstance();


final DatabaseReference myRef =
database.getReference(DatabaseUtils.TBL_USER).child(userId);

myRef.child("fcmToken").setValue(fcmtoken);

}catch (Exception e){

LogUtils.printException(e);

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[]


grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

try{

// if(requestCode==REQUEST_ID_STORAGE_PERMISSIONS&&grantResults[0]==
PackageManager.PERMISSION_GRANTED){

// LogUtils.i("permission","onRequestPermissionsResult permisssion granted...


permission : "+permissions.toString()+" result : "+grantResults.toString());

// Intent intent = new Intent();

// intent.setType("image/*");

// intent.setAction(Intent.ACTION_GET_CONTENT);

// startActivityForResult(Intent.createChooser(intent, "Select Finger Print"),


PICK_IMAGE);

// }

}catch (Exception e){

LogUtils.printException(e);
}

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data)

package com.example.buspay.ui.activity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.os.Handler;

import android.support.annotation.NonNull;

import android.support.design.widget.TextInputLayout;

import android.support.v7.app.AppCompatActivity;

import android.text.Editable;

import android.text.TextWatcher;

import android.view.KeyEvent;

import android.view.MenuItem;

import android.view.View;
import android.widget.Button;

import android.widget.EditText;

import com.example.buspay.R;

import com.example.buspay.model.UserData;

import com.example.buspay.utils.CommonUtils;

import com.example.buspay.utils.DatabaseUtils;

import com.example.buspay.utils.LogUtils;

import com.example.buspay.utils.PreferenceUtils;

import com.google.android.gms.tasks.OnFailureListener;

import com.google.android.gms.tasks.OnSuccessListener;

import com.google.firebase.database.DataSnapshot;

import com.google.firebase.database.DatabaseError;

import com.google.firebase.database.DatabaseReference;

import com.google.firebase.database.FirebaseDatabase;

import com.google.firebase.database.Query;

import com.google.firebase.database.ValueEventListener;

import butterknife.BindView;

import butterknife.ButterKnife;

public class RegistrationScreen extends AppCompatActivity {

Context context;

SharedPreferences prefs;
@BindView(R.id.til_name)

TextInputLayout til_name;

@BindView(R.id.ed_name)

EditText ed_name;

@BindView(R.id.til_mobile)

TextInputLayout til_mobile;

@BindView(R.id.ed_mobile)

EditText ed_mobile;

@BindView(R.id.til_password)

TextInputLayout til_password;

@BindView(R.id.ed_password)

EditText ed_password;

@BindView(R.id.til_id)

TextInputLayout til_id;

@BindView(R.id.ed_id)

EditText ed_id;

@BindView(R.id.til_city)

TextInputLayout til_city;

@BindView(R.id.ed_city)

EditText ed_city;
@BindView(R.id.btn_register)

Button btnRegister;

FirebaseDatabase database;

int isMobileNumberAvailable=0;

int isAccountAvailable=0;

Handler handler=new Handler();

long createdTime=0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_registration_screen);

try{

ButterKnife.bind(this);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

context=this;
prefs=getSharedPreferences(PreferenceUtils.PREF_NAME,MODE_PRIVATE);

database = FirebaseDatabase.getInstance();

getSupportActionBar().setTitle(getResources().getString(R.string.sign_up));

btnRegister.setText(getResources().getString(R.string.sign_up));

btnRegister.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

try{

String strId = ed_id.getText().toString().trim();

String strName = ed_name.getText().toString().trim();

// String strCountryCode = ed_countrycode.getText().toString().trim();

String strMobile = ed_mobile.getText().toString().trim();

String strPassword = ed_password.getText().toString().trim();

String strCity = ed_city.getText().toString().trim();

if (strId.length()==12&&isAccountAvailable==0&&strName.length() > 0 &&


strMobile.length() > 0&&isMobileNumberAvailable==0 && strMobile.length()==10
&&strPassword.length()>0&&CommonUtils.isValidPassword(strPassword)&&strCity.length()
>0) {

registerRequest(strId,strName,strMobile,strPassword,strCity);

} else {
if (strName.length() == 0) {

til_name.setError(getResources().getString(R.string.empty_validation_fiel
d));

if (strCity.length() == 0) {

til_city.setError(getResources().getString(R.string.empty_validation_field))
;

if (strId.length() != 12) {

til_id.setError(getResources().getString(R.string.id_validation_field));

}else if(isAccountAvailable==1){

til_id.setError(getResources().getString(R.string.alreadyExist));

if (strMobile.length() == 0) {

til_mobile.setError(getResources().getString(R.string.empty_validation_fie
ld));

}else if(strMobile.length()!=10 ){

til_mobile.setError(getResources().getString(R.string.valid_mobile));

}else if(isMobileNumberAvailable==1){

til_mobile.setError(getResources().getString(R.string.mobile_already_exist
));

}
if (strPassword.length() == 0) {

til_password.setError(getResources().getString(R.string.empty_validation_
field));

}else if(!CommonUtils.isValidPassword(strPassword)){

til_password.setError(getResources().getString(R.string.valid_password_er
ror));

}catch (Exception e){

LogUtils.printException(e);

});

ed_mobile.addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

@Override

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

if(CommonUtils.isValid(ed_mobile)){
til_mobile.setError(null);

handler.removeCallbacks(runnableMobile);

handler.postDelayed(runnableMobile,CommonUtils.EDITBOX_DELAY);

@Override

public void afterTextChanged(Editable editable) {

});

ed_id.addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

@Override

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

if(CommonUtils.isValid(ed_id)){

til_id.setError(null);

handler.removeCallbacks(runnableAccountId);

handler.postDelayed(runnableAccountId,CommonUtils.EDITBOX_DELAY);

@Override
public void afterTextChanged(Editable editable) {

});

CommonUtils.initTextChangeEvent(ed_name,til_name);

// CommonUtils.initTextChangeEvent(ed_countrycode,til_countrycode);

CommonUtils.initTextChangeEvent(ed_password,til_password);

}catch (Exception e){

LogUtils.printException(e);

Runnable runnableMobile=new Runnable() {

@Override

public void run() {

try{

String strMobile=ed_mobile.getText().toString().trim();

if(CommonUtils.isValidMobile(strMobile)){

checkMobileNumberExist();
}else{

til_mobile.setError(getResources().getString(R.string.valid_mobile));

}catch (Exception e){

LogUtils.printException(e);

};

Runnable runnableAccountId=new Runnable() {

@Override

public void run() {

try{

String strId=ed_id.getText().toString().trim();

if(strId.length()==12){

checkAccountIdExist();

}else{

til_id.setError(getResources().getString(R.string.id_validation_field));

}catch (Exception e){

LogUtils.printException(e);

};
private void checkMobileNumberExist(){

try {

final String strMobile=ed_mobile.getText().toString().trim();

DatabaseReference myRef = database.getReference(DatabaseUtils.TBL_USER);

isMobileNumberAvailable=0;

Query query=myRef.orderByChild("mobile").equalTo(strMobile);

query.addListenerForSingleValueEvent(new ValueEventListener() {

@Override

public void onDataChange(DataSnapshot dataSnapshot) {

// CommonUtils.hideProgress();

if (dataSnapshot.exists()) {

// dataSnapshot is the "issue" node with all children with id 0

for (DataSnapshot issue : dataSnapshot.getChildren()) {

UserData bd = issue.getValue(UserData.class);

if(bd!=null){

if(bd.getMobile()!=null&&bd.getMobile().equals(strMobile)){

isMobileNumberAvailable=1;
til_mobile.setError(getResources().getString(R.string.mobile_already_
exist));

}else{

}else{

}else{

@Override

public void onCancelled(DatabaseError databaseError) {

});

} catch (Exception e) {

LogUtils.printException(e);

}
private void checkAccountIdExist(){

try {

final String strAccountId=ed_id.getText().toString().trim();

DatabaseReference myRef = database.getReference(DatabaseUtils.TBL_USER);

isAccountAvailable=0;

Query query=myRef.orderByChild("aadhar").equalTo(strAccountId);

query.addListenerForSingleValueEvent(new ValueEventListener() {

@Override

public void onDataChange(DataSnapshot dataSnapshot) {

// CommonUtils.hideProgress();

if (dataSnapshot.exists()) {

// dataSnapshot is the "issue" node with all children with id 0

for (DataSnapshot issue : dataSnapshot.getChildren()) {

UserData bd = issue.getValue(UserData.class);

if(bd!=null){

if(bd.getAadhar()!=null&&bd.getAadhar().equals(strAccountId)){

isAccountAvailable=1;
til_id.setError(getResources().getString(R.string.alreadyExist));

}else{

}else{

}else{

@Override

public void onCancelled(DatabaseError databaseError) {

});

} catch (Exception e) {

LogUtils.printException(e);

}
@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

// Respond to the action bar's Up/Home button

case android.R.id.home:

goBack();

return true;

return super.onOptionsItemSelected(item);

/**

* To handle back event

*/

private void goBack(){

try{

finish();

}catch (Exception e){

LogUtils.printException(e);

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

try{
if (keyCode == KeyEvent.KEYCODE_BACK) {

goBack();

return true;

}catch (Exception e){

LogUtils.printException(e);

return super.onKeyDown(keyCode, event);

@Override

protected void onPause() {

super.onPause();

@Override

protected void onResume() {

super.onResume();

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[]


grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

try{

}catch (Exception e){

LogUtils.printException(e);

/**

* This method is used to send user registration request

*/

private void registerRequest(final String strId, String strName, final String strMobile, String
strPwd, String strCity){

try {

DatabaseReference myRef = database.getReference(DatabaseUtils.TBL_USER);

String id=myRef.push().getKey();

final long modifiedTime= System.currentTimeMillis();

if(createdTime==0){

createdTime=modifiedTime;
}

String strFCMToken=prefs.getString(PreferenceUtils.FCM_TOKEN,null);

UserData bd=new
UserData(id,strId,strName,strMobile,strPwd,strFCMToken,strCity,createdTime,modifiedTim
e);

CommonUtils.showProgress(context);

myRef.child(id).setValue(bd).addOnSuccessListener(new OnSuccessListener<Void>() {

@Override

public void onSuccess(Void aVoid) {

CommonUtils.hideProgress();

CommonUtils.showSuccessToast(getResources().getString(R.string.saveSuccess),
context);

goBack();

}).addOnFailureListener(new OnFailureListener() {

@Override

public void onFailure(@NonNull Exception e) {

CommonUtils.hideProgress();

});
}catch (Exception e){

LogUtils.printException(e);

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data)

You might also like