Commit 5b54ae00 authored by Bhavesh Yadav's avatar Bhavesh Yadav

Slots now are fetched from firebase

parent fd09b9c5
package com.example.infiniteLoop.parkingo; package com.example.infiniteLoop.parkingo;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
...@@ -20,6 +21,7 @@ public class category_wise_availability extends Activity { ...@@ -20,6 +21,7 @@ public class category_wise_availability extends Activity {
String result; String result;
ListView lv; ListView lv;
ArrayList slots; ArrayList slots;
ProgressDialog progress;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -32,35 +34,35 @@ public class category_wise_availability extends Activity { ...@@ -32,35 +34,35 @@ public class category_wise_availability extends Activity {
if(v.getId()==R.id.car){ if(v.getId()==R.id.car){
if(checked){ if(checked){
sqlite_ops so=new sqlite_ops(this); sqlite_ops so=new sqlite_ops(this);
slots=so.getFreeSlots("car"); slots=so.getFreeSlots(this,"car");
if(slots.size()>0){ progress = new ProgressDialog(category_wise_availability.this);
ArrayAdapter aa=new ArrayAdapter(this,R.layout.spinner_layout,slots); progress.setTitle("Loading");
lv.setAdapter(aa); progress.setMessage("Wait while loading...");
} progress.setCancelable(false); // disable dismiss by tapping outside of the dialog
else{ progress.show();
ArrayAdapter aa=new ArrayAdapter(this,R.layout.spinner_layout,new String[]{"No free slots"});
lv.setAdapter(aa);
}
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(slots.size()>0){
result=slots.get(i).toString();
sendResult();
}
}
});
} }
} }
else if(v.getId()==R.id.bike){ else if(v.getId()==R.id.bike){
if(checked){ if(checked){
sqlite_ops so=new sqlite_ops(this); sqlite_ops so=new sqlite_ops(this);
slots=so.getFreeSlots("bike"); slots=so.getFreeSlots(this,"bike");
progress = new ProgressDialog(category_wise_availability.this);
progress.setTitle("Loading");
progress.setMessage("Wait while loading...");
progress.setCancelable(false); // disable dismiss by tapping outside of the dialog
progress.show();
}
}
}
public void returnSlots(final ArrayList slots){
progress.dismiss();
if(slots.size()>0){ if(slots.size()>0){
ArrayAdapter aa=new ArrayAdapter(this,R.layout.spinner_layout,slots); ArrayAdapter aa=new ArrayAdapter(this,R.layout.spinner_layout,slots);
lv.setAdapter(aa); lv.setAdapter(aa);
} }
else{ else{
ArrayAdapter aa=new ArrayAdapter(this,R.layout.spinner_layout,new String[]{"No free slots"}); ArrayAdapter aa=new ArrayAdapter(this,R.layout.spinner_layout,new String[]{"No free slots"});
...@@ -69,17 +71,14 @@ public class category_wise_availability extends Activity { ...@@ -69,17 +71,14 @@ public class category_wise_availability extends Activity {
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(slots.size()>0) { if(slots.size()>0){
result = slots.get(i).toString(); result=slots.get(i).toString();
sendResult(); sendResult();
} }
} }
}); });
} }
}
}
public void sendResult(){ public void sendResult(){
Intent returnResult=getIntent(); Intent returnResult=getIntent();
returnResult.putExtra("result",result); returnResult.putExtra("result",result);
......
...@@ -35,6 +35,8 @@ public class login_activity extends Activity { ...@@ -35,6 +35,8 @@ public class login_activity extends Activity {
TextView logmsg; TextView logmsg;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
final sqlite_ops so=new sqlite_ops(login_activity.this);
so.initFirebase();
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.login_layout); setContentView(R.layout.login_layout);
username=findViewById(R.id.username); username=findViewById(R.id.username);
...@@ -94,6 +96,7 @@ public class login_activity extends Activity { ...@@ -94,6 +96,7 @@ public class login_activity extends Activity {
sqlite_ops so=new sqlite_ops(login_activity.this); sqlite_ops so=new sqlite_ops(login_activity.this);
//so.insert_login_details(); //so.insert_login_details();
login li=new login(); login li=new login();
li.setPass(uname); li.setPass(uname);
li.setUname(pass); li.setUname(pass);
...@@ -129,6 +132,7 @@ public class login_activity extends Activity { ...@@ -129,6 +132,7 @@ public class login_activity extends Activity {
} }
}); });
} }
public void loginSuccess() { public void loginSuccess() {
......
...@@ -9,6 +9,8 @@ import android.util.Log; ...@@ -9,6 +9,8 @@ import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.DocumentReference; import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.DocumentSnapshot;
...@@ -18,18 +20,23 @@ import com.google.firebase.firestore.QueryDocumentSnapshot; ...@@ -18,18 +20,23 @@ import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot; import com.google.firebase.firestore.QuerySnapshot;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import static android.content.ContentValues.TAG; import static android.content.ContentValues.TAG;
public class sqlite_ops extends SQLiteOpenHelper{ public class sqlite_ops extends SQLiteOpenHelper{
FirebaseFirestore fdb; FirebaseFirestore fdb;
public static final int DATABASE_VERSION=1; public static final int DATABASE_VERSION=1;
public static final String DATABASE_NAME="parkingo.db"; public static final String DATABASE_NAME="parkingo.db";
public sqlite_ops(Context context) { public sqlite_ops(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); super(context, DATABASE_NAME, null, DATABASE_VERSION);
} }
public void onCreate(SQLiteDatabase db){ public void onCreate(SQLiteDatabase db){
// initFirebase();
Log.d("Firebase","INside Oncreate sql");
db.execSQL("create table admin(username varchar unique,password varchar)"); db.execSQL("create table admin(username varchar unique,password varchar)");
db.execSQL("create table slots(id integer primary key autoincrement ,slot varchar unique,status int,category text)"); db.execSQL("create table slots(id integer primary key autoincrement ,slot varchar unique,status int,category text)");
db.execSQL("create table records(tkt_no integer primary key autoincrement,name varchar,mobile int,slot varchar,vehicle varchar,check_in timestamp,check_out timestamp,isempty int)"); db.execSQL("create table records(tkt_no integer primary key autoincrement,name varchar,mobile int,slot varchar,vehicle varchar,check_in timestamp,check_out timestamp,isempty int)");
...@@ -43,12 +50,61 @@ public class sqlite_ops extends SQLiteOpenHelper{ ...@@ -43,12 +50,61 @@ public class sqlite_ops extends SQLiteOpenHelper{
slot+="0"; slot+="0";
slot+=j; slot+=j;
if(i<2) if(i<2)
//slotObj.put("category","BIKE");
db.execSQL("insert into slots values(null,'"+slot+"',0,'BIKE')"); db.execSQL("insert into slots values(null,'"+slot+"',0,'BIKE')");
else else
//slotObj.put("category","CAR");
db.execSQL("insert into slots values(null,'"+slot+"',0,'CAR')"); db.execSQL("insert into slots values(null,'"+slot+"',0,'CAR')");
//slotObj.put("slot",slot);
}
}
}
public void initFirebase() {
//AddSlotsToFirebase();
fdb = FirebaseFirestore.getInstance();
}
public void AddSlotsToFirebase() {
Log.d("Firebase","Adding slots");
Map<String, Object> slotObj = new HashMap<>();
slotObj.put("status", 0);
//city.put("state", "CA");
//city.put("country", "USA");
for(int i=0;i<5;i++){
for(int j=0;j<15;j++){
char s=(char)(i+65);
String slot=Character.toString(s);
if(j<10)
slot+="0";
slot+=j;
if(i<2)
slotObj.put("category","BIKE");
//db.execSQL("insert into slots values(null,'"+slot+"',0,'BIKE')");
else
slotObj.put("category","CAR");
//db.execSQL("insert into slots values(null,'"+slot+"',0,'CAR')");
slotObj.put("slot",slot);
fdb.collection("slots")
.add(slotObj)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference docref) {
Log.d(TAG, "DocumentSnapshot successfully written!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error writing document", e);
}
});
} }
} }
} }
@Override @Override
...@@ -64,7 +120,8 @@ public class sqlite_ops extends SQLiteOpenHelper{ ...@@ -64,7 +120,8 @@ public class sqlite_ops extends SQLiteOpenHelper{
public boolean fetch_login_details(login li,final login_activity la){ public boolean fetch_login_details(login li,final login_activity la){
/* SQLiteDatabase db= this.getReadableDatabase(); // SQLiteDatabase db= this.getReadableDatabase();
/*
//Log.d(TAG, "fetch_login_details: "+li.getUname()+" "+li.getPass()); //Log.d(TAG, "fetch_login_details: "+li.getUname()+" "+li.getPass());
Cursor cursor = db.query("admin",new String[]{"username","password"},"username"+ "=?", Cursor cursor = db.query("admin",new String[]{"username","password"},"username"+ "=?",
new String[]{li.getUname()}, null, null, null, null); new String[]{li.getUname()}, null, null, null, null);
...@@ -103,15 +160,21 @@ public class sqlite_ops extends SQLiteOpenHelper{ ...@@ -103,15 +160,21 @@ public class sqlite_ops extends SQLiteOpenHelper{
public void onComplete(@NonNull Task<QuerySnapshot> task) { public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) { if(task.isSuccessful()) {
QuerySnapshot documentSnapshot = task.getResult(); QuerySnapshot documentSnapshot = task.getResult();
// Log.d("Firebase",documentSnapshot.);
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
if(documentSnapshot.isEmpty()) { if(documentSnapshot.isEmpty()) {
la.loginFailure(); la.loginFailure();
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
Log.d("Login","Failure"); Log.d("Login","Failure");
}else { }else {
la.loginSuccess(); la.loginSuccess();
Log.d("Login", "Success"); Log.d("Login", "Success");
} }
}else }else
la.loginFailure();
Log.d("Login","Failure"); Log.d("Login","Failure");
} }
...@@ -130,24 +193,59 @@ public class sqlite_ops extends SQLiteOpenHelper{ ...@@ -130,24 +193,59 @@ public class sqlite_ops extends SQLiteOpenHelper{
return true; return true;
} }
public ArrayList getFreeSlots(String category){ public ArrayList getFreeSlots(final category_wise_availability cd, String category){
String[] cat=new String[]{category.toUpperCase(),"0"}; String[] cat=new String[]{category.toUpperCase(),"0"};
ArrayList slots=new ArrayList(); final ArrayList slots=new ArrayList();
SQLiteDatabase db= this.getWritableDatabase(); // SQLiteDatabase db= this.getWritableDatabase();
Cursor cursor = db.query("slots",new String[]{"slot"},"category=? and status=?", // Cursor cursor = db.query("slots",new String[]{"slot"},"category=? and status=?",
cat, null, null, null, null); // cat, null, null, null, null);
if(cursor!=null){ // if(cursor!=null){
cursor.moveToFirst(); // cursor.moveToFirst();
if(cursor.getCount()!=0){ // if(cursor.getCount()!=0){
do{ // do{
String data = cursor.getString(cursor.getColumnIndex("slot")); // String data = cursor.getString(cursor.getColumnIndex("slot"));
slots.add(data); // slots.add(data);
// do what ever you want here // // do what ever you want here
}while(cursor.moveToNext()); // }while(cursor.moveToNext());
// }
// }
// db.close();
Log.d("Slots",slots.toString());
fdb = FirebaseFirestore.getInstance();
Query query = fdb.collection("slots").whereEqualTo("category",cat[0])
.whereEqualTo("status",0);
if(query!=null)
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
QuerySnapshot documentSnapshot = task.getResult();
// Log.d("Firebase",documentSnapshot.);
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
slots.add(document.getData().get("slot"));
}
if(documentSnapshot.isEmpty()) {
// la.loginFailure();
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
} }
Log.d("Login","Failure");
}else {
// la.loginSuccess();
Collections.sort(slots);
cd.returnSlots(slots);
Log.d("Login", "Success");
} }
db.close(); }else
Log.d("Login","Failure");
}
});
Log.d("Slots",slots.toString());
return slots; return slots;
} }
public ArrayList getAllSlots(String category){ public ArrayList getAllSlots(String category){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment