Commit 11089ae0 authored by Bhavesh Yadav's avatar Bhavesh Yadav

Finished checkout and charging

parent 9785da74
......@@ -25,6 +25,7 @@ public class checkout extends Activity {
String slot_number,ticket_number;
LinearLayout innerll;
ArrayList ticketData;
long checkInTimeLong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -72,19 +73,20 @@ public class checkout extends Activity {
}
else{
sqlite_ops so=new sqlite_ops(this);
so.check_out(slot_number,ticket_number,this);
so.check_out(slot_number,ticket_number,checkInTimeLong,this);
}
}
}
public void checkoutSuccess(Long checkoutDateTime) {
public void checkoutSuccess(Long checkoutDateTime,int charges) {
Intent i = new Intent(this, ticket.class);
long datetime = Long.parseLong(checkoutDateTime.toString());
Date date = new Date(datetime*1000);
Format format = new SimpleDateFormat("dd/MM/yy HH:mm");
String dateString = format.format(date);
ticketData.add(6,dateString);
ticketData.add(7,charges);
i.putExtra("ticket_data", ticketData);
i.putExtra("ticket_no",ticket_number);
i.putExtra("checkout",true);
......@@ -164,8 +166,8 @@ public class checkout extends Activity {
public void showTicketDetails(ArrayList data) {
name.setText(data.get(4).toString());
slot.setText(data.get(1).toString());
long datetime = Long.parseLong(data.get(3).toString());
Date date = new Date(datetime*1000);
checkInTimeLong = Long.parseLong(data.get(3).toString());
Date date = new Date(checkInTimeLong*1000);
Format format = new SimpleDateFormat("dd/MM/yy HH:mm");
String dateString = format.format(date);
data.add(3,dateString);
......
......@@ -28,6 +28,8 @@ import java.util.HashMap;
import java.util.Map;
import static android.content.ContentValues.TAG;
import static com.google.common.primitives.UnsignedLongs.max;
import static com.google.common.primitives.UnsignedLongs.min;
public class sqlite_ops extends SQLiteOpenHelper{
FirebaseFirestore fdb;
......@@ -458,13 +460,16 @@ public class sqlite_ops extends SQLiteOpenHelper{
});
}
public void check_out(String slot,final String tkt,final checkout co){
public void check_out(String slot,final String tkt,long checkInDateTime,final checkout co){
// SQLiteDatabase db= this.getWritableDatabase();
// db.execSQL("update records set check_out=current_timestamp,isempty=1 where tkt_no="+tkt);
// db.execSQL("update slots set status=0 where slot='"+slot+"'");
// db.close();
// return true;
Log.e("Checkout called",tkt);
final Long checkoutTimeStamp = System.currentTimeMillis()/1000;
final Long Difference = (checkoutTimeStamp - checkInDateTime)/60*60;
fdb = FirebaseFirestore.getInstance();
final CollectionReference collection= fdb.collection("slots");
fdb.collection("slots").whereEqualTo("slot",slot).get()
......@@ -476,19 +481,8 @@ public class sqlite_ops extends SQLiteOpenHelper{
for (QueryDocumentSnapshot document : task.getResult()) {
String id = document.getId();
collection.document(id).update("status", 0);
fdb.collection("records").document(tkt).update(
"checkOutDateTime",checkoutTimeStamp,
"status","0"
).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()) {
co.checkoutSuccess(checkoutTimeStamp);
}else {
co.checkoutFailed();
}
}
});
}
}
else {
......@@ -496,6 +490,36 @@ public class sqlite_ops extends SQLiteOpenHelper{
}
}
});
fdb.collection("misc").document("rate").get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
int rate = Integer.parseInt(task.getResult().get("value").toString());
long difference = max(Difference,1);
Log.d("Charges","Difference"+difference);
final int charges = Math.round(difference*rate);
Log.d("Charges","Charge"+charges);
fdb.collection("records").document(tkt).update(
"checkOutDateTime",checkoutTimeStamp,
"status","0",
"charges",charges
).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()) {
userInfo uinfo = userInfo.getInstance();
uinfo.deductCharge(charges);
updateBalance(uinfo.getUsername(),uinfo.getBalance());
co.checkoutSuccess(checkoutTimeStamp,charges);
}else {
co.checkoutFailed();
}
}
});
}
});
}
......
......@@ -5,6 +5,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
......@@ -14,8 +15,10 @@ import java.util.ArrayList;
import java.util.Date;
public class ticket extends Activity {
TextView slot,tkt,time_tv,date_tv,vehicle,ticket_title,checkout_label,checkout_time;
TextView checkout_date_label,checkout_date;
LinearLayout checkout_parent,checkout_date_parent;
LinearLayout charge_parent;
TextView slot,tkt,time_tv,date_tv,vehicle,ticket_title,checkout_time,charge_value;
TextView checkout_date;
ArrayList ticketData;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -28,10 +31,12 @@ public class ticket extends Activity {
time_tv=findViewById(R.id.time_tv);
date_tv=findViewById(R.id.date_tv);
ticket_title=findViewById(R.id.ticket_title);
checkout_label=findViewById(R.id.checkout_label);
checkout_parent = findViewById(R.id.checkout_parent);
charge_parent = findViewById(R.id.charge_parent);
checkout_date_parent = findViewById(R.id.checkout_date_parent);
charge_value = findViewById(R.id.charge_value);
checkout_time=findViewById(R.id.checkout_time);
checkout_date=findViewById(R.id.checkout_date);
checkout_date_label=findViewById(R.id.checkout_date_label);
Intent i=getIntent();
String ticket_no;
if(i.hasExtra("ticket_data")){
......@@ -53,20 +58,23 @@ public class ticket extends Activity {
// ticketData=so.getTicketDetails(ticket_no);
Log.d("CHECKOUT","successfully checkout out");
ticket_title.setText("Checkout Receipt");
checkout_label.setVisibility(View.VISIBLE);
checkout_time.setVisibility(View.VISIBLE);
checkout_date.setVisibility(View.VISIBLE);
checkout_date_label.setVisibility(View.VISIBLE);
checkout_parent.setVisibility(View.VISIBLE);
//checkout_time.setVisibility(View.VISIBLE);
checkout_date_parent.setVisibility(View.VISIBLE);
charge_parent.setVisibility(View.VISIBLE);
//checkout_date_label.setVisibility(View.VISIBLE);
String checkout_date_data=ticketData.get(6).toString();
String[] checkoutdateandtime=checkout_date_data.split(" ");
checkout_date.setText(checkoutdateandtime[0]);
checkout_time.setText(checkoutdateandtime[1]);
charge_value.setText(ticketData.get(7).toString());
}else {
ticket_title.setText("Parking Ticket");
checkout_label.setVisibility(View.INVISIBLE);
checkout_time.setVisibility(View.INVISIBLE);
checkout_date.setVisibility(View.INVISIBLE);
checkout_date_label.setVisibility(View.INVISIBLE);
checkout_parent.setVisibility(View.GONE);
//checkout_time.setVisibility(View.INVISIBLE);
//checkout_date.setVisibility(View.INVISIBLE);
checkout_date_parent.setVisibility(View.GONE);
charge_parent.setVisibility(View.GONE);
}
if(i.hasExtra("ticket_data")) {
......
......@@ -2,6 +2,8 @@ package com.example.infiniteLoop.parkingo;
import android.util.Log;
import static java.lang.StrictMath.max;
public class userInfo {
public static userInfo u_instance=null;
private String username=null;
......@@ -35,4 +37,5 @@ public class userInfo {
public int getBalance(){return this.balance;}
public void setBalance(int newBalance){this.balance = newBalance;}
public void deductCharge(int charge) {this.balance = max(this.balance - charge,0);}
}
......@@ -42,7 +42,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date:"
android:text="Check-in Date:"
android:textColor="#000"
android:gravity="left"
android:textSize="20sp" />
......@@ -66,7 +66,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Time:"
android:text="Check-in Time:"
android:textSize="20sp"
android:textColor="#000"
......@@ -130,11 +130,13 @@
android:text="parking slot"/>
</LinearLayout>
<LinearLayout
android:id="@+id/checkout_date_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:gravity="left"
android:orientation="horizontal">
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/checkout_date_label"
......@@ -144,7 +146,7 @@
android:textColor="#000"
android:gravity="left"
android:textSize="20sp"
android:visibility="gone"/>
android:visibility="visible"/>
<TextView
android:id="@+id/checkout_date"
......@@ -155,14 +157,16 @@
android:textStyle="bold"
android:paddingLeft="10dp"
android:text="Date here"
android:visibility="gone"/>
android:visibility="visible"/>
</LinearLayout>
<LinearLayout
android:id="@+id/checkout_parent"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left">
android:gravity="left"
android:visibility="gone">
<TextView
android:id="@+id/checkout_label"
android:layout_width="wrap_content"
......@@ -170,7 +174,7 @@
android:text="Checkout Time:"
android:textSize="20sp"
android:textColor="#000"
android:visibility="gone"
android:visibility="visible"
/>
<TextView
......@@ -182,8 +186,36 @@
android:textStyle="bold"
android:paddingLeft="10dp"
android:text="time here"
android:visibility="gone"/>
android:visibility="visible"/>
</LinearLayout>
<LinearLayout
android:id="@+id/charge_parent"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left"
android:visibility="gone">
<TextView
android:id="@+id/charge_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Charge :"
android:textSize="20sp"
android:textColor="#000"
android:visibility="visible"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/charge_value"
android:textSize="20sp"
android:textColor="#000"
android:textStyle="bold"
android:paddingLeft="10dp"
android:text="0"
android:visibility="visible"/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="25dp"
android:layout_width="match_parent"
......
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