diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
deleted file mode 100644
index 2a9c5e0..0000000
--- a/.idea/assetWizardSettings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b0c7b20..e0d5b93 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -29,7 +29,7 @@
-
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7b30fd2..e0d9e1e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,5 @@
apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
android {
compileSdkVersion 28
@@ -6,8 +7,8 @@ android {
applicationId "h_mal.appttude.com.driver"
minSdkVersion 24
targetSdkVersion 28
- versionCode 1
- versionName "1.0"
+ versionCode 5
+ versionName "1.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -22,17 +23,24 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
- implementation 'com.android.support.constraint:constraint-layout:1.1.3'
- implementation 'com.android.support:cardview-v7:26.1.0'
+ implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
+ implementation 'com.android.support:exifinterface:28.0.0'
+ implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
+ implementation 'com.github.chrisbanes:PhotoView:2.1.0'
implementation 'com.squareup.picasso:picasso:2.71828'
+ implementation 'com.google.code.gson:gson:2.3.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ androidTestImplementation 'com.android.support.test:rules:1.0.2'
}
apply plugin: 'com.google.gms.google-services'
+repositories {
+ mavenCentral()
+}
diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/ExampleInstrumentedTest.java b/app/src/androidTest/java/h_mal/appttude/com/driver/ExampleInstrumentedTest.java
index fd25303..750d904 100644
--- a/app/src/androidTest/java/h_mal/appttude/com/driver/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/h_mal/appttude/com/driver/ExampleInstrumentedTest.java
@@ -3,7 +3,10 @@ package h_mal.appttude.com.driver;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
+import android.view.View;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -23,4 +26,5 @@ public class ExampleInstrumentedTest {
assertEquals("h_mal.appttude.com.driver", appContext.getPackageName());
}
+
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99da1a0..3dbab83 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,7 +9,7 @@
-
+
-
@@ -36,9 +35,10 @@
android:theme="@style/AppTheme.NoActionBar">
-
+
+
+ android:resource="@xml/file_paths" />
+
+
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveObjectListAdapter.java b/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveObjectListAdapter.java
new file mode 100644
index 0000000..7aca2d6
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveObjectListAdapter.java
@@ -0,0 +1,293 @@
+package h_mal.appttude.com.driver.Archive;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import h_mal.appttude.com.driver.Global.ImageSwiperClass;
+import h_mal.appttude.com.driver.Objects.ArchiveObject;
+import h_mal.appttude.com.driver.Objects.DriverProfileObject;
+import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
+import h_mal.appttude.com.driver.Objects.InsuranceObject;
+import h_mal.appttude.com.driver.Objects.LogbookObject;
+import h_mal.appttude.com.driver.Objects.MotObject;
+import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject;
+import h_mal.appttude.com.driver.Objects.VehicleProfileObject;
+import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.FirebaseClass.*;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
+import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
+import static h_mal.appttude.com.driver.MainActivity.setAsDateTime;
+
+public class ArchiveObjectListAdapter extends BaseAdapter {
+
+ private static String TAG = "ArchiveObjectListAdapte";
+
+ ArchiveObject archiveObject;
+ Context context;
+ String archiveString;
+
+ int size;
+ String[] mKeys;
+
+ private TextView dateArchivedText;
+
+ public ArchiveObjectListAdapter(ArchiveObject archiveObject, Context context, String archiveString) {
+ this.archiveObject = archiveObject;
+ this.context = context;
+ this.archiveString = archiveString;
+
+ switch (archiveString){
+ case PRIVATE_HIRE_FIREBASE:
+ size = archiveObject.getPrivate_hire().size();
+ mKeys = archiveObject.getPrivate_hire().keySet().toArray(new String[archiveObject.getPrivate_hire().size()]);
+ break;
+ case DRIVERS_LICENSE_FIREBASE:
+ size = archiveObject.getDriver_license().size();
+ mKeys = archiveObject.getDriver_license().keySet().toArray(new String[archiveObject.getDriver_license().size()]);
+ break;
+ case VEHICLE_DETAILS_FIREBASE:
+ size = archiveObject.getVehicle_details().size();
+ mKeys = archiveObject.getVehicle_details().keySet().toArray(new String[archiveObject.getVehicle_details().size()]);
+ break;
+ case MOT_FIREBASE:
+ size = archiveObject.getMot_details().size();
+ mKeys = archiveObject.getMot_details().keySet().toArray(new String[archiveObject.getMot_details().size()]);
+ break;
+ case INSURANCE_FIREBASE:
+ size = archiveObject.getInsurance_details().size();
+ mKeys = archiveObject.getInsurance_details().keySet().toArray(new String[archiveObject.getInsurance_details().size()]);
+ break;
+ case LOG_BOOK_FIREBASE:
+ size = archiveObject.getLog_book().size();
+ mKeys = archiveObject.getLog_book().keySet().toArray(new String[archiveObject.getLog_book().size()]);
+ break;
+ case PRIVATE_HIRE_VEHICLE_LICENSE:
+ size = archiveObject.getPh_car().size();
+ mKeys = archiveObject.getPh_car().keySet().toArray(new String[archiveObject.getPh_car().size()]);
+ break;
+ }
+
+
+ }
+
+ @Override
+ public int getCount() {
+ return size;
+ }
+
+ @Override
+ public Object getItem(int position) {
+ switch (archiveString){
+ case PRIVATE_HIRE_FIREBASE:
+ return archiveObject.getPrivate_hire().get(mKeys[position]);
+ case DRIVERS_LICENSE_FIREBASE:
+ return archiveObject.getDriver_license().get(mKeys[position]);
+ case VEHICLE_DETAILS_FIREBASE:
+ return archiveObject.getVehicle_details().get(mKeys[position]);
+ case MOT_FIREBASE:
+ return archiveObject.getMot_details().get(mKeys[position]);
+ case INSURANCE_FIREBASE:
+ return archiveObject.getInsurance_details().get(mKeys[position]);
+ case LOG_BOOK_FIREBASE:
+ return archiveObject.getLog_book().get(mKeys[position]);
+ case PRIVATE_HIRE_VEHICLE_LICENSE:
+ return archiveObject.getPh_car().get(mKeys[position]);
+ default:
+ return mKeys[position];
+ }
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View listItemView = convertView;
+ if (listItemView == null) {
+ if (archiveString.equals(PRIVATE_HIRE_FIREBASE) ||
+ archiveString.equals(DRIVERS_LICENSE_FIREBASE) ||
+ archiveString.equals(MOT_FIREBASE) ||
+ archiveString.equals(LOG_BOOK_FIREBASE) ||
+ archiveString.equals(PRIVATE_HIRE_VEHICLE_LICENSE)){
+
+ listItemView = LayoutInflater.from(context).inflate(
+ R.layout.archive_license_item, parent, false);
+
+ ImageView imageView = listItemView.findViewById(R.id.image_archive);
+ ProgressBar progressBar = listItemView.findViewById(R.id.prog_archive);
+ dateArchivedText = listItemView.findViewById(R.id.date_archived);
+
+ LinearLayout expiryHolder = listItemView.findViewById(R.id.expiry_view);
+ LinearLayout fieldTwo = listItemView.findViewById(R.id.field_two_view);
+
+ TextView expiryText = listItemView.findViewById(R.id.exp_text);
+ TextView fiewTwoLable = listItemView.findViewById(R.id.field_two);
+ TextView fieldTwoText = listItemView.findViewById(R.id.field_two_text);
+
+ switch (archiveString){
+ case PRIVATE_HIRE_FIREBASE:
+ expiryHolder.setVisibility(View.VISIBLE);
+ fieldTwo.setVisibility(View.VISIBLE);
+
+ PrivateHireObject privateHireObject = (PrivateHireObject) getItem(position);
+
+ Picasso.get().load(privateHireObject.getPhImageString())
+ .into(loadImage(progressBar,imageView));
+ dateString(position);
+
+ expiryText.setText(privateHireObject.getPhExpiry());
+ fiewTwoLable.setText("Private Hire License No.:");
+ fieldTwoText.setText(privateHireObject.getPhNumber());
+ break;
+ case DRIVERS_LICENSE_FIREBASE:
+ expiryHolder.setVisibility(View.VISIBLE);
+ fieldTwo.setVisibility(View.VISIBLE);
+
+ DriversLicenseObject driversLicenseObject = (DriversLicenseObject) getItem(position);
+
+ Picasso.get().load(driversLicenseObject.getLicenseImageString())
+ .into(loadImage(progressBar,imageView));
+ dateString(position);
+
+ expiryText.setText(driversLicenseObject.getLicenseExpiry());
+ fiewTwoLable.setText("License No.:");
+ fieldTwoText.setText(driversLicenseObject.getLicenseNumber());
+ break;
+ case MOT_FIREBASE:
+ Log.i(TAG, "getView: MOT OBJECT");
+ expiryHolder.setVisibility(View.VISIBLE);
+ fieldTwo.setVisibility(View.GONE);
+
+ MotObject motObject = (MotObject) getItem(position);
+
+ Picasso.get().load(motObject.getMotImageString())
+ .into(loadImage(progressBar,imageView));
+ dateString(position);
+ expiryText.setText(motObject.getMotExpiry());
+ break;
+ case LOG_BOOK_FIREBASE:
+ expiryHolder.setVisibility(View.GONE);
+ fieldTwo.setVisibility(View.VISIBLE);
+
+ LogbookObject logbookObject = (LogbookObject) getItem(position);
+
+ Picasso.get().load(logbookObject.getPhotoString())
+ .into(loadImage(progressBar,imageView));
+ dateString(position);
+
+ fiewTwoLable.setText("V5C No.:");
+ fieldTwoText.setText(logbookObject.getV5cnumber());
+ break;
+ case PRIVATE_HIRE_VEHICLE_LICENSE:
+ expiryHolder.setVisibility(View.VISIBLE);
+ fieldTwo.setVisibility(View.VISIBLE);
+
+ PrivateHireVehicleObject privateHireVehicleObject = (PrivateHireVehicleObject) getItem(position);
+
+ Picasso.get().load(privateHireVehicleObject.getPhCarImageString())
+ .into(loadImage(progressBar,imageView));
+ dateString(position);
+
+ expiryText.setText(privateHireVehicleObject.getPhCarExpiry());
+ fiewTwoLable.setText("Private Hire Vehicle License No.:");
+ fieldTwoText.setText(privateHireVehicleObject.getPhCarNumber());
+ break;
+ }
+
+
+ }else if (archiveString.equals(INSURANCE_FIREBASE)){
+ listItemView = LayoutInflater.from(context).inflate(
+ R.layout.archive_insurance_item, parent, false);
+
+ View holder = listItemView.findViewById(R.id.image_pager);
+ ImageSwiperClass swiperClass = new ImageSwiperClass(context,holder);
+// swiperClass.hideDelete();
+ listItemView.findViewById(R.id.delete).setVisibility(View.GONE);
+// holder.findViewById(R.id.delete).setVisibility(View.INVISIBLE);
+
+ dateArchivedText = listItemView.findViewById(R.id.date_archived);
+ dateString(position);
+
+ TextView expiryText = listItemView.findViewById(R.id.exp_text);
+ TextView fieldTwoText = listItemView.findViewById(R.id.archive_insurer);
+
+ InsuranceObject insuranceObject = (InsuranceObject) getItem(position);
+ swiperClass.reinstantiateList(insuranceObject.getPhotoStrings());
+
+ expiryText.setText(insuranceObject.getExpiryDate());
+ fieldTwoText.setText(insuranceObject.getInsurerName());
+
+ }else if(archiveString.equals(VEHICLE_DETAILS_FIREBASE)){
+ listItemView = LayoutInflater.from(context).inflate(
+ R.layout.archive_vehicle_item, parent, false);
+
+ dateArchivedText = listItemView.findViewById(R.id.date_archived);
+ dateString(position);
+
+ TextView numberPlate = listItemView.findViewById(R.id.number_plate);
+ TextView keeperName = listItemView.findViewById(R.id.keeper_name);
+ TextView keeperAddress = listItemView.findViewById(R.id.keeper_address);
+ TextView carText = listItemView.findViewById(R.id.car_text_arch);
+ TextView carColour = listItemView.findViewById(R.id.car_colour);
+ TextView carSeized = listItemView.findViewById(R.id.seized);
+ TextView startDate = listItemView.findViewById(R.id.first_date);
+
+ VehicleProfileObject vehicleProfileObject = (VehicleProfileObject) getItem(position);
+
+ numberPlate.setText(vehicleProfileObject.getReg());
+ keeperName.setText(vehicleProfileObject.getKeeperName());
+ keeperAddress.setText(vehicleProfileObject.getKeeperAddress() + "\n" +vehicleProfileObject.getKeeperPostCode());
+ carText.setText(vehicleProfileObject.getMake() + " " + vehicleProfileObject.getModel());
+ carColour.setText(vehicleProfileObject.getColour());
+
+ String s;
+ if (vehicleProfileObject.isSeized()){
+ s = "Yes";
+ }else {
+ s = "No";
+ }
+ carSeized.setText(s);
+
+ startDate.setText(vehicleProfileObject.getStartDate());
+ }
+
+ }
+
+ return listItemView;
+ }
+
+ private void dateString(int position){
+ boolean success = true;
+ try {
+ dateArchivedText.setText(setAsDateTime(mKeys[position]));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ success = false;
+ }finally {
+ if (!success){
+ dateArchivedText.setText(mKeys[position].substring(0,8));
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/DriverLicenseFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverLicenseFragment.java
similarity index 50%
rename from app/src/main/java/h_mal/appttude/com/driver/DriverLicenseFragment.java
rename to app/src/main/java/h_mal/appttude/com/driver/Driver/DriverLicenseFragment.java
index f737679..f6afe18 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/DriverLicenseFragment.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverLicenseFragment.java
@@ -1,9 +1,10 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Driver;
-import android.content.Context;
+import android.app.DatePickerDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
@@ -15,6 +16,7 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -26,25 +28,39 @@ import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
-import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
-import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+import java.util.Calendar;
-import static h_mal.appttude.com.driver.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
-import static h_mal.appttude.com.driver.FirebaseClass.DRIVER_FIREBASE;
-import static h_mal.appttude.com.driver.FirebaseClass.PRIVATE_HIRE_FIREBASE;
-import static h_mal.appttude.com.driver.FirebaseClass.USER_FIREBASE;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.CAMERA_REQUEST;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
public class DriverLicenseFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private ImageView imageView;
+ private ProgressBar progressBar;
EditText licenseNo;
EditText expiry;
@@ -55,10 +71,33 @@ public class DriverLicenseFragment extends Fragment {
String li_numberString;
String li_exprString;
+ DatabaseReference reference;
+
+ DriversLicenseObject driversLicenseObject;
+ Boolean uploadNew;
+ String UID;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ uploadNew = false;
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ reference = mDatabase.child(USER_FIREBASE).child(UID)
+ .child(DRIVER_FIREBASE).child(DRIVERS_LICENSE_FIREBASE);
}
@Override
@@ -68,10 +107,9 @@ public class DriverLicenseFragment extends Fragment {
View view = inflater.inflate(R.layout.fragment_driver_license, container, false);
imageView = view.findViewById(R.id.driversli_img);
+ progressBar = view.findViewById(R.id.pb_dl);
- DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid())
- .child(DRIVER_FIREBASE).child(DRIVERS_LICENSE_FIREBASE);
-
+ viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
TextView uploadLic = view.findViewById(R.id.upload_lic);
@@ -82,8 +120,10 @@ public class DriverLicenseFragment extends Fragment {
expiry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- DateDialog dateDialog = new DateDialog(getContext());
- dateDialog.init(expiry);
+
+ DateDialog dateDialog = new DateDialog(getContext());
+ dateDialog.init(expiry);
+
}
});
@@ -110,25 +150,37 @@ public class DriverLicenseFragment extends Fragment {
if (!TextUtils.isEmpty(li_numberString) &&
!TextUtils.isEmpty(li_exprString)){
- if (filePath != null){
- Log.i(TAG, "onClick: new Image uploaded");
- new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
- @Override
- public void processFinish(Uri output) {
- Log.i(TAG, "processFinish: ");
- if (output != null){
- picUri = output;
- publishObject();
- fragmentManager.popBackStack();
- }
+ viewController.progress(View.VISIBLE);
- }
- }).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
- }else{
- Log.i(TAG, "onClick: pushing with same image");
- publishObject();
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ if (filePath != null){
+ Log.i(TAG, "onClick: new Image uploaded");
+ new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ publishObject();
+
+ }else {
+ Toast.makeText(getContext(), getString(R.string.failed_upload), Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }
+
+ }
+ }).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ publishObject();
+
+ }
}
+
}else {
if (TextUtils.isEmpty(li_numberString)){
licenseNo.setError("Field required");
@@ -136,7 +188,7 @@ public class DriverLicenseFragment extends Fragment {
if (TextUtils.isEmpty(li_exprString)){
expiry.setError("Field required");
}
- if (picUri == null){
+ if (picUri == null && filePath == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
@@ -148,7 +200,7 @@ public class DriverLicenseFragment extends Fragment {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- DriversLicenseObject driversLicenseObject = null;
+ viewController.progress(View.GONE);
try{
driversLicenseObject = dataSnapshot.getValue(DriversLicenseObject.class);
}catch (Exception e){
@@ -159,34 +211,50 @@ public class DriverLicenseFragment extends Fragment {
li_numberString = driversLicenseObject.getLicenseNumber();
li_exprString = driversLicenseObject.getLicenseExpiry();
- licenseNo.setText(li_numberString);
- expiry.setText(li_exprString);
- Picasso.get()
- .load(picUri)
- .placeholder(R.mipmap.ic_launcher_round)
- .into(imageView);
+ if(!uploadNew){
+ licenseNo.setText(li_numberString);
+ expiry.setText(li_exprString);
+ Picasso.get()
+ .load(picUri)
+ .into(loadImage(progressBar,imageView));
+ }
+ }else{
+ Toast.makeText(getContext(), getString(R.string.failed_retrieve), Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
-
+ viewController.progress(View.GONE);
+ Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
+ Log.e(TAG, "onCancelled: " + databaseError.getMessage());
}
};
private void publishObject(){
- DriversLicenseObject driversLicenseObject = new DriversLicenseObject(picUri.toString(),li_numberString,li_exprString);
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,DRIVERS_LICENSE_FIREBASE,driversLicenseObject);
+ }
- mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child(DRIVER_FIREBASE).child(DRIVERS_LICENSE_FIREBASE)
- .setValue(driversLicenseObject).addOnCompleteListener(new OnCompleteListener() {
+ DriversLicenseObject driversLicenseObjectNew = new DriversLicenseObject(picUri.toString(),li_numberString,li_exprString);
+
+ reference.setValue(driversLicenseObjectNew).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
+ approvalsClass.setStatusCode(UID,DRIVERS_LICENSE_FIREBASE+APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else {
+ Toast.makeText(getContext(),R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ }
- Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
+ viewController.progress(View.GONE);
}
});
+
}
@Override
@@ -209,13 +277,13 @@ public class DriverLicenseFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- new ImageSelectorResults(new ImageSelectorResults.FilepathResponse() {
- @Override
- public void processFinish(Uri output) {
- filePath = output;
- }
- }).Results(getActivity(),requestCode, resultCode, data,
- filePath,imageView);
+ new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
+ filePath,imageView,new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ }
+ });
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverOverallFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverOverallFragment.java
new file mode 100644
index 0000000..44e1a6b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverOverallFragment.java
@@ -0,0 +1,147 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.CardView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+
+import h_mal.appttude.com.driver.Objects.ApprovalsObject;
+import h_mal.appttude.com.driver.Objects.WholeDriverObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class DriverOverallFragment extends Fragment {
+
+ CardView driverProfile;
+ CardView privateHire;
+ CardView driversLicense;
+
+ ImageView driverApr;
+ ImageView privateApr ;
+ ImageView driversLiApr;
+ TextView privExp;
+ TextView drivLiExp;
+
+ DatabaseReference reference;
+
+ WholeDriverObject driverProfileObject;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid());
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_driver_overall, container, false);
+
+ driverProfile = view.findViewById(R.id.driver_prof);
+ privateHire = view.findViewById(R.id.private_hire);
+ driversLicense = view.findViewById(R.id.drivers_license);
+
+ driverApr = view.findViewById(R.id.approval_dp);
+ privateApr = view.findViewById(R.id.approval_ph);
+ driversLiApr = view.findViewById(R.id.approval_dl);
+
+ privExp = view.findViewById(R.id.ph_button_exp);
+ drivLiExp = view.findViewById(R.id.dl_button_exp);
+
+ privExp.setVisibility(View.GONE);
+ drivLiExp.setVisibility(View.GONE);
+
+ viewController.progress(View.VISIBLE);
+ reference.addListenerForSingleValueEvent(valueEventListener);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ driverProfileObject = dataSnapshot.getValue(WholeDriverObject.class);
+
+ if (driverProfileObject.approvalsObject != null){
+ ApprovalsObject approvalsObject = driverProfileObject.getApprovalsObject();
+
+ driverApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getDriver_details_approval()));
+ privateApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getPrivate_hire_approval()));
+ driversLiApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getDriver_license_approval()));
+ }
+
+ if (driverProfileObject.driver_profile != null){
+ if (driverProfileObject.getDriver_profile().private_hire != null){
+ privExp.setVisibility(View.VISIBLE);
+ privExp.setText("Expiry: " + driverProfileObject.getDriver_profile().getPrivate_hire().getPhExpiry());
+ }
+ if (driverProfileObject.getDriver_profile().driver_license != null){
+ drivLiExp.setVisibility(View.VISIBLE);
+ drivLiExp.setText("Expiry: " + driverProfileObject.getDriver_profile().getDriver_license().getLicenseExpiry());
+ }
+ }
+
+ driverProfile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ executeFragment(new DriverProfileFragment());
+ }
+ });
+
+ privateHire.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (driverProfileObject.driver_profile == null){
+ executeFragment(new PrivateHireLicenseFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),driverProfileObject.getDriver_profile().getPrivate_hire()
+ ,new PrivateHireLicenseFragment());
+ }
+
+ }
+ });
+
+ driversLicense.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (driverProfileObject.driver_profile == null){
+ executeFragment(new DriverLicenseFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),driverProfileObject.getDriver_profile().getDriver_license()
+ ,new DriverLicenseFragment());
+ }
+ }
+ });
+
+ viewController.progress(View.GONE);
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+
+
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/driverProfileFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverProfileFragment.java
similarity index 60%
rename from app/src/main/java/h_mal/appttude/com/driver/driverProfileFragment.java
rename to app/src/main/java/h_mal/appttude/com/driver/Driver/DriverProfileFragment.java
index c764dde..1ec17ea 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/driverProfileFragment.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverProfileFragment.java
@@ -1,4 +1,4 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Driver;
import android.content.Intent;
import android.net.Uri;
@@ -13,60 +13,76 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Global.ViewController;
import h_mal.appttude.com.driver.Objects.DriverProfileObject;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+import h_mal.appttude.com.driver.Objects.UserObject;
+import h_mal.appttude.com.driver.R;
-import static h_mal.appttude.com.driver.FirebaseClass.*;
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.*;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
-import static h_mal.appttude.com.driver.MainActivity.executeFragment;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
-public class driverProfileFragment extends Fragment {
+public class DriverProfileFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
ImageView driverPic;
+ ProgressBar pb;
TextView addPic;
EditText forenames;
EditText address;
EditText postcode;
EditText dob;
EditText ni;
- TextView privateHire;
- TextView retrievedPH;
EditText dateFirst;
- TextView driverLi;
- TextView retrievedDl;
Button submit_driver;
Uri filePath;
Uri picUri;
DatabaseReference driverProfileReference;
-
- PrivateHireObject privateHireObject;
+ String UID;
DriverProfileObject driverProfileObject;
- DriversLicenseObject driversLicenseObject;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- driverProfileReference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid())
+
+ if (getArguments() != null){
+ UID = getArguments().getString("user_id");
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ driverProfileReference = mDatabase.child(USER_FIREBASE).child(UID)
.child(DRIVER_FIREBASE);
}
@@ -78,21 +94,17 @@ public class driverProfileFragment extends Fragment {
View view = inflater.inflate(R.layout.fragment_driver_profile, container, false);
driverPic = view.findViewById(R.id.driver_pic);
+ pb = view.findViewById(R.id.pb_dp);
addPic = view.findViewById(R.id.add_driver_pic);
forenames = view.findViewById(R.id.names);
address = view.findViewById(R.id.address);
postcode = view.findViewById(R.id.postcode);
dob = view.findViewById(R.id.dob);
ni = view.findViewById(R.id.ni_number);
- privateHire = view.findViewById(R.id.private_hire);
- retrievedPH = view.findViewById(R.id.retrievedPH);
dateFirst = view.findViewById(R.id.date_first);
- driverLi = view.findViewById(R.id.drivers_li);
- retrievedDl = view.findViewById(R.id.retrieved_dl);
submit_driver = view.findViewById(R.id.submit_driver);
- driverPic.setVisibility(View.GONE);
-
+ viewController.progress(View.VISIBLE);
driverProfileReference.addListenerForSingleValueEvent(valueEventListener);
addPic.setOnClickListener(new View.OnClickListener() {
@@ -104,20 +116,6 @@ public class driverProfileFragment extends Fragment {
}
});
- privateHire.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new PrivateHireLicenseFragment());
- }
- });
-
- driverLi.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new DriverLicenseFragment());
- }
- });
-
dob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -144,17 +142,7 @@ public class driverProfileFragment extends Fragment {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- try{
- privateHireObject = dataSnapshot.child(PRIVATE_HIRE_FIREBASE).getValue(PrivateHireObject.class);
- }catch (Exception e){
- Log.e(TAG, "onDataChange: ", e);
- }finally {
- if (privateHireObject != null){
-
- retrievedPH.setText("Private Hire License no.: " +privateHireObject.getPhNumber()
- +"\nPrivate Hire License expiry: " + privateHireObject.getPhExpiry());
- }
- }
+ viewController.progress(View.GONE);
try {
driverProfileObject = dataSnapshot.child(DRIVER_DETAILS_FIREBASE).getValue(DriverProfileObject.class);
@@ -168,36 +156,26 @@ public class driverProfileFragment extends Fragment {
dob.setText(driverProfileObject.getDob());
dateFirst.setText(driverProfileObject.getDateFirst());
ni.setText(driverProfileObject.getNi());
- driverPic.setVisibility(View.VISIBLE);
- Picasso.get().load(driverProfileObject.getDriverPic()).into(driverPic);
+
+
+ Picasso.get().load(driverProfileObject.getDriverPic())
+ .into(loadImage(pb,driverPic));
picUri = Uri.parse(driverProfileObject.getDriverPic());
-
- }else {
- driverPic.setVisibility(View.GONE);
}
}
- try{
- driversLicenseObject = dataSnapshot.child(DRIVERS_LICENSE_FIREBASE).getValue(DriversLicenseObject.class);
- }catch (Exception e){
- Log.e(TAG, "onDataChange: ", e);
- }finally {
- if (driversLicenseObject != null){
- retrievedDl.setText("Driving License no.: " +driversLicenseObject.getLicenseNumber()
- +"\nDriving License expiry: " + driversLicenseObject.getLicenseExpiry());
- }
- }
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
-
+ viewController.progress(View.GONE);
}
};
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
+
String driverForename = forenames.getText().toString().trim();
String AddressString = address.getText().toString().trim();
String postCodeString = postcode.getText().toString().trim();
@@ -211,23 +189,32 @@ public class driverProfileFragment extends Fragment {
!TextUtils.isEmpty(dobString) &&
!TextUtils.isEmpty(niString) &&
!TextUtils.isEmpty(dateFirstString)){
- if (filePath != null){
- Log.i(TAG, "onClick: new Image uploaded");
- new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
- @Override
- public void processFinish(Uri output) {
- Log.i(TAG, "processFinish: ");
- if (output != null){
- picUri = output;
- writeDriverToDb();
- fragmentManager.popBackStack();
- }
- }
- }).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
- }else{
- Log.i(TAG, "onClick: pushing with same image");
- writeDriverToDb();
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ viewController.progress(View.VISIBLE);
+ if (filePath != null){
+
+ new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ writeDriverToDb();
+
+ }else {
+ viewController.progress(View.GONE);
+ }
+
+ }
+ }).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ writeDriverToDb();
+ }
}
}else {
@@ -249,9 +236,6 @@ public class driverProfileFragment extends Fragment {
if (TextUtils.isEmpty(dateFirstString)){
dateFirst.setError("Field required");
}
- if (picUri == null){
- Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
- }
}
}
@@ -262,14 +246,14 @@ public class driverProfileFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- new ImageSelectorResults(new ImageSelectorResults.FilepathResponse() {
- @Override
- public void processFinish(Uri output) {
- filePath = output;
- }
- }).Results(getActivity(),requestCode, resultCode, data,
- filePath,driverPic);
- driverPic.setVisibility(View.VISIBLE);
+ new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
+ filePath,driverPic,new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ }
+ });
+
}
@@ -285,6 +269,42 @@ public class driverProfileFragment extends Fragment {
DriverProfileObject driverProfileObject = new DriverProfileObject(picUri.toString(),forenameText,
addressText,postcodeText,dobText,niText,datefirstText);
- driverProfileReference.child(DRIVER_DETAILS_FIREBASE).setValue(driverProfileObject);
+ if (UID.equals(auth.getCurrentUser().getUid())){
+ UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
+ profileUpdatesBuilder.setPhotoUri(picUri);
+ UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
+
+ auth.getCurrentUser().updateProfile(profileUpdates)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ Log.d(TAG, "User profile updated.");
+ viewController.reloadDrawer();
+ mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child("user_details")
+ .setValue(new UserObject(auth.getCurrentUser().getDisplayName(),auth.getCurrentUser().getEmail(),picUri.toString()));
+ }
+ }
+ })
+ .addOnFailureListener(new OnFailureListener() {
+ @Override
+ public void onFailure(@NonNull Exception e) {
+ Log.e(TAG, "onFailure: ", e);
+ }
+ });
+
+ }
+
+ driverProfileReference.child(DRIVER_DETAILS_FIREBASE).setValue(driverProfileObject)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ approvalsClass.setStatusCode(UID,DRIVER_DETAILS_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ }
+ viewController.progress(View.GONE);
+ fragmentManager.popBackStack();
+ }
+ });
}
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/InsuranceFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/InsuranceFragment.java
new file mode 100644
index 0000000..6774a2d
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/InsuranceFragment.java
@@ -0,0 +1,300 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.text.Layout;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+import com.squareup.picasso.Picasso;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Global.ImageSwiperClass;
+import h_mal.appttude.com.driver.Objects.InsuranceObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class InsuranceFragment extends Fragment {
+
+ private String TAG = this.getClass().getSimpleName();
+ DatabaseReference reference;
+
+ TextView uploadIns;
+ EditText insName;
+ EditText insExpiry;
+ View holder;
+
+ public Uri filePath;
+ public Uri picUri;
+
+ public List photoStrings;
+
+ String insNameString;
+ String insExpiryString;
+
+ InsuranceObject insuranceObject;
+ ImageSwiperClass swiperClass;
+
+ Boolean uploadNew;
+ String UID;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ uploadNew = false;
+
+ photoStrings = new ArrayList<>();
+
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ reference = mDatabase.child(USER_FIREBASE).child(UID).child(VEHICLE_FIREBASE).child(INSURANCE_FIREBASE);
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_insurance, container, false);
+
+ uploadIns = view.findViewById(R.id.uploadInsurance);
+ insName = view.findViewById(R.id.insurer);
+ insExpiry = view.findViewById(R.id.insurance_exp);
+ Button submit = view.findViewById(R.id.submit_ins);
+
+ holder = view.findViewById(R.id.image_pager);
+ swiperClass = new ImageSwiperClass(getContext(),holder);
+
+ viewController.progress(View.VISIBLE);
+ reference.addListenerForSingleValueEvent(valueEventListener);
+
+ uploadIns.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
+ imageSelectorDialog.setImageName("insurance"+getDateStamp());
+ imageSelectorDialog.show();
+ }
+ });
+
+ insExpiry.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DateDialog dateDialog = new DateDialog(getContext());
+ dateDialog.init(insExpiry);
+ }
+ });
+
+ submit.setOnClickListener(submitOnClickListener);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ viewController.progress(View.GONE);
+ try{
+ insuranceObject = dataSnapshot.getValue(InsuranceObject.class);
+ }catch (Exception e){
+ Log.e(TAG, "onDataChange: ", e);
+ }finally {
+ if (insuranceObject != null){
+ if (!uploadNew){
+ photoStrings = insuranceObject.getPhotoStrings();
+ swiperClass.reinstantiateList(photoStrings);
+ if (insuranceObject.insurerName != null){
+ insNameString = insuranceObject.getInsurerName();
+ insName.setText(insNameString);
+ }
+ if (insuranceObject.expiryDate != null){
+ insExpiryString = insuranceObject.getExpiryDate();
+ insExpiry.setText(insExpiryString);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+ View.OnClickListener submitOnClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ insNameString = insName.getText().toString().trim();
+ insExpiryString = insExpiry.getText().toString().trim();
+
+ if (!TextUtils.isEmpty(insNameString)
+ && !TextUtils.isEmpty(insExpiryString)){
+ viewController.progress(View.VISIBLE);
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ if (filePath != null){
+ Log.i(TAG, "onClick: new Image uploaded");
+ new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ publishObject();
+ }else {
+ Toast.makeText(getContext(), "Could not upload", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }
+
+ }
+ }).uploadImage(INSURANCE_FIREBASE,INSURANCE_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ publishObject();
+ }
+ }
+ }else {
+ if (TextUtils.isEmpty(insNameString)){
+ insName.setError("Field required");
+ }
+ if (TextUtils.isEmpty(insExpiryString)){
+ insExpiry.setError("Field required");
+ }
+ if (picUri == null){
+ Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ }
+
+ };
+
+ private void publishObject(){
+
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,INSURANCE_FIREBASE,insuranceObject);
+ }
+
+ photoStrings = swiperClass.getImageStrings();
+
+ InsuranceObject insuranceObject = new InsuranceObject(photoStrings, insNameString, insExpiryString);
+
+ reference.setValue(insuranceObject).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ approvalsClass.setStatusCode(UID,INSURANCE_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else{
+ Toast.makeText(getContext(), "Upload Unsuccessful", Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.GONE);
+ }
+ });
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == MY_CAMERA_PERMISSION_CODE) {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
+ Intent cameraIntent = new
+ Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
+ startActivityForResult(cameraIntent, CAMERA_REQUEST);
+ } else {
+ Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
+ }
+
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
+ filePath,new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ new FirebaseClass(getContext(), output, new FirebaseClass.Response() {
+ @Override
+ public void processFinish(Uri output) {
+ if (output != null){
+ photoStrings.add(output.toString());
+ swiperClass.addPhotoString(output.toString());
+ //notify data change
+ reference.setValue(new InsuranceObject(photoStrings,null,null));
+ }
+ }
+ }).uploadImage(INSURANCE_FIREBASE,INSURANCE_FIREBASE + getDateStamp());
+ }
+ });
+
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ printObjectAsJson(TAG,photoStrings);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/MotFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/MotFragment.java
new file mode 100644
index 0000000..3d7cf6c
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/MotFragment.java
@@ -0,0 +1,262 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+import com.squareup.picasso.Picasso;
+
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Objects.MotObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class MotFragment extends Fragment {
+
+ private String TAG = this.getClass().getSimpleName();
+ DatabaseReference reference;
+
+ TextView uploadMot;
+ ImageView motImage;
+ ProgressBar progressBar;
+ EditText motExpiryEditText;
+
+ public Uri filePath;
+ public Uri picUri;
+
+ MotObject motObject;
+ String motExpText;
+ Boolean uploadNew;
+ String UID;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ uploadNew = false;
+
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ reference = mDatabase.child(USER_FIREBASE).child(UID)
+ .child(VEHICLE_FIREBASE).child(MOT_FIREBASE);
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_mot, container, false);
+
+ motImage = view.findViewById(R.id.mot_img);
+ progressBar = view.findViewById(R.id.pb_mot);
+ uploadMot = view.findViewById(R.id.uploadmot);
+ motExpiryEditText = view.findViewById(R.id.mot_expiry);
+ Button submit = view.findViewById(R.id.submit_mot);
+
+ viewController.progress(View.VISIBLE);
+ reference.addListenerForSingleValueEvent(valueEventListener);
+
+ uploadMot.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
+ imageSelectorDialog.setImageName("mot_certificate");
+ imageSelectorDialog.show();
+ }
+ });
+
+ motExpiryEditText.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DateDialog dateDialog = new DateDialog(getContext());
+ dateDialog.init(motExpiryEditText);
+ }
+ });
+
+ submit.setOnClickListener(submitOnClickListener);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ viewController.progress(View.GONE);
+
+ try{
+ motObject = dataSnapshot.getValue(MotObject.class);
+ }catch (Exception e){
+ Log.e(TAG, "onDataChange: ", e);
+ }finally {
+ if (motObject != null){
+ if (!uploadNew){
+ picUri = Uri.parse(motObject.getMotImageString());
+ motExpText = motObject.getMotExpiry();
+
+ motExpiryEditText.setText(motExpText);
+ Picasso.get()
+ .load(picUri)
+ .into(loadImage(progressBar,motImage));
+ }
+
+ }
+ }
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+ View.OnClickListener submitOnClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ motExpText = motExpiryEditText.getText().toString().trim();
+
+ if (!TextUtils.isEmpty(motExpText)){
+ viewController.progress(View.VISIBLE);
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ if (filePath != null){
+ Log.i(TAG, "onClick: new Image uploaded");
+ new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ publishObject();
+ }else {
+ Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ }
+
+ }
+ }).uploadImage(MOT_FIREBASE,MOT_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ publishObject();
+ }
+ }
+ }else {
+ if (TextUtils.isEmpty(motExpText)){
+ motExpiryEditText.setError("Field required");
+ }
+ if (picUri == null){
+ Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ }
+
+ };
+
+ private void publishObject(){
+
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,MOT_FIREBASE,motObject);
+ }
+ MotObject motObject = new MotObject(picUri.toString(), motExpText);
+
+ reference.setValue(motObject).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
+ approvalsClass.setStatusCode(UID,MOT_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else {
+ Toast.makeText(getContext(), "Unable to upload", Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.GONE);
+
+ }
+ });
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == MY_CAMERA_PERMISSION_CODE) {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
+ Intent cameraIntent = new
+ Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
+ startActivityForResult(cameraIntent, CAMERA_REQUEST);
+ } else {
+ Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
+ }
+
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
+ filePath,motImage,new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ }
+ });
+
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/PrivateHireLicenseFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireLicenseFragment.java
similarity index 54%
rename from app/src/main/java/h_mal/appttude/com/driver/PrivateHireLicenseFragment.java
rename to app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireLicenseFragment.java
index 80ac65f..a33d51d 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/PrivateHireLicenseFragment.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireLicenseFragment.java
@@ -1,50 +1,61 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Driver;
-import android.Manifest;
-import android.app.Dialog;
-import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
+import com.google.firebase.FirebaseError;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
-import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+import java.util.UUID;
-import static h_mal.appttude.com.driver.FirebaseClass.*;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.CAMERA_REQUEST;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.*;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
public class PrivateHireLicenseFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private ImageView imageView;
- String fname;
+ ProgressBar pb;
EditText phNo;
EditText phExpiry;
@@ -55,11 +66,33 @@ public class PrivateHireLicenseFragment extends Fragment {
String Ph_numberString;
String Ph_exprString;
+ DatabaseReference reference;
+
+ PrivateHireObject privateHireObject;
+ Boolean uploadNew;
+ String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ uploadNew = false;
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ reference = mDatabase.child(USER_FIREBASE).child(UID)
+ .child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE);
}
@Override
@@ -68,13 +101,12 @@ public class PrivateHireLicenseFragment extends Fragment {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_private_hire_license, container, false);
- DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid())
- .child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE);
-
+ viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- PrivateHireObject privateHireObject = null;
+ viewController.progress(View.GONE);
+
try{
privateHireObject = dataSnapshot.getValue(PrivateHireObject.class);
}catch (Exception e){
@@ -85,12 +117,14 @@ public class PrivateHireLicenseFragment extends Fragment {
Ph_numberString = privateHireObject.getPhNumber();
Ph_exprString = privateHireObject.getPhExpiry();
- phNo.setText(Ph_numberString);
- phExpiry.setText(Ph_exprString);
- Picasso.get()
- .load(picUri)
- .placeholder(R.mipmap.ic_launcher_round)
- .into(imageView);
+ Log.i(TAG, "onDataChange: uploadNew = " + uploadNew);
+ if (!uploadNew){
+ phNo.setText(Ph_numberString);
+ phExpiry.setText(Ph_exprString);
+ Picasso.get()
+ .load(picUri)
+ .into(loadImage(pb,imageView));
+ }
}
}
@@ -98,12 +132,13 @@ public class PrivateHireLicenseFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
-
+ viewController.progress(View.GONE);
}
});
TextView uploadPH = view.findViewById(R.id.uploadphlic);
imageView = view.findViewById(R.id.imageView2);
+ pb = view.findViewById(R.id.pb_priv);
phNo = view.findViewById(R.id.ph_no);
phExpiry = view.findViewById(R.id.ph_expiry);
@@ -113,6 +148,7 @@ public class PrivateHireLicenseFragment extends Fragment {
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(phExpiry);
+ dateDialog.show();
}
});
@@ -138,25 +174,33 @@ public class PrivateHireLicenseFragment extends Fragment {
if (!TextUtils.isEmpty(Ph_numberString) &&
!TextUtils.isEmpty(Ph_exprString)){
- if (filePath != null){
- Log.i(TAG, "onClick: new Image uploaded");
- new FirebaseClass(getContext(),filePath,new Response(){
- @Override
- public void processFinish(Uri output) {
- Log.i(TAG, "processFinish: ");
- if (output != null){
- picUri = output;
- publishObject();
- fragmentManager.popBackStack();
+ viewController.progress(View.VISIBLE);
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ if (filePath != null){
+ Log.i(TAG, "onClick: new Image uploaded");
+ new FirebaseClass(getContext(),filePath,new Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ publishObject();
+
+ }else {
+ Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }
+
}
-
- }
- }).uploadImage(PRIVATE_HIRE_FIREBASE,PRIVATE_HIRE_FIREBASE + getDateStamp());
- }else{
- Log.i(TAG, "onClick: pushing with same image");
- publishObject();
+ }).uploadImage(PRIVATE_HIRE_FIREBASE,PRIVATE_HIRE_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ publishObject();
+ }
}
-
}else {
if (TextUtils.isEmpty(Ph_numberString)){
phNo.setError("Field required");
@@ -177,16 +221,28 @@ public class PrivateHireLicenseFragment extends Fragment {
private void publishObject(){
- PrivateHireObject privateHireObject = new PrivateHireObject(picUri.toString(),Ph_numberString,Ph_exprString);
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,PRIVATE_HIRE_FIREBASE,privateHireObject);
+ }
- mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE)
- .setValue(privateHireObject).addOnCompleteListener(new OnCompleteListener() {
+ PrivateHireObject privateHireObjectNew = new PrivateHireObject(picUri.toString(),Ph_numberString,Ph_exprString);
+
+ mDatabase.child(USER_FIREBASE).child(UID).child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE)
+ .setValue(privateHireObjectNew).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
+ approvalsClass.setStatusCode(UID,PRIVATE_HIRE_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else {
+ Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.GONE);
- Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
}
});
+
}
@Override
@@ -209,13 +265,13 @@ public class PrivateHireLicenseFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- new ImageSelectorResults(new ImageSelectorResults.FilepathResponse() {
- @Override
- public void processFinish(Uri output) {
- filePath = output;
- }
- }).Results(getActivity(),requestCode, resultCode, data,
- filePath,imageView);
+ new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
+ filePath,imageView,new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ }
+ });
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireVehicleFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireVehicleFragment.java
new file mode 100644
index 0000000..8d9cf8b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireVehicleFragment.java
@@ -0,0 +1,285 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+import com.squareup.picasso.Picasso;
+
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class PrivateHireVehicleFragment extends Fragment {
+
+ private String TAG = this.getClass().getSimpleName();
+
+ private ImageView imageView;
+ ProgressBar pb;
+
+ EditText phNo;
+ EditText phExpiry;
+
+ public Uri filePath;
+
+ public Uri picUri;
+ String Ph_numberString;
+ String Ph_exprString;
+
+ DatabaseReference reference;
+
+ PrivateHireVehicleObject privateHireObject;
+ Boolean uploadNew;
+ String UID;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ uploadNew = false;
+
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ reference = mDatabase.child(USER_FIREBASE).child(UID)
+ .child(VEHICLE_FIREBASE).child(PRIVATE_HIRE_VEHICLE_LICENSE);
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_private_hire_vehicle, container, false);
+
+ viewController.progress(View.VISIBLE);
+ reference.addListenerForSingleValueEvent(valueEventListener);
+
+ TextView uploadPH = view.findViewById(R.id.uploadphlic);
+ imageView = view.findViewById(R.id.imageView2);
+ pb = view.findViewById(R.id.pb_priv);
+
+ phNo = view.findViewById(R.id.ph_no);
+ phExpiry = view.findViewById(R.id.ph_expiry);
+
+ phExpiry.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DateDialog dateDialog = new DateDialog(getContext());
+ dateDialog.init(phExpiry);
+ dateDialog.show();
+ }
+ });
+
+ Button submit = view.findViewById(R.id.submit);
+ submit.setOnClickListener(submitClick);
+
+ uploadPH.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
+ imageSelectorDialog.setImageName("private_hire");
+ imageSelectorDialog.show();
+ }
+ });
+
+
+ return view;
+ }
+
+ private View.OnClickListener submitClick = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Ph_numberString = phNo.getText().toString().trim();
+ Ph_exprString = phExpiry.getText().toString().trim();
+
+ //validation for data then submit
+
+ if (!TextUtils.isEmpty(Ph_numberString) &&
+ !TextUtils.isEmpty(Ph_exprString)){
+ viewController.progress(View.VISIBLE);
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ if (filePath != null){
+ Log.i(TAG, "onClick: new Image uploaded");
+ new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ publishObject();
+
+ }else {
+ Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }
+
+ }
+ }).uploadImage(PRIVATE_HIRE_FIREBASE,PRIVATE_HIRE_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ publishObject();
+ }
+ }
+ }else {
+ if (TextUtils.isEmpty(Ph_numberString)){
+ phNo.setError("Field required");
+ }
+ if (TextUtils.isEmpty(Ph_exprString)){
+ phExpiry.setError("Field required");
+ }
+ if (picUri == null){
+ Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ }
+ };
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ viewController.progress(View.GONE);
+
+ try{
+ privateHireObject = dataSnapshot.getValue(PrivateHireVehicleObject.class);
+ }catch (Exception e){
+ Log.e(TAG, "onDataChange: ", e);
+ }finally {
+ if (privateHireObject != null){
+ picUri = Uri.parse(privateHireObject.getPhCarImageString());
+ Ph_numberString = privateHireObject.getPhCarNumber();
+ Ph_exprString = privateHireObject.getPhCarExpiry();
+
+ Log.i(TAG, "onDataChange: uploadNew = " + uploadNew);
+ if (!uploadNew){
+ phNo.setText(Ph_numberString);
+ phExpiry.setText(Ph_exprString);
+ Picasso.get()
+ .load(picUri)
+ .into(loadImage(pb,imageView));
+ }
+ }
+ }
+
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+ private void publishObject(){
+
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,PRIVATE_HIRE_VEHICLE_LICENSE,privateHireObject);
+ }
+
+ PrivateHireVehicleObject privateHireObjectNew = new PrivateHireVehicleObject(picUri.toString(),Ph_numberString,Ph_exprString);
+
+ reference.setValue(privateHireObjectNew).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
+ approvalsClass.setStatusCode(UID,PRIVATE_HIRE_VEHICLE_LICENSE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else {
+ Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.GONE);
+
+ }
+ });
+
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == MY_CAMERA_PERMISSION_CODE) {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
+ Intent cameraIntent = new
+ Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
+ startActivityForResult(cameraIntent, CAMERA_REQUEST);
+ } else {
+ Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
+ }
+
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ new ImageSelectorResults().Results(getActivity(), requestCode, resultCode, data,
+ filePath, imageView, new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleOverallFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleOverallFragment.java
new file mode 100644
index 0000000..96259de
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleOverallFragment.java
@@ -0,0 +1,188 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.CardView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+
+import h_mal.appttude.com.driver.Objects.ApprovalsObject;
+import h_mal.appttude.com.driver.Objects.WholeDriverObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+public class VehicleOverallFragment extends Fragment {
+
+ ImageView vehicleApr;
+ ImageView insuranceApr;
+ ImageView motApr;
+ ImageView logbookApr;
+ private ImageView privateHireCarApr;
+ TextView insuranceExp;
+ TextView motExp;
+ private TextView privateHireExp;
+ private CardView vehicleProfile;
+ private CardView insurance;
+ private CardView mot;
+ private CardView logbook;
+ private CardView privateHireCar;
+
+ private DatabaseReference reference;
+ private WholeDriverObject wholeDriverObject;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid());
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_vehicle_overall, container, false);
+
+ vehicleProfile = view.findViewById(R.id.vehicle_prof);
+ insurance = view.findViewById(R.id.insurance);
+ mot = view.findViewById(R.id.mot);
+ logbook = view.findViewById(R.id.logbook);
+ privateHireCar = view.findViewById(R.id.private_hire_vehicle_license);
+
+ vehicleApr = view.findViewById(R.id.approval_vehicle);
+ insuranceApr = view.findViewById(R.id.approval_insurance);
+ motApr = view.findViewById(R.id.approval_mot);
+ logbookApr = view.findViewById(R.id.approval_lb);
+ privateHireCarApr = view.findViewById(R.id.approval_ph_car);
+
+ insuranceExp = view.findViewById(R.id.ins_exp);
+ motExp = view.findViewById(R.id.mot_exp);
+ privateHireExp = view.findViewById(R.id.ph_car_exp);
+
+ insuranceExp.setVisibility(View.GONE);
+ motExp.setVisibility(View.GONE);
+ privateHireExp.setVisibility(View.GONE);
+
+ viewController.progress(View.VISIBLE);
+ reference.addListenerForSingleValueEvent(valueEventListener);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ wholeDriverObject = dataSnapshot.getValue(WholeDriverObject.class);
+
+ if (wholeDriverObject.approvalsObject != null) {
+ ApprovalsObject approvalsObject = wholeDriverObject.getApprovalsObject();
+
+ vehicleApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getVehicle_details_approval()));
+ insuranceApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getInsurance_details_approval()));
+ motApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getMot_details_approval()));
+ logbookApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getLog_book_approval()));
+ privateHireCarApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getPh_car_approval()));
+ }
+
+ if (wholeDriverObject.vehicle_profile != null){
+ if (wholeDriverObject.getVehicle_profile().insurance_details != null){
+ insuranceExp.setVisibility(View.VISIBLE);
+ insuranceExp.setText("Expiry: " + wholeDriverObject.getVehicle_profile().getInsurance_details().getExpiryDate());
+ }
+ if (wholeDriverObject.getVehicle_profile().mot_details != null){
+ motExp.setVisibility(View.VISIBLE);
+ motExp.setText("Expiry: " + wholeDriverObject.getVehicle_profile().getMot_details().getMotExpiry());
+ }
+ if (wholeDriverObject.getVehicle_profile().private_hire_vehicle != null){
+ privateHireExp.setVisibility(View.VISIBLE);
+ privateHireExp.setText("Expiry: " + wholeDriverObject.getVehicle_profile().getPrivateHireVehicleObject().getPhCarExpiry());
+ }
+ }
+
+ vehicleProfile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (wholeDriverObject.vehicle_profile == null){
+ executeFragment(new VehicleSetupFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getVehicle_details()
+ ,new VehicleSetupFragment());
+ }
+ }
+ });
+
+ insurance.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (wholeDriverObject.vehicle_profile == null){
+ executeFragment(new InsuranceFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getInsurance_details()
+ ,new InsuranceFragment());
+ }
+ }
+ });
+
+ mot.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (wholeDriverObject.vehicle_profile == null){
+ executeFragment(new MotFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getMot_details()
+ ,new MotFragment());
+ }
+ }
+ });
+
+ logbook.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (wholeDriverObject.vehicle_profile == null){
+ executeFragment(new logbookFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getLog_book()
+ ,new logbookFragment());
+ }
+ }
+ });
+
+ privateHireCar.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (wholeDriverObject.vehicle_profile == null){
+ executeFragment(new PrivateHireVehicleFragment());
+ }else {
+ archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getPrivateHireVehicleObject()
+ ,new PrivateHireVehicleFragment());
+ }
+ }
+ });
+
+
+ viewController.progress(View.GONE);
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleSetupFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleSetupFragment.java
new file mode 100644
index 0000000..c9dc1ce
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleSetupFragment.java
@@ -0,0 +1,223 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+
+import h_mal.appttude.com.driver.Global.DateDialog;
+import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
+import h_mal.appttude.com.driver.Objects.InsuranceObject;
+import h_mal.appttude.com.driver.Objects.LogbookObject;
+import h_mal.appttude.com.driver.Objects.MotObject;
+import h_mal.appttude.com.driver.Objects.VehicleProfileObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_DETAILS_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class VehicleSetupFragment extends Fragment {
+
+ private String TAG = this.getClass().getSimpleName();
+
+ EditText reg;
+ EditText make;
+ EditText model;
+ EditText color;
+ EditText keeperName;
+ EditText address;
+ EditText postcode;
+ EditText startDate;
+ CheckBox seized;
+ Button Submit;
+
+ DatabaseReference ref;
+
+ VehicleProfileObject vehicleProfileObject;
+ Boolean uploadNew;
+ String UID;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ uploadNew = false;
+
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ ref = mDatabase.child(USER_FIREBASE).child(UID).child(VEHICLE_FIREBASE);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_vehicle_setup, container, false);
+
+ reg = view.findViewById(R.id.reg);
+ make = view.findViewById(R.id.make);
+ model = view.findViewById(R.id.model);
+ color = view.findViewById(R.id.colour);
+ keeperName = view.findViewById(R.id.keeper_name);
+ address = view.findViewById(R.id.address);
+ postcode = view.findViewById(R.id.postcode);
+ startDate = view.findViewById(R.id.start_date);
+ seized = view.findViewById(R.id.seized);
+ Submit = view.findViewById(R.id.submit_vehicle);
+
+ startDate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DateDialog dateDialog = new DateDialog(getContext());
+ dateDialog.init(startDate);
+ }
+ });
+
+ viewController.progress(View.VISIBLE);
+ ref.addListenerForSingleValueEvent(valueEventListener);
+
+ Submit.setOnClickListener(submitOnClickListener);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener(){
+
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ viewController.progress(View.GONE);
+ try{
+ vehicleProfileObject = dataSnapshot.child(VEHICLE_DETAILS_FIREBASE).getValue(VehicleProfileObject.class);
+ }catch (Exception e){
+ Log.e(TAG, "onDataChange: ", e);
+ }finally {
+ if (vehicleProfileObject != null){
+ if(!uploadNew) {
+ reg.setText(vehicleProfileObject.getReg());
+ make.setText(vehicleProfileObject.getMake());
+ model.setText(vehicleProfileObject.getModel());
+ color.setText(vehicleProfileObject.getColour());
+ keeperName.setText(vehicleProfileObject.getKeeperName());
+ address.setText(vehicleProfileObject.getKeeperAddress());
+ postcode.setText(vehicleProfileObject.getKeeperPostCode());
+ startDate.setText(vehicleProfileObject.getStartDate());
+ seized.setChecked(vehicleProfileObject.isSeized());
+ }
+ }
+ }
+
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+ View.OnClickListener submitOnClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String regString = reg.getText().toString().trim();
+ String makeString = make.getText().toString().trim();
+ String modelString = model.getText().toString().trim();
+ String colourString = color.getText().toString().trim();
+ String keeperNameStrin = keeperName.getText().toString().trim();
+ String addressString = address.getText().toString().trim();
+ String postcodeString = postcode.getText().toString().trim();
+ String driverForename = startDate.getText().toString().trim();
+
+ if (!TextUtils.isEmpty(regString)
+ &&!TextUtils.isEmpty(makeString)
+ &&!TextUtils.isEmpty(modelString)
+ &&!TextUtils.isEmpty(colourString)
+ &&!TextUtils.isEmpty(keeperNameStrin)
+ &&!TextUtils.isEmpty(addressString)
+ &&!TextUtils.isEmpty(postcodeString)
+ &&!TextUtils.isEmpty(driverForename)) {
+
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,VEHICLE_DETAILS_FIREBASE,vehicleProfileObject);
+ }
+
+ VehicleProfileObject vehicleProfileObject = new VehicleProfileObject(
+ regString ,makeString ,modelString ,colourString ,keeperNameStrin ,addressString ,postcodeString ,driverForename,
+ seized.isChecked()
+ );
+
+ viewController.progress(View.VISIBLE);
+ ref.child(VEHICLE_DETAILS_FIREBASE).setValue(vehicleProfileObject).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ approvalsClass.setStatusCode(UID,VEHICLE_DETAILS_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ approvalsClass.setStatusCode(UID,MOT_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ approvalsClass.setStatusCode(UID,INSURANCE_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ approvalsClass.setStatusCode(UID,LOG_BOOK_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else{
+ Toast.makeText(getContext(), "Upload Unsuccessful", Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.GONE);
+ }
+ });
+
+ }else {
+ if (TextUtils.isEmpty(regString)){reg.setError("Field required");}
+ if (TextUtils.isEmpty(makeString)){make.setError("Field required");}
+ if (TextUtils.isEmpty(modelString)){model.setError("Field required");}
+ if (TextUtils.isEmpty(colourString)){color.setError("Field required");}
+ if (TextUtils.isEmpty(keeperNameStrin)){keeperName.setError("Field required");}
+ if (TextUtils.isEmpty(addressString)){address.setError("Field required");}
+ if (TextUtils.isEmpty(postcodeString)){postcode.setError("Field required");}
+ if (TextUtils.isEmpty(driverForename)){startDate.setError("Field required");}
+
+ }
+
+ }
+
+ };
+
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/homeFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/homeDriverFragment.java
similarity index 68%
rename from app/src/main/java/h_mal/appttude/com/driver/homeFragment.java
rename to app/src/main/java/h_mal/appttude/com/driver/Driver/homeDriverFragment.java
index 29e3a89..33194f3 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/homeFragment.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/homeDriverFragment.java
@@ -1,22 +1,20 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Driver;
-import android.content.Context;
-import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import static h_mal.appttude.com.driver.MainActivity.auth;
-import static h_mal.appttude.com.driver.MainActivity.executeFragment;
-import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import h_mal.appttude.com.driver.Global.ExecuteFragment;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
-public class homeFragment extends Fragment {
+public class homeDriverFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -35,7 +33,7 @@ public class homeFragment extends Fragment {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- executeFragment(new driverProfileFragment());
+ executeFragment(new DriverOverallFragment());
}
});
@@ -43,7 +41,7 @@ public class homeFragment extends Fragment {
second.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- executeFragment(new VehicleSetupFragment());
+ executeFragment(new VehicleOverallFragment());
}
});
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/logbookFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/logbookFragment.java
new file mode 100644
index 0000000..397422f
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Driver/logbookFragment.java
@@ -0,0 +1,255 @@
+package h_mal.appttude.com.driver.Driver;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+import com.squareup.picasso.Picasso;
+
+import h_mal.appttude.com.driver.Global.FirebaseClass;
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Objects.LogbookObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class logbookFragment extends Fragment {
+
+ private String TAG = this.getClass().getSimpleName();
+ DatabaseReference reference;
+
+ TextView uploadlb;
+ ImageView lbImage;
+ ProgressBar progressBar;
+ EditText v5cNumber;
+
+ public Uri filePath;
+ public Uri picUri;
+
+ String v5cString;
+
+ LogbookObject logbookObject;
+ Boolean uploadNew;
+ String UID;
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ uploadNew = false;
+
+ if (getArguments() != null){
+ Log.i(TAG, "onCreate: args = args exist");
+ if (getArguments().containsKey("user_id")){
+ UID = getArguments().getString("user_id");
+ }else {
+ UID = auth.getCurrentUser().getUid();
+ }
+ if (getArguments().containsKey(UPLOAD_NEW)){
+ uploadNew = true;
+ }
+ }else{
+ UID = auth.getCurrentUser().getUid();
+ }
+
+ reference = mDatabase.child(USER_FIREBASE).child(UID).child(VEHICLE_FIREBASE).child(LOG_BOOK_FIREBASE);
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_logbook, container, false);
+
+ uploadlb = view.findViewById(R.id.upload_lb);
+ lbImage = view.findViewById(R.id.log_book_img);
+ progressBar = view.findViewById(R.id.pb_lb);
+ v5cNumber = view.findViewById(R.id.v5c_no);
+ Button submit = view.findViewById(R.id.submit_lb);
+
+ viewController.progress(View.VISIBLE);
+ reference.addListenerForSingleValueEvent(valueEventListener);
+
+ uploadlb.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
+ imageSelectorDialog.setImageName("logbook_pic"+getDateStamp());
+ imageSelectorDialog.show();
+ }
+ });
+
+
+ submit.setOnClickListener(submitOnClickListener);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ viewController.progress(View.GONE);
+ try{
+ logbookObject = dataSnapshot.getValue(LogbookObject.class);
+ }catch (Exception e){
+ Log.e(TAG, "onDataChange: ", e);
+ }finally {
+ if (logbookObject != null){
+ picUri = Uri.parse(logbookObject.getPhotoString());
+ v5cString = logbookObject.getV5cnumber();
+
+ if(!uploadNew) {
+ v5cNumber.setText(v5cString);
+ Picasso.get()
+ .load(picUri)
+ .into(loadImage(progressBar, lbImage));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+ };
+
+ View.OnClickListener submitOnClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ v5cString = v5cNumber.getText().toString().trim();
+
+ if (!TextUtils.isEmpty(v5cString)){
+ viewController.progress(View.VISIBLE);
+ if (filePath == null && picUri == null){
+ Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }else {
+ if (filePath != null){
+ Log.i(TAG, "onClick: new Image uploaded");
+ new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
+ @Override
+ public void processFinish(Uri output) {
+ Log.i(TAG, "processFinish: ");
+ if (output != null){
+ picUri = output;
+ publishObject();
+ }else {
+ Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
+ viewController.progress(View.GONE);
+ }
+
+ }
+ }).uploadImage(LOG_BOOK_FIREBASE,LOG_BOOK_FIREBASE + getDateStamp());
+ }else{
+ Log.i(TAG, "onClick: pushing with same image");
+ publishObject();
+ }
+ }
+
+
+ }else {
+ if (TextUtils.isEmpty(v5cString)){
+ v5cNumber.setError("Field required");
+ }
+ if (picUri == null){
+ Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ }
+
+ };
+
+ private void publishObject(){
+
+ if (uploadNew){
+ archiveClass.archiveRecord(UID,LOG_BOOK_FIREBASE,logbookObject);
+ }
+
+ LogbookObject logbookObjectNew = new LogbookObject(picUri.toString(), v5cString);
+
+ reference.setValue(logbookObjectNew).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ approvalsClass.setStatusCode(UID,LOG_BOOK_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
+ fragmentManager.popBackStack();
+ }else{
+ Toast.makeText(getContext(), "Upload Unsuccessful", Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.VISIBLE);
+ }
+ });
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == MY_CAMERA_PERMISSION_CODE) {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
+ Intent cameraIntent = new
+ Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
+ startActivityForResult(cameraIntent, CAMERA_REQUEST);
+ } else {
+ Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
+ }
+
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
+ filePath,lbImage,new ImageSelectorResults.FilepathResponse() {
+ @Override
+ public void processFinish(Uri output) {
+ filePath = output;
+ }
+ });
+
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/FindAddressFragment.java b/app/src/main/java/h_mal/appttude/com/driver/FindAddressFragment.java
deleted file mode 100644
index bfc8a42..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/FindAddressFragment.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-public class FindAddressFragment extends Fragment {
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_find_address, container, false);
-
- TextView findAddress = view.findViewById(R.id.findaddress);
- Button sumbit = view.findViewById(R.id.submit);
-
- LinearLayout linearLayout = view.findViewById(R.id.lin_lay);
-
- EditText address = view.findViewById(R.id.address);
- EditText postcode = view.findViewById(R.id.postcode);
-
- findAddress.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ImageSelectorDialog dialogAddress = new ImageSelectorDialog(getContext());
- dialogAddress.show();
- }
- });
-
- sumbit.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- }
- });
-
-
- return view;
- }
-
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.java
new file mode 100644
index 0000000..89d869d
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.java
@@ -0,0 +1,123 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.support.annotation.NonNull;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+
+import h_mal.appttude.com.driver.Objects.ApprovalsObject;
+import h_mal.appttude.com.driver.Objects.WholeDriverObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_DENIED;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVED;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.NO_DATE_PRESENT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_APPROVALS;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
+
+public class ApprovalsClass {
+
+ public ApprovalsClass() {
+ }
+
+ public static int mode(int[] array) {
+ printObjectAsJson("modeArrays",array);
+ int mode = array[0];
+ int maxCount = 0;
+ if (matchedArray(array,3)){
+ return 3;
+ }else if (matchedArray(array,0)){
+ return 0;
+ }else {
+ for (int i = 0; i < array.length; i++) {
+ int value = array[i];
+ int count = 1;
+ for (int j = 0; j < array.length; j++) {
+ if (array[j] == value) count++;
+ if (count > maxCount) {
+ mode = value;
+ maxCount = count;
+ }
+ }
+ }
+ if (mode == 3){
+ return 1;
+ }
+ }
+ return mode;
+ }
+
+ private static boolean matchedArray (int [] array, int match){
+ for (int i : array){
+ if (i != match){
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public int getOverApprovalStatusCode(WholeDriverObject wholeDriverObject){
+
+ if (wholeDriverObject.approvalsObject != null){
+ ApprovalsObject approvalsObject = wholeDriverObject.getApprovalsObject();
+
+ int[] ints = new int[]{approvalsObject.getDriver_details_approval(),
+ approvalsObject.getDriver_license_approval(),
+ approvalsObject.getPrivate_hire_approval(),
+ approvalsObject.getVehicle_details_approval(),
+ approvalsObject.getInsurance_details_approval(),
+ approvalsObject.getMot_details_approval(),
+ approvalsObject.getLog_book_approval(),
+ approvalsObject.getPh_car_approval()};
+
+
+ return setImageResource(mode(ints));
+ }
+
+ return setImageResource(NO_DATE_PRESENT);
+ }
+
+ public void setStatusCode(String userId,String approvalNameString,int status){
+
+ if (!approvalNameString.equals("")) {
+ mDatabase.child(USER_FIREBASE).child(userId).child(USER_APPROVALS).child(approvalNameString)
+ .setValue(status).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+
+ } else {
+
+ }
+ }
+ });
+ }
+
+
+ }
+
+ public int setImageResource(int statusCode){
+ int imageResource;
+
+ switch (statusCode){
+ case APPROVAL_PENDING:
+ imageResource = R.drawable.pending;
+ break;
+ case APPROVAL_DENIED:
+ imageResource = R.drawable.denied;
+ break;
+ case APPROVED:
+ imageResource = R.drawable.approved;
+ break;
+ default:
+ imageResource = R.drawable.zero;
+ break;
+ }
+
+ return imageResource;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ArchiveClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ArchiveClass.java
new file mode 100644
index 0000000..029db51
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ArchiveClass.java
@@ -0,0 +1,99 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.util.Log;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DatabaseReference;
+
+import java.util.UUID;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.ARCHIVE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.getDateTimeStamp;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+
+public class ArchiveClass {
+ private static final String TAG = "ArchiveClass";
+
+ public ArchiveClass() {
+ }
+
+ public void archiveRecord(String UID, String item, Object object) {
+ final DatabaseReference toPath = mDatabase.child(USER_FIREBASE).child(UID)
+ .child(ARCHIVE_FIREBASE).child(item);
+
+ toPath.child(getDateTimeStamp()).setValue(object).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Log.i(TAG, "onComplete: archive successful");
+ }else {
+ Log.i(TAG, "onComplete: archive unsuccessful");
+ }
+ }
+ });
+ }
+
+ public void openDialogArchive(Context context,Object object, final Fragment fragment){
+ if (object == null){
+ executeFragment(fragment);
+ }else {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setMessage("Do you want to View/Edit or Upload new?")
+ .setPositiveButton("View/Edit", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ executeFragment(fragment);
+ }
+ })
+ .setNegativeButton("Upload New", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Bundle bundle = new Bundle();
+ bundle.putString(UPLOAD_NEW,"Yes");
+ fragment.setArguments(bundle);
+ executeFragment(fragment);
+ }
+ })
+ .create().show();
+ }
+
+ }
+
+ public void openDialogArchive(Context context,Object object, String user,final Fragment fragment){
+ final Bundle bundle = new Bundle();
+ bundle.putString("user_id",user);
+ fragment.setArguments(bundle);
+
+ if (object == null){
+ executeFragment(fragment);
+ }else {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setMessage("Do you want to View/Edit or Upload new?")
+ .setPositiveButton("View/Edit", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ executeFragment(fragment);
+ }
+ })
+ .setNegativeButton("Upload New", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ bundle.putString(UPLOAD_NEW,"Yes");
+ executeFragment(fragment);
+ }
+ })
+ .create().show();
+ }
+
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/DateDialog.java b/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.java
similarity index 88%
rename from app/src/main/java/h_mal/appttude/com/driver/DateDialog.java
rename to app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.java
index 488b5c6..43c90e9 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/DateDialog.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.java
@@ -1,10 +1,12 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Global;
import android.app.DatePickerDialog;
import android.content.Context;
import android.content.Intent;
+import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
import android.text.TextUtils;
import android.util.Log;
import android.widget.DatePicker;
@@ -16,6 +18,8 @@ import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import h_mal.appttude.com.driver.R;
+
public class DateDialog extends DatePickerDialog {
int mYear;
@@ -24,10 +28,12 @@ public class DateDialog extends DatePickerDialog {
EditText editText;
+ @RequiresApi(api = Build.VERSION_CODES.N)
public DateDialog(@NonNull Context context) {
super(context);
}
+ @RequiresApi(api = Build.VERSION_CODES.N)
public DateDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
}
@@ -70,16 +76,16 @@ public class DateDialog extends DatePickerDialog {
mDay = calendar.get(Calendar.DAY_OF_MONTH);
}else {
try {
- SimpleDateFormat sdfrmt = new SimpleDateFormat("dd-MM-yyyy");
+ SimpleDateFormat sdfrmt = new SimpleDateFormat("dd/MM/yyyy");
sdfrmt.setLenient(false);
javaDate = sdfrmt.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}finally {
if (javaDate != null) {
- mYear = Integer.parseInt(dateString.substring(6, 9));
- mMonth = Integer.parseInt(dateString.substring(4, 5));
- mDay = Integer.parseInt(dateString.substring(1, 2));
+ mYear = Integer.parseInt(dateString.substring(6, dateString.length()));
+ mMonth = Integer.parseInt(dateString.substring(3, 5))-1;
+ mDay = Integer.parseInt(dateString.substring(0, 2));
}else {
Calendar calendar = Calendar.getInstance();
mYear = calendar.get(Calendar.YEAR);
@@ -110,8 +116,8 @@ public class DateDialog extends DatePickerDialog {
mMonth = month + 1;
mDay = dayOfMonth;
- editText.setText(String.format("%02d", mDay) + "-" +
- String.format("%02d", (mMonth)) +"-" +
+ editText.setText(String.format("%02d", mDay) + "/" +
+ String.format("%02d", (mMonth)) +"/" +
mYear
);
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ExecuteFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ExecuteFragment.java
new file mode 100644
index 0000000..a88ebc9
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ExecuteFragment.java
@@ -0,0 +1,65 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentTransaction;
+
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+
+public class ExecuteFragment {
+
+ public static final String UPLOAD_NEW = "upload_new";
+
+ public static void executeFragment(Fragment fragment, Bundle bundle) {
+ executeFragmentMethod(fragment,bundle);
+ }
+
+ public static void executeFragment(Fragment fragment) {
+ executeFragmentMethod(fragment);
+ }
+
+ public static void executeFragment(Fragment fragment, String userId) {
+ executeFragmentMethod(fragment,userId);
+ }
+
+ public static void executeFragment(Fragment fragment, String userId, String archive) {
+ executeFragmentMethod(fragment,userId,archive);
+ }
+
+ private static void executeFragmentMethod(Fragment f){
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+ fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
+ }
+
+ private static void executeFragmentMethod(Fragment f,String user_id){
+ Bundle bundle = new Bundle();
+ bundle.putString("user_id",user_id);
+
+ f.setArguments(bundle);
+
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+ fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
+ }
+
+ private static void executeFragmentMethod(Fragment f,String user_id,String archive){
+ Bundle bundle = new Bundle();
+ bundle.putString("user_id",user_id);
+ bundle.putString("archive",archive);
+
+ f.setArguments(bundle);
+
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+ fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
+ }
+
+ private static void executeFragmentMethod(Fragment f, Bundle b){
+ if (b != null){
+ f.setArguments(b);
+ }
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+ fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/FirebaseClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.java
similarity index 86%
rename from app/src/main/java/h_mal/appttude/com/driver/FirebaseClass.java
rename to app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.java
index 82f436f..5e271b9 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/FirebaseClass.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.java
@@ -1,9 +1,8 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Global;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.Uri;
-import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.util.Log;
import android.widget.Toast;
@@ -26,11 +25,24 @@ public class FirebaseClass {
public static final String PRIVATE_HIRE_FIREBASE = "private_hire";
public static final String DRIVERS_LICENSE_FIREBASE = "driver_license";
+ public static final String USER_APPROVALS = "approvalsObject";
+ public static final String APPROVAL_CONSTANT = "_approval";
+ public static final String ARCHIVE_FIREBASE = "archive";
+
+ public static final String DRIVER_NUMBER = "driver_number";
+
public static final String VEHICLE_FIREBASE = "vehicle_profile";
public static final String MOT_FIREBASE = "mot_details";
public static final String VEHICLE_DETAILS_FIREBASE = "vehicle_details";
public static final String INSURANCE_FIREBASE = "insurance_details";
public static final String LOG_BOOK_FIREBASE = "log_book";
+ public static final String PRIVATE_HIRE_VEHICLE_LICENSE = "private_hire_vehicle";
+
+ public static final int NO_DATE_PRESENT = 0;
+ public static final int APPROVAL_PENDING = 1;
+ public static final int APPROVAL_DENIED = 2;
+ public static final int APPROVED = 3;
+
Context context;
Uri filePath;
@@ -49,8 +61,7 @@ public class FirebaseClass {
public void uploadImage(String path, String name) {
- if(filePath != null)
- {
+ if(filePath != null) {
final ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setTitle("Uploading...");
progressDialog.show();
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ImageSelectorDialog.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.java
similarity index 79%
rename from app/src/main/java/h_mal/appttude/com/driver/ImageSelectorDialog.java
rename to app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.java
index 7c35667..835af5e 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/ImageSelectorDialog.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.java
@@ -1,4 +1,4 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Global;
import android.Manifest;
import android.app.Activity;
@@ -17,6 +17,7 @@ import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.content.FileProvider;
+import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -33,6 +34,9 @@ import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import h_mal.appttude.com.driver.R;
+
+import static android.support.v4.app.ActivityCompat.getPermissionCompatDelegate;
import static android.support.v4.app.ActivityCompat.requestPermissions;
import static android.support.v4.app.ActivityCompat.startActivityForResult;
import static android.support.v4.content.PermissionChecker.checkSelfPermission;
@@ -45,6 +49,7 @@ public class ImageSelectorDialog extends Dialog{
public static final int PICK_IMAGE_REQUEST = 71;
public static final int CAMERA_REQUEST = 1888;
public static final int MY_CAMERA_PERMISSION_CODE = 100;
+ public static final int STORAGE_PERMISSION_CODE = 101;
private String saveFileName;
public static Uri photoURI;
@@ -73,11 +78,8 @@ public class ImageSelectorDialog extends Dialog{
setContentView(R.layout.address_dialog);
//check if we have we have storage rights
- int permission = ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
-
- if (permission != PackageManager.PERMISSION_GRANTED) {
- Toast.makeText(getContext(), "Storage permissions not granted", Toast.LENGTH_SHORT).show();
- }else {
+ final int permissionPic = ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ final int permissionCam = ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.CAMERA);
fragment = fragmentManager.getFragments().get(0);
@@ -87,7 +89,14 @@ public class ImageSelectorDialog extends Dialog{
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- chooseImage();
+ if (permissionPic == PackageManager.PERMISSION_GRANTED){
+ chooseImage();
+
+ }else {
+ Toast.makeText(getContext(), "Storage permissions required", Toast.LENGTH_SHORT).show();
+ requestPermissions(fragment.getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
+ STORAGE_PERMISSION_CODE);
+ }
dismiss();
}
});
@@ -95,13 +104,7 @@ public class ImageSelectorDialog extends Dialog{
takePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
- if (
- checkSelfPermission(fragment.getActivity(), Manifest.permission.CAMERA)
- != PackageManager.PERMISSION_GRANTED) {
- requestPermissions(fragment.getActivity(), new String[]{Manifest.permission.CAMERA},
- MY_CAMERA_PERMISSION_CODE);
- } else {
+ if (permissionCam == PackageManager.PERMISSION_GRANTED){
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File file = createFile();
photoURI = Uri.fromFile(file);
@@ -111,13 +114,14 @@ public class ImageSelectorDialog extends Dialog{
file);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
fragment.startActivityForResult(cameraIntent, CAMERA_REQUEST);
-
+ }else {
+ Toast.makeText(getContext(), "Camera Permissions required", Toast.LENGTH_SHORT).show();
+ requestPermissions(fragment.getActivity(), new String[]{Manifest.permission.CAMERA},
+ MY_CAMERA_PERMISSION_CODE);
}
-
dismiss();
}
});
- }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ImageSelectorResults.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.java
similarity index 53%
rename from app/src/main/java/h_mal/appttude/com/driver/ImageSelectorResults.java
rename to app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.java
index 0ebe476..6ec3b61 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/ImageSelectorResults.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.java
@@ -1,18 +1,14 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.Global;
import android.Manifest;
import android.app.Activity;
-import android.content.ContentResolver;
-import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
-import android.graphics.Picture;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
@@ -21,16 +17,12 @@ import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import static android.app.Activity.RESULT_OK;
import static android.os.Environment.DIRECTORY_PICTURES;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.CAMERA_REQUEST;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.PICK_IMAGE_REQUEST;
-import static h_mal.appttude.com.driver.ImageSelectorDialog.photoURI;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.PICK_IMAGE_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.photoURI;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
public class ImageSelectorResults {
@@ -41,14 +33,13 @@ public class ImageSelectorResults {
void processFinish(Uri output);
}
- public FilepathResponse delegate;
+// public FilepathResponse delegate;
- public ImageSelectorResults(FilepathResponse delegate) {
- this.delegate = delegate;
+ public ImageSelectorResults() {
}
public void Results(Activity activity, int requestCode, int resultCode, Intent data, Uri filePath,
- ImageView imageView){
+ ImageView imageView,FilepathResponse delegate){
this.activity = activity;
@@ -70,9 +61,12 @@ public class ImageSelectorResults {
}
finally {
if (bitmap != null){
-//
+ delegate.processFinish(filePath);
+ Log.i(getClass().getSimpleName(), "Results: " + filePath);
}
}
+
+
}
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
@@ -108,10 +102,73 @@ public class ImageSelectorResults {
}
+ delegate.processFinish(filePath);
+ Log.i(getClass().getSimpleName(), "Results: " + filePath);
+ }
+ }
+
+ public void Results(Activity activity, int requestCode, int resultCode, Intent data, Uri filePath,FilepathResponse delegate){
+
+ this.activity = activity;
+
+ if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
+ && data != null && data.getData() != null )
+ {
+ filePath = data.getData();
+ Bitmap bitmap = null;
+ try {
+ bitmap = MediaStore.Images.Media.getBitmap(activity.getContentResolver(), filePath);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ finally {
+ if (bitmap != null){
+ delegate.processFinish(filePath);
+ Log.i(getClass().getSimpleName(), "Results: " + filePath);
+ }
+ }
}
- delegate.processFinish(filePath);
- Log.i(getClass().getSimpleName(), "Results: " + filePath);
+ if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
+ //check if we have we have storage rights
+ int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+
+ if (permission != PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(activity, "Storage permissions not granted", Toast.LENGTH_SHORT).show();
+ return;
+ }else {
+
+ try {
+ File f = Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES);
+ String fname = "driver"+ getDateStamp() + ".jpg";
+ File image = new File(f,fname);
+ FileOutputStream fileOutputStream = new FileOutputStream(image);
+
+ filePath = photoURI;
+
+ Bitmap bitmap = MediaStore.Images.Media
+ .getBitmap(activity.getContentResolver(), photoURI);
+
+
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 90,fileOutputStream);
+ fileOutputStream.flush();
+ fileOutputStream.close();
+ galleryAddPic();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ delegate.processFinish(filePath);
+ Log.i(getClass().getSimpleName(), "Results: " + filePath);
+
+ }
+
+
}
private void galleryAddPic() {
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSwiperClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSwiperClass.java
new file mode 100644
index 0000000..6f92273
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSwiperClass.java
@@ -0,0 +1,245 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract;
+import android.support.annotation.NonNull;
+import android.support.v4.view.PagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.AlphaAnimation;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+
+import com.squareup.picasso.Picasso;
+import com.squareup.picasso.Target;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.MainActivity.imageViewClass;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
+
+public class ImageSwiperClass{
+
+ private static final String TAG = "ImageSwiperClass";
+
+ private ImageView left;
+ private ImageView mainImage;
+ private ImageView right;
+
+ private List imageStrings;
+ private Context context;
+
+ private SlidingImageViewAdapter adapter;
+
+ ViewPager viewPager;
+ public ImageView delete;
+
+ public ImageSwiperClass(Context context, View wholeView) {
+ this.context = context;
+
+ left = wholeView.findViewById(R.id.left);
+ right = wholeView.findViewById(R.id.right);
+
+ left.setOnClickListener(leftClick);
+ right.setOnClickListener(rightClick);
+
+ viewPager = wholeView.findViewById(R.id.view_pager);
+
+ delete = wholeView.findViewById(R.id.delete);
+
+ viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int i, float v, int i1) {
+ AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f);
+ animation1.setDuration(200);
+ animation1.setFillAfter(true);
+ delete.startAnimation(animation1);
+ }
+
+ @Override
+ public void onPageSelected(final int i) {
+ Log.i(TAG, "onPageSelected: position = " + i);
+ setArrows();
+ delete.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ deleteDialog(i);
+ }
+ });
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int i) {
+
+ }
+ });
+
+ Log.i(TAG, "ImageSwiperClass: viewpager = " + viewPager.getId());
+ }
+
+ public List getImageStrings() {
+ return imageStrings;
+ }
+
+ public void addPhotoString(String s){
+ if (imageStrings == null){
+ imageStrings = new ArrayList<>();
+ }
+ imageStrings.add(s);
+
+ adapter = new SlidingImageViewAdapter();
+ viewPager.setAdapter(adapter);
+ }
+
+ public void reinstantiateList(List imageStrings){
+ this.imageStrings = imageStrings;
+
+ adapter = new SlidingImageViewAdapter();
+ viewPager.setAdapter(adapter);
+
+ setArrows();
+ }
+
+ public void hideDelete(){
+ delete.setVisibility(View.INVISIBLE);
+ Log.i(TAG, "hideDelete: hides deleete?");
+ }
+
+ private View.OnClickListener leftClick = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
+ setArrows();
+ }
+ };
+
+ private View.OnClickListener rightClick = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ viewPager.setCurrentItem(viewPager.getCurrentItem() +1);
+ setArrows();
+ }
+ };
+
+ private void deleteDialog(final int position){
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setMessage("Are you sure you want to delete?")
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ imageStrings.remove(position);
+ viewPager.setAdapter(adapter);
+// adapter.notifyDataSetChanged();
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, null)
+ .create()
+ .show();
+ }
+
+ private void setArrows(){
+ if (imageStrings != null && imageStrings.size() > 0){
+ //left arrow
+ if (viewPager.getCurrentItem() > 0){
+ setAnimation(left,true);
+ }else{
+ setAnimation(left,false);
+ }
+
+ //right
+ if (viewPager.getCurrentItem() == imageStrings.size() -1){
+ setAnimation(right,false);
+ }else{
+ setAnimation(right,true);
+ }
+ }
+ if (imageStrings == null){
+ setAnimation(left,false);
+ setAnimation(right,false);
+ }
+ }
+
+ private void setAnimation(ImageView view,boolean up){
+ float start;
+ float finish;
+ if(up){
+ start = 0.2f;
+ finish = 1.0f;
+ }else {
+ start = 1.0f;
+ finish = 0.2f;
+ }
+// if (view.getAlpha() != start){
+ AlphaAnimation animation1 = new AlphaAnimation(start, finish);
+ animation1.setDuration(500);
+ animation1.setFillAfter(true);
+// view.startAnimation(animation1);
+ view.setAlpha(finish);
+// }
+
+ }
+
+ class SlidingImageViewAdapter extends PagerAdapter{
+
+ @Override
+ public int getCount() {
+ if (imageStrings == null || imageStrings.size() < 1){
+ delete.setVisibility(View.GONE);
+ return 0;
+ }else {
+ delete.setVisibility(View.VISIBLE);
+ return imageStrings.size();
+ }
+
+ }
+
+ @Override
+ public void destroyItem(@NonNull ViewGroup container, int position,Object object) {
+ if (object != null){
+ container.removeView((View) object);
+ }else {
+ container.removeViewAt(position);
+ }
+ }
+
+ @Override
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
+ return view.equals(o);
+ }
+
+ @NonNull
+ @Override
+ public Object instantiateItem(@NonNull ViewGroup container, final int position) {
+ View pagerPic = LayoutInflater.from(context).inflate(R.layout.insurance_item,container,false);
+ setArrows();
+
+ if(imageStrings != null && imageStrings.size() >0){
+ mainImage = pagerPic.getRootView().findViewById(R.id.main_image);
+ final ProgressBar pb = pagerPic.findViewById(R.id.pb_ins);
+
+ Picasso.get().load(imageStrings.get(position)).into(loadImage(pb,mainImage));
+
+ }
+
+ container.addView(pagerPic, 0);
+
+ return pagerPic;
+ }
+
+ @Override
+ public void notifyDataSetChanged() {
+ super.notifyDataSetChanged();
+ }
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageViewClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageViewClass.java
new file mode 100644
index 0000000..0dcb4b1
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageViewClass.java
@@ -0,0 +1,121 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+import com.github.chrisbanes.photoview.PhotoView;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import h_mal.appttude.com.driver.R;
+
+import static android.os.Environment.DIRECTORY_PICTURES;
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.photoURI;
+import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
+
+public class ImageViewClass {
+
+ public static final String IMAGE_VALUE = "image";
+ private static Bitmap bitmap;
+
+ public ImageViewClass() {
+ }
+
+ public void open(Bitmap bitmap){
+ ImageViewClass.bitmap = bitmap;
+ executeFragment(new ImageViewerFragment());
+ }
+
+ public static class ImageViewerFragment extends Fragment {
+
+ private View view;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ view = inflater.inflate(R.layout.fragment_image_viewer, container, false);
+
+ FloatingActionButton fab = view.findViewById(R.id.download_pic);
+
+ if (bitmap != null){
+ PhotoView photoView = view.findViewById(R.id.photo_view);
+ photoView.setImageBitmap(bitmap);
+
+ fab.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ try {
+ downloadPic();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+
+
+ return view;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
+ getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
+ @Override
+ public void onStop() {
+ super.onStop();
+ ((AppCompatActivity)getActivity()).getSupportActionBar().show();
+ getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
+
+ private void downloadPic() throws FileNotFoundException {
+ File f = Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES);
+ String fname = "driver"+ getDateStamp() + ".jpg";
+ File image = new File(f,fname);
+ FileOutputStream fileOutputStream = new FileOutputStream(image);
+
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
+ try {
+ fileOutputStream.flush();
+ fileOutputStream.close();
+
+ Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
+ Uri contentUri = Uri.fromFile(image);
+ mediaScanIntent.setData(contentUri);
+ getActivity().sendBroadcast(mediaScanIntent);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/SetApprovalDialog.java b/app/src/main/java/h_mal/appttude/com/driver/Global/SetApprovalDialog.java
new file mode 100644
index 0000000..7a7ae56
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/SetApprovalDialog.java
@@ -0,0 +1,155 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.support.annotation.NonNull;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_DENIED;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVED;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_DETAILS_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_APPROVALS;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_DETAILS_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+public class SetApprovalDialog{
+
+ private final String[] groupNames = {"Pending","Denied","Approved"};
+ private String approvalNameString;
+
+ public int statusCode;
+ private Activity activity;
+ private String userId;
+ private ImageView imageView;
+
+ public SetApprovalDialog(int statusCode, Activity activity, String userId, int position, ImageView imageView) {
+ this.statusCode = statusCode;
+ this.activity = activity;
+ this.userId = userId;
+ this.imageView = imageView;
+ this.approvalNameString = getElement(position);
+
+ init();
+ }
+
+ public void init(){
+ int checkedItem;
+ switch (statusCode){
+ case APPROVAL_PENDING:
+ checkedItem = 0;
+ break;
+ case APPROVAL_DENIED:
+ checkedItem = 1;
+ break;
+ case APPROVED:
+ checkedItem = 2;
+ break;
+ default:
+ checkedItem = -1;
+ break;
+ }
+
+ AlertDialog.Builder alertBuilder = new AlertDialog.Builder(activity);
+ alertBuilder.setSingleChoiceItems(groupNames, checkedItem, singleChoiceListener);
+// .setPositiveButton(android.R.string.ok, submit);
+ alertBuilder.create().getOwnerActivity();
+ alertBuilder.show();
+ }
+
+ DialogInterface.OnClickListener singleChoiceListener = new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ switch (which) {
+ case 0:
+ statusCode = APPROVAL_PENDING;
+ publishStatuscode(statusCode, dialog);
+ return;
+ case 1:
+ statusCode = APPROVAL_DENIED;
+ publishStatuscode(statusCode, dialog);
+ return;
+ case 2:
+ statusCode = APPROVED;
+ publishStatuscode(statusCode, dialog);
+ return;
+ }
+ }
+ };
+
+ private void publishStatuscode(final int status, final DialogInterface dialog){
+ viewController.progress(View.VISIBLE);
+
+ if (!approvalNameString.equals("")){
+ mDatabase.child(USER_FIREBASE).child(userId).child(USER_APPROVALS).child(approvalNameString)
+ .setValue(status).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Toast.makeText(activity, "Status change successful", Toast.LENGTH_SHORT).show();
+ imageView.setImageResource(approvalsClass.setImageResource(status));
+ dialog.dismiss();
+ }else{
+ Toast.makeText(activity, "Status change unsuccessful", Toast.LENGTH_SHORT).show();
+ }
+ viewController.progress(View.GONE);
+ }
+ });
+ }else {
+ Toast.makeText(activity, "Could not push status", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+
+ private String getElement(int i){
+ String element = "";
+
+ switch (i){
+ case 0:
+ element = DRIVER_DETAILS_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 1:
+ element = DRIVERS_LICENSE_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 2:
+ element = PRIVATE_HIRE_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 3:
+ element = VEHICLE_DETAILS_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 4:
+ element = INSURANCE_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 5:
+ element = MOT_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 6:
+ element = LOG_BOOK_FIREBASE + APPROVAL_CONSTANT;
+ break;
+ case 7:
+ element = PRIVATE_HIRE_VEHICLE_LICENSE + APPROVAL_CONSTANT;
+
+ }
+
+ return element;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ViewController.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ViewController.java
new file mode 100644
index 0000000..26e1adc
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ViewController.java
@@ -0,0 +1,32 @@
+package h_mal.appttude.com.driver.Global;
+
+import android.app.Activity;
+import android.view.View;
+
+public class ViewController {
+
+ private Activity activity;
+
+ public ViewController(Activity activity) {
+ this.activity = activity;
+ }
+
+ public void progress(int vis){
+ if (activity instanceof ViewControllerInterface){
+ ((ViewControllerInterface) activity).progressVisibility(vis);
+ }
+ }
+
+ public void reloadDrawer(){
+ if (activity instanceof ViewControllerInterface){
+ ((ViewControllerInterface) activity).updateDrawer();
+ }
+ }
+
+ public interface ViewControllerInterface {
+
+ void progressVisibility(int vis);
+
+ void updateDrawer();
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/InsuranceFragment.java b/app/src/main/java/h_mal/appttude/com/driver/InsuranceFragment.java
deleted file mode 100644
index 0fd5139..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/InsuranceFragment.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.content.Context;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-
-public class InsuranceFragment extends Fragment {
-
- private String TAG = this.getClass().getSimpleName();
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_insurance, container, false);
-
- TextView uploadInsurance = view.findViewById(R.id.uploadInsurance);
-
-
-
- uploadInsurance.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- }
- });
-
- return view;
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/MainActivity.java b/app/src/main/java/h_mal/appttude/com/driver/MainActivity.java
index 736454c..2ffd32d 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/MainActivity.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/MainActivity.java
@@ -2,17 +2,16 @@ package h_mal.appttude.com.driver;
import android.Manifest;
import android.app.Activity;
-import android.content.Context;
+import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
+import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.View;
@@ -24,23 +23,49 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.WindowManager;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
-import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
+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.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
import com.squareup.picasso.Picasso;
+import com.squareup.picasso.Target;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import h_mal.appttude.com.driver.Driver.DriverOverallFragment;
+import h_mal.appttude.com.driver.Driver.VehicleOverallFragment;
+import h_mal.appttude.com.driver.Driver.VehicleSetupFragment;
+import h_mal.appttude.com.driver.Driver.DriverProfileFragment;
+import h_mal.appttude.com.driver.Driver.homeDriverFragment;
+import h_mal.appttude.com.driver.Global.ApprovalsClass;
+import h_mal.appttude.com.driver.Global.ArchiveClass;
+import h_mal.appttude.com.driver.Global.ImageViewClass;
+import h_mal.appttude.com.driver.Global.ViewController;
+import h_mal.appttude.com.driver.SuperUser.homeSuperUserFragment;
+import h_mal.appttude.com.driver.User.LoginActivity;
+import h_mal.appttude.com.driver.User.profileFragment;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+
public class MainActivity extends AppCompatActivity
- implements NavigationView.OnNavigationItemSelectedListener {
+ implements NavigationView.OnNavigationItemSelectedListener, ViewController.ViewControllerInterface {
private static String TAG = MainActivity.class.getSimpleName();
@@ -50,7 +75,14 @@ public class MainActivity extends AppCompatActivity
public static StorageReference storageReference;
public static DatabaseReference mDatabase;
- public static NavigationView navigationView;
+ public NavigationView navigationView;
+ ProgressBar progressBar;
+ public Toolbar toolbar;
+
+ public static ViewController viewController;
+ public static ImageViewClass imageViewClass;
+ public static ApprovalsClass approvalsClass;
+ public static ArchiveClass archiveClass;
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
@@ -63,12 +95,22 @@ public class MainActivity extends AppCompatActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+ viewController = new ViewController(this);
+ imageViewClass = new ImageViewClass();
+ approvalsClass = new ApprovalsClass();
+ archiveClass = new ArchiveClass();
+
auth = FirebaseAuth.getInstance();
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
mDatabase = FirebaseDatabase.getInstance().getReference();
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ DatabaseReference ref = mDatabase.child(USER_FIREBASE)
+ .child(auth.getCurrentUser().getUid())
+ .child("role");
+
+
+ toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -79,20 +121,91 @@ public class MainActivity extends AppCompatActivity
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
-
- fragmentManager = getSupportFragmentManager();
- executeFragment(new homeFragment());
-
setupDrawer();
+ fragmentManager = getSupportFragmentManager();
+ fragmentManager.addOnBackStackChangedListener(backStackChangedListener);
+
+ progressBar = findViewById(R.id.progress_bar);
+ progressBar.setVisibility(View.VISIBLE);
+
+ ref.addListenerForSingleValueEvent(new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+ String role = (String) dataSnapshot.getValue();
+ Log.i(TAG, "onDataChange: " + role);
+ if (role.equals("driver")){
+ executeFragment(new homeDriverFragment());
+
+ }else if(role.equals("super_user")){
+ executeFragment(new homeSuperUserFragment());
+ }
+ drawerMenuItems(role);
+ progressBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ progressBar.setVisibility(View.GONE);
+ }
+ });
}
- public static void executeFragment(Fragment f){
- FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
- fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
+ public FragmentManager.OnBackStackChangedListener backStackChangedListener= new FragmentManager.OnBackStackChangedListener() {
+ @Override
+ public void onBackStackChanged() {
+ String fragmentString = fragmentManager.getFragments().get(0).getClass().getSimpleName();
+ String title;
+
+ switch (fragmentString){
+ case "DriverProfileFragment":
+ title = "Driver Profile";
+ break;
+ case "DriverLicenseFragment":
+ title = "Drivers License";
+ break;
+ case "InsuranceFragment":
+ title = "Insurance";
+ break;
+ case "logbookFragment":
+ title = "Logbook";
+ break;
+ case "MotFragment":
+ title = "M.O.T";
+ break;
+ case "PrivateHireLicenseFragment":
+ title = "Private Hire License";
+ break;
+ case "VehicleSetupFragment":
+ title = "Vehicle Profile";
+ break;
+ case "UserMainFragment":
+ return;
+ case "ArchiveFragment":
+ return;
+ default:
+ title = getResources().getString(R.string.app_name);
+ }
+
+ setTitle(title);
+ }
+ };
+
+ @Override
+ public void setTitle(CharSequence title) {
+// super.setTitle(title);
+
+ toolbar.setTitle(title);
}
- public static void setupDrawer(){
+ public void drawerMenuItems(String s){
+ if (s.equals("super_user")){
+ Menu menu = navigationView.getMenu();
+ menu.removeGroup(R.id.menu_group);
+ }
+ }
+
+ public void setupDrawer(){
View header = navigationView.getHeaderView(0);
TextView driverEmail = header.findViewById(R.id.driver_email);
@@ -108,14 +221,22 @@ public class MainActivity extends AppCompatActivity
driverName.setText(user.getDisplayName());
}
- Log.i(TAG, "setupDrawer: "+ storageReference.child("images/"+auth.getCurrentUser().getEmail()+"/profile_pic").getDownloadUrl());
-
Picasso.get()
.load(user.getPhotoUrl())
- .placeholder(R.mipmap.ic_launcher_round)
+ .placeholder(R.drawable.choice_img_round)
.into(driverImage);
}
+ TextView textView = findViewById(R.id.logout);
+ textView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ auth.signOut();
+ Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
+ startActivity(intent);
+ finish();
+ }
+ });
}
@@ -126,9 +247,23 @@ public class MainActivity extends AppCompatActivity
drawer.closeDrawer(GravityCompat.START);
} else {
if (fragmentManager.getBackStackEntryCount() > 1) {
- fragmentManager.popBackStack();
+ if (fragmentManager.getFragments().get(0).getClass()
+ .getSimpleName().equals("InsuranceFragment")){
+ new AlertDialog.Builder(this)
+ .setTitle("Return to previous?")
+ .setMessage("Progress unsaved. Are you sure?")
+ .setNegativeButton(android.R.string.no, null)
+ .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface arg0, int arg1) {
+ fragmentManager.popBackStack();
+ }
+ }).create().show();
+ }else{
+ fragmentManager.popBackStack();
+ }
+
}else{
- new AlertDialog.Builder(this,R.style.Theme_AppCompat_Dialog_Alert)
+ new AlertDialog.Builder(this)
.setTitle("Leave?")
.setMessage("Are you sure you want to exit?")
.setNegativeButton(android.R.string.no, null)
@@ -142,13 +277,6 @@ public class MainActivity extends AppCompatActivity
}
}
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
@@ -174,9 +302,9 @@ public class MainActivity extends AppCompatActivity
// Handle the camera action
executeFragment(new profileFragment());
} else if (id == R.id.nav_gallery) {
- executeFragment(new driverProfileFragment());
+ executeFragment(new DriverOverallFragment());
} else if (id == R.id.nav_slideshow) {
- executeFragment(new VehicleSetupFragment());
+ executeFragment(new VehicleOverallFragment());
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -198,8 +326,72 @@ public class MainActivity extends AppCompatActivity
}
}
+ public static Target loadImage (final ProgressBar pb, final ImageView mainImage){
+
+ Target target = new Target() {
+ @Override
+ public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
+ pb.setVisibility(View.GONE);
+
+ mainImage.setImageBitmap(bitmap);
+ mainImage.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ imageViewClass.open(bitmap);
+ }
+ });
+ }
+
+ @Override
+ public void onBitmapFailed(Exception e, Drawable errorDrawable) {
+ pb.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onPrepareLoad(Drawable placeHolderDrawable) {
+ pb.setVisibility(View.VISIBLE);
+ }
+ };
+ mainImage.setTag(target);
+
+ return target;
+
+ }
+
public static String getDateStamp(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmm");
return sdf.format(new Date());
}
+
+ public static String getDateTimeStamp(){
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
+ return sdf.format(new Date());
+ }
+
+ public static String setAsDateTime(String strCurrentDate) throws ParseException {
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
+ Date newDate = format.parse(strCurrentDate);
+
+ format = new SimpleDateFormat("dd/MM/yyyy");
+ return format.format(newDate);
+ }
+
+ public static void printObjectAsJson(String TAG, Object o){
+ Gson gson = new GsonBuilder().setPrettyPrinting().create();
+ JsonParser jp = new JsonParser();
+ JsonElement je = jp.parse(new Gson().toJson(o));
+ String prettyJsonString = gson.toJson(je);
+
+ Log.i(TAG, "onBindViewHolder: object" + prettyJsonString);
+ }
+
+ @Override
+ public void progressVisibility(int vis) {
+ progressBar.setVisibility(vis);
+ }
+
+ @Override
+ public void updateDrawer() {
+ setupDrawer();
+ }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/MotFragment.java b/app/src/main/java/h_mal/appttude/com/driver/MotFragment.java
deleted file mode 100644
index efeff74..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/MotFragment.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.content.Context;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-
-public class MotFragment extends Fragment {
-
- private String TAG = this.getClass().getSimpleName();
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_mot, container, false);
-
- TextView uploadMot = view.findViewById(R.id.uploadmot);
-
-
-
- uploadMot.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- }
- });
-
- return view;
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.java
new file mode 100644
index 0000000..38d5f0e
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.java
@@ -0,0 +1,59 @@
+package h_mal.appttude.com.driver.Objects;
+
+public class ApprovalsObject {
+
+ public int driver_details_approval;
+ public int driver_license_approval;
+ public int private_hire_approval;
+ public int vehicle_details_approval;
+ public int mot_details_approval;
+ public int insurance_details_approval;
+ public int log_book_approval;
+ public int private_hire_vehicle_approval;
+
+ public ApprovalsObject() {
+ }
+
+ public ApprovalsObject(int driver_details_approval, int driver_license_approval, int private_hire_approval, int vehicle_details_approval, int mot_details_approval, int insurance_details_approval, int log_book_approval, int private_hire_vehicle_approval) {
+ this.driver_details_approval = driver_details_approval;
+ this.driver_license_approval = driver_license_approval;
+ this.private_hire_approval = private_hire_approval;
+ this.vehicle_details_approval = vehicle_details_approval;
+ this.mot_details_approval = mot_details_approval;
+ this.insurance_details_approval = insurance_details_approval;
+ this.log_book_approval = log_book_approval;
+ this.private_hire_vehicle_approval = private_hire_vehicle_approval;
+ }
+
+ public int getPh_car_approval() {
+ return private_hire_vehicle_approval;
+ }
+
+ public int getDriver_details_approval() {
+ return driver_details_approval;
+ }
+
+ public int getDriver_license_approval() {
+ return driver_license_approval;
+ }
+
+ public int getPrivate_hire_approval() {
+ return private_hire_approval;
+ }
+
+ public int getVehicle_details_approval() {
+ return vehicle_details_approval;
+ }
+
+ public int getMot_details_approval() {
+ return mot_details_approval;
+ }
+
+ public int getInsurance_details_approval() {
+ return insurance_details_approval;
+ }
+
+ public int getLog_book_approval() {
+ return log_book_approval;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/ArchiveObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/ArchiveObject.java
new file mode 100644
index 0000000..4271a41
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/ArchiveObject.java
@@ -0,0 +1,56 @@
+package h_mal.appttude.com.driver.Objects;
+
+import java.util.HashMap;
+import java.util.List;
+
+public class ArchiveObject {
+
+ public HashMap driver_license;
+ public HashMap private_hire;
+ public HashMap vehicle_details;
+ public HashMap insurance_details;
+ public HashMap mot_details;
+ public HashMap log_book;
+ public HashMap private_hire_vehicle;
+
+ public ArchiveObject() {
+ }
+
+ public ArchiveObject(HashMap driver_license, HashMap private_hire, HashMap vehicle_details, HashMap insurance_details, HashMap mot_details, HashMap log_book, HashMap private_hire_vehicle) {
+ this.driver_license = driver_license;
+ this.private_hire = private_hire;
+ this.vehicle_details = vehicle_details;
+ this.insurance_details = insurance_details;
+ this.mot_details = mot_details;
+ this.log_book = log_book;
+ this.private_hire_vehicle = private_hire_vehicle;
+ }
+
+ public HashMap getPh_car() {
+ return private_hire_vehicle;
+ }
+
+ public HashMap getDriver_license() {
+ return driver_license;
+ }
+
+ public HashMap getPrivate_hire() {
+ return private_hire;
+ }
+
+ public HashMap getVehicle_details() {
+ return vehicle_details;
+ }
+
+ public HashMap getInsurance_details() {
+ return insurance_details;
+ }
+
+ public HashMap getMot_details() {
+ return mot_details;
+ }
+
+ public HashMap getLog_book() {
+ return log_book;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.java
index 64f0eb3..4fc907a 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.java
@@ -1,4 +1,31 @@
package h_mal.appttude.com.driver.Objects;
-class InsuranceObject {
+import java.util.List;
+
+public class InsuranceObject {
+
+ public List photoStrings;
+ public String insurerName;
+ public String expiryDate;
+
+ public InsuranceObject() {
+ }
+
+ public InsuranceObject(List photoStrings, String insurerName, String expiryDate) {
+ this.photoStrings = photoStrings;
+ this.insurerName = insurerName;
+ this.expiryDate = expiryDate;
+ }
+
+ public List getPhotoStrings() {
+ return photoStrings;
+ }
+
+ public String getInsurerName() {
+ return insurerName;
+ }
+
+ public String getExpiryDate() {
+ return expiryDate;
+ }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.java
index b1722f1..43ac12e 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.java
@@ -1,4 +1,23 @@
package h_mal.appttude.com.driver.Objects;
-class LogbookObject {
+public class LogbookObject {
+
+ public String photoString;
+ public String v5cnumber;
+
+ public LogbookObject(String photoString, String v5cnumber) {
+ this.photoString = photoString;
+ this.v5cnumber = v5cnumber;
+ }
+
+ public LogbookObject() {
+ }
+
+ public String getPhotoString() {
+ return photoString;
+ }
+
+ public String getV5cnumber() {
+ return v5cnumber;
+ }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/MotObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/MotObject.java
index a4f9ce2..d895221 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/MotObject.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/MotObject.java
@@ -1,4 +1,23 @@
package h_mal.appttude.com.driver.Objects;
public class MotObject {
+
+ public String motImageString;
+ public String motExpiry;
+
+ public MotObject() {
+ }
+
+ public MotObject(String motImageString, String motExpiry) {
+ this.motImageString = motImageString;
+ this.motExpiry = motExpiry;
+ }
+
+ public String getMotImageString() {
+ return motImageString;
+ }
+
+ public String getMotExpiry() {
+ return motExpiry;
+ }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireVehicleObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireVehicleObject.java
new file mode 100644
index 0000000..5389b90
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireVehicleObject.java
@@ -0,0 +1,29 @@
+package h_mal.appttude.com.driver.Objects;
+
+public class PrivateHireVehicleObject {
+
+ public String phCarImageString;
+ public String phCarNumber;
+ public String phCarExpiry;
+
+ public PrivateHireVehicleObject(String phCarImageString, String phCarNumber, String phCarExpiry) {
+ this.phCarImageString = phCarImageString;
+ this.phCarNumber = phCarNumber;
+ this.phCarExpiry = phCarExpiry;
+ }
+
+ public PrivateHireVehicleObject() {
+ }
+
+ public String getPhCarImageString() {
+ return phCarImageString;
+ }
+
+ public String getPhCarNumber() {
+ return phCarNumber;
+ }
+
+ public String getPhCarExpiry() {
+ return phCarExpiry;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/UserObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/UserObject.java
new file mode 100644
index 0000000..9f77738
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/UserObject.java
@@ -0,0 +1,29 @@
+package h_mal.appttude.com.driver.Objects;
+
+public class UserObject {
+
+ public String profileName;
+ public String profileEmail;
+ public String profilePicString;
+
+ public UserObject() {
+ }
+
+ public UserObject(String profileName, String profileEmail, String profilePicString) {
+ this.profileName = profileName;
+ this.profileEmail = profileEmail;
+ this.profilePicString = profilePicString;
+ }
+
+ public String getProfileName() {
+ return profileName;
+ }
+
+ public String getProfileEmail() {
+ return profileEmail;
+ }
+
+ public String getProfilePicString() {
+ return profilePicString;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/VehicleProfileObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/VehicleProfileObject.java
index 652a941..3349076 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/VehicleProfileObject.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/VehicleProfileObject.java
@@ -11,13 +11,23 @@ public class VehicleProfileObject {
public String keeperPostCode;
public String startDate;
public boolean seized;
- public MotObject motObject;
- public InsuranceObject insuranceObject;
- public LogbookObject logbookObject;
public VehicleProfileObject() {
}
+ public VehicleProfileObject(String reg, String make, String model, String colour, String keeperName,
+ String keeperAddress, String keeperPostCode, String startDate, boolean seized) {
+ this.reg = reg;
+ this.make = make;
+ this.model = model;
+ this.colour = colour;
+ this.keeperName = keeperName;
+ this.keeperAddress = keeperAddress;
+ this.keeperPostCode = keeperPostCode;
+ this.startDate = startDate;
+ this.seized = seized;
+ }
+
public String getReg() {
return reg;
}
@@ -54,15 +64,4 @@ public class VehicleProfileObject {
return seized;
}
- public MotObject getMotObject() {
- return motObject;
- }
-
- public InsuranceObject getInsuranceObject() {
- return insuranceObject;
- }
-
- public LogbookObject getLogbookObject() {
- return logbookObject;
- }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeDriverObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeDriverObject.java
new file mode 100644
index 0000000..62a776f
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeDriverObject.java
@@ -0,0 +1,59 @@
+package h_mal.appttude.com.driver.Objects;
+
+import h_mal.appttude.com.driver.Objects.ApprovalsObject;
+import h_mal.appttude.com.driver.Objects.ArchiveObject;
+import h_mal.appttude.com.driver.Objects.UserObject;
+import h_mal.appttude.com.driver.Objects.WholeObject.DriverProfile;
+import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile;
+
+public class WholeDriverObject {
+
+ public DriverProfile driver_profile;
+ public String role;
+ public ArchiveObject archive;
+ public UserObject user_details;
+ public VehicleProfile vehicle_profile;
+ public ApprovalsObject approvalsObject;
+ public String driver_number;
+
+ public WholeDriverObject(DriverProfile driver_profile, String role, ArchiveObject archive, UserObject user_details, VehicleProfile vehicle_profile, ApprovalsObject approvalsObject, String driver_number) {
+ this.driver_profile = driver_profile;
+ this.role = role;
+ this.archive = archive;
+ this.user_details = user_details;
+ this.vehicle_profile = vehicle_profile;
+ this.approvalsObject = approvalsObject;
+ this.driver_number = driver_number;
+ }
+
+ public WholeDriverObject() {
+ }
+
+ public String getDriver_number() {
+ return driver_number;
+ }
+
+ public ArchiveObject getArchive() {
+ return archive;
+ }
+
+ public DriverProfile getDriver_profile() {
+ return driver_profile;
+ }
+
+ public String getRole() {
+ return role;
+ }
+
+ public UserObject getUser_details() {
+ return user_details;
+ }
+
+ public VehicleProfile getVehicle_profile() {
+ return vehicle_profile;
+ }
+
+ public ApprovalsObject getApprovalsObject() {
+ return approvalsObject;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/DriverProfile.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/DriverProfile.java
new file mode 100644
index 0000000..17de05a
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/DriverProfile.java
@@ -0,0 +1,33 @@
+package h_mal.appttude.com.driver.Objects.WholeObject;
+
+import h_mal.appttude.com.driver.Objects.DriverProfileObject;
+import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
+import h_mal.appttude.com.driver.Objects.PrivateHireObject;
+
+public class DriverProfile {
+
+ public DriverProfileObject driver_profile;
+ public DriversLicenseObject driver_license;
+ public PrivateHireObject private_hire;
+
+ public DriverProfile(DriverProfileObject driver_profile, DriversLicenseObject driver_license, PrivateHireObject private_hire) {
+ this.driver_profile = driver_profile;
+ this.driver_license = driver_license;
+ this.private_hire = private_hire;
+ }
+
+ public DriverProfile() {
+ }
+
+ public DriverProfileObject getDriver_profile() {
+ return driver_profile;
+ }
+
+ public DriversLicenseObject getDriver_license() {
+ return driver_license;
+ }
+
+ public PrivateHireObject getPrivate_hire() {
+ return private_hire;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/MappedObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/MappedObject.java
new file mode 100644
index 0000000..582abd0
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/MappedObject.java
@@ -0,0 +1,56 @@
+package h_mal.appttude.com.driver.Objects.WholeObject;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import h_mal.appttude.com.driver.Objects.WholeDriverObject;
+
+public class MappedObject implements Parcelable {
+
+ public String userId;
+ public WholeDriverObject wholeDriverObject;
+
+ public MappedObject(String userId, WholeDriverObject wholeDriverObject) {
+ this.userId = userId;
+ this.wholeDriverObject = wholeDriverObject;
+ }
+
+ public MappedObject() {
+ }
+
+ protected MappedObject(Parcel in) {
+ userId = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public MappedObject createFromParcel(Parcel in) {
+ return new MappedObject(in);
+ }
+
+ @Override
+ public MappedObject[] newArray(int size) {
+ return new MappedObject[size];
+ }
+ };
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public WholeDriverObject getWholeDriverObject() {
+ return wholeDriverObject;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(userId);
+ }
+
+
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/VehicleProfile.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/VehicleProfile.java
new file mode 100644
index 0000000..f02023c
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/VehicleProfile.java
@@ -0,0 +1,55 @@
+package h_mal.appttude.com.driver.Objects.WholeObject;
+
+import h_mal.appttude.com.driver.Objects.InsuranceObject;
+import h_mal.appttude.com.driver.Objects.LogbookObject;
+import h_mal.appttude.com.driver.Objects.MotObject;
+import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject;
+import h_mal.appttude.com.driver.Objects.VehicleProfileObject;
+
+public class VehicleProfile {
+
+ public InsuranceObject insurance_details;
+ public LogbookObject log_book;
+ public MotObject mot_details;
+ public VehicleProfileObject vehicle_details;
+ public PrivateHireVehicleObject private_hire_vehicle;
+
+ public VehicleProfile() {
+ }
+
+// public VehicleProfile(InsuranceObject insurance_details, LogbookObject log_book, MotObject mot_details, VehicleProfileObject vehicle_details) {
+// this.insurance_details = insurance_details;
+// this.log_book = log_book;
+// this.mot_details = mot_details;
+// this.vehicle_details = vehicle_details;
+// }
+
+ public VehicleProfile(InsuranceObject insurance_details, LogbookObject log_book, MotObject mot_details, VehicleProfileObject vehicle_details, PrivateHireVehicleObject private_hire_vehicle) {
+ this.insurance_details = insurance_details;
+ this.log_book = log_book;
+ this.mot_details = mot_details;
+ this.vehicle_details = vehicle_details;
+ this.private_hire_vehicle = private_hire_vehicle;
+ }
+
+
+ public PrivateHireVehicleObject getPrivateHireVehicleObject() {
+ return private_hire_vehicle;
+ }
+
+ public InsuranceObject getInsurance_details() {
+ return insurance_details;
+ }
+
+ public LogbookObject getLog_book() {
+ return log_book;
+ }
+
+ public MotObject getMot_details() {
+ return mot_details;
+ }
+
+ public VehicleProfileObject getVehicle_details() {
+ return vehicle_details;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/RegisterActivity.java b/app/src/main/java/h_mal/appttude/com/driver/RegisterActivity.java
deleted file mode 100644
index 545f391..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/RegisterActivity.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.content.Intent;
-import android.support.annotation.NonNull;
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ProgressBar;
-import android.widget.Toast;
-
-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;
-
-public class RegisterActivity extends AppCompatActivity {
-
- private FirebaseAuth auth;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_register);
-
- auth = FirebaseAuth.getInstance();
-
- final EditText email = findViewById(R.id.email_register);
- final EditText passwordTop = findViewById(R.id.password_top);
- final EditText passwordBottom = findViewById(R.id.password_bottom);
- final ProgressBar progressBar = findViewById(R.id.pb);
- Button submit = findViewById(R.id.email_sign_up);
-
- submit.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- String emailText = email.getText().toString().trim();
- String passwordText = passwordTop.getText().toString().trim();
- String passwordTextBottom = passwordBottom.getText().toString().trim();
-
- if (TextUtils.isEmpty(emailText)) {
- Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
- email.setError(getString(R.string.error_field_required));
- return;
- }
-
- if (TextUtils.isEmpty(passwordText)) {
- Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
- passwordTop.setError(getString(R.string.error_field_required));
- return;
- }
-
- if (TextUtils.isEmpty(passwordTextBottom)) {
- Toast.makeText(getApplicationContext(), "Enter password again!", Toast.LENGTH_SHORT).show();
- passwordBottom.setError(getString(R.string.error_field_required));
- return;
- }
-
- if (passwordText.length() < 6) {
- passwordTop.setError(getString(R.string.error_invalid_password));
- return;
- }
-
- progressBar.setVisibility(View.VISIBLE);
- //create user
- auth.createUserWithEmailAndPassword(emailText, passwordText)
- .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener() {
- @Override
- public void onComplete(@NonNull Task task) {
- Toast.makeText(RegisterActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
- progressBar.setVisibility(View.GONE);
- if (!task.isSuccessful()) {
- Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(),
- Toast.LENGTH_SHORT).show();
- } else {
- finish();
- }
- }
- });
-
- }
- });
- }
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ApprovalListAdapter.java b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ApprovalListAdapter.java
new file mode 100644
index 0000000..a3ecdb3
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ApprovalListAdapter.java
@@ -0,0 +1,305 @@
+package h_mal.appttude.com.driver.SuperUser;
+
+import android.app.Activity;
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import h_mal.appttude.com.driver.Archive.ArchiveFragment;
+import h_mal.appttude.com.driver.Driver.DriverLicenseFragment;
+import h_mal.appttude.com.driver.Driver.InsuranceFragment;
+import h_mal.appttude.com.driver.Driver.MotFragment;
+import h_mal.appttude.com.driver.Driver.PrivateHireLicenseFragment;
+import h_mal.appttude.com.driver.Driver.PrivateHireVehicleFragment;
+import h_mal.appttude.com.driver.Driver.VehicleSetupFragment;
+import h_mal.appttude.com.driver.Driver.DriverProfileFragment;
+import h_mal.appttude.com.driver.Driver.logbookFragment;
+import h_mal.appttude.com.driver.Global.SetApprovalDialog;
+import h_mal.appttude.com.driver.Objects.ApprovalsObject;
+import h_mal.appttude.com.driver.Objects.ArchiveObject;
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
+import h_mal.appttude.com.driver.Objects.WholeDriverObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.NO_DATE_PRESENT;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_DETAILS_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.archiveClass;
+
+public class ApprovalListAdapter extends ArrayAdapter {
+
+ private String TAG = "ApprovalListAdapter";
+
+ String [] names = {"Driver Profile","Driver License","Private Hire","Vehicle Profile","Insurance","MOT","Logbook","P/H Vehicle"};
+
+ MappedObject mappedObject;
+ Activity activity;
+ int approvalCode;
+
+ public ApprovalListAdapter(@NonNull Activity activity, @NonNull MappedObject[] objects) {
+ super(activity, 0, objects);
+ this.mappedObject = objects[0];
+ this.activity = activity;
+
+ }
+
+ @NonNull
+ @Override
+ public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ View listItemView = convertView;
+ if (listItemView == null) {
+ listItemView = LayoutInflater.from(activity).inflate(
+ R.layout.approval_list_grid_item, parent, false);
+ }
+
+ approvalCode = getApprovalStatusCode(position);
+
+ TextView textView = listItemView.findViewById(R.id.approval_text);
+ textView.setText(names[position]);
+
+ final ImageView imageView = listItemView.findViewById(R.id.approval_iv);
+ imageView.setImageResource(approvalsClass.setImageResource(approvalCode));
+
+ imageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new SetApprovalDialog(approvalCode,activity,mappedObject.getUserId(),position,imageView);
+ }
+ });
+
+ ImageView archiveImage = listItemView.findViewById(R.id.archive_icon);
+ if (mappedObject.getWholeDriverObject().archive != null){
+ Log.i(TAG, "getView: archive = " + getArchive(position,mappedObject.getWholeDriverObject().getArchive()));
+ archiveImage.setVisibility(getArchive(position,mappedObject.getWholeDriverObject().getArchive()));
+ archiveImage.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String s = null;
+ switch (position){
+ case 1:
+ s = DRIVERS_LICENSE_FIREBASE;
+ break;
+ case 2:
+ s = PRIVATE_HIRE_FIREBASE;
+ break;
+ case 3:
+ s = VEHICLE_DETAILS_FIREBASE;
+ break;
+ case 4:
+ s = INSURANCE_FIREBASE;
+ break;
+ case 5:
+ s = MOT_FIREBASE;
+ break;
+ case 6:
+ s = LOG_BOOK_FIREBASE;
+ break;
+ case 7:
+ s = PRIVATE_HIRE_VEHICLE_LICENSE;
+ break;
+
+ }
+ executeFragment(new ArchiveFragment(),mappedObject.getUserId(),s);
+ }
+ });
+ }
+
+ listItemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getFragment(position);
+ }
+ });
+
+ listItemView.setMinimumHeight(parent.getHeight()/4);
+ listItemView.setPadding((int)convertDpToPixel(9,getContext()),
+ (int)convertDpToPixel(9,getContext()),
+ (int)convertDpToPixel(9,getContext()),
+ (int)convertDpToPixel(9,getContext()));
+
+ return listItemView;
+
+ }
+
+ @Override
+ public int getCount() {
+ return 8;
+ }
+
+ private int getArchive(int i, ArchiveObject archiveObject){
+ Object o = null;
+ int visible;
+
+ switch (i){
+ case 0:
+ break;
+ case 1:
+ o = archiveObject.driver_license;
+ break;
+ case 2:
+ o = archiveObject.private_hire;
+ break;
+ case 3:
+ o = archiveObject.vehicle_details;
+ break;
+ case 4:
+ o = archiveObject.insurance_details;
+ break;
+ case 5:
+ o = archiveObject.mot_details;
+ break;
+ case 6:
+ o = archiveObject.log_book;
+ break;
+ case 7:
+ o = archiveObject.private_hire_vehicle;
+
+ }
+
+ if (o != null){
+ visible = View.VISIBLE;
+ }else{
+ visible = View.GONE;
+ }
+
+ return visible;
+ }
+
+ private void getFragment(int i){
+ Fragment f = null;
+ WholeDriverObject wholeDriverObject = mappedObject.getWholeDriverObject();
+ Object o = null;
+ switch (i) {
+ case 0:
+ f = new DriverProfileFragment();
+ if (wholeDriverObject.driver_profile != null && wholeDriverObject.getDriver_profile().driver_profile != null) {
+ o = wholeDriverObject.getDriver_profile().getDriver_profile();
+ }
+ break;
+ case 1:
+ f = new DriverLicenseFragment();
+ if (wholeDriverObject.driver_profile != null && wholeDriverObject.getDriver_profile().driver_license != null) {
+ o = wholeDriverObject.getDriver_profile().getDriver_license();
+ }
+ break;
+ case 2:
+ f = new PrivateHireLicenseFragment();
+ if (wholeDriverObject.driver_profile != null && wholeDriverObject.getDriver_profile().private_hire != null) {
+ o = wholeDriverObject.getDriver_profile().getPrivate_hire();
+ }
+ break;
+ case 3:
+ f = new VehicleSetupFragment();
+ if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().vehicle_details != null){
+ o = wholeDriverObject.getVehicle_profile().getVehicle_details();
+ }
+ break;
+ case 4:
+ f = new InsuranceFragment();
+ if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().insurance_details != null){
+ o = wholeDriverObject.getVehicle_profile().getInsurance_details();
+ }
+ break;
+ case 5:
+ f = new MotFragment();
+ if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().mot_details != null){
+ o = wholeDriverObject.getVehicle_profile().getMot_details();
+ }
+ break;
+ case 6:
+ f = new logbookFragment();
+ if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().log_book != null){
+ o = wholeDriverObject.getVehicle_profile().getLog_book();
+ }
+ break;
+ case 7:
+ f = new PrivateHireVehicleFragment();
+ if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().private_hire_vehicle != null){
+ o = wholeDriverObject.getVehicle_profile().getPrivateHireVehicleObject();
+ }
+ break;
+ }
+
+ if (o == null){
+ executeFragment(f,mappedObject.getUserId());
+ }else {
+ archiveClass.openDialogArchive(getContext(),o
+ ,mappedObject.getUserId(),f);
+ }
+
+ }
+
+ private int getApprovalStatusCode(int i){
+ int statusCode = NO_DATE_PRESENT;
+
+ if (mappedObject.getWholeDriverObject().approvalsObject != null){
+ ApprovalsObject approvalsObject = mappedObject.getWholeDriverObject().getApprovalsObject();
+
+ switch (i) {
+ case 0:
+ if (approvalsObject.driver_details_approval != 0) {
+ statusCode = approvalsObject.getDriver_details_approval();
+ }
+ break;
+ case 1:
+ if (approvalsObject.driver_license_approval != 0) {
+ statusCode = approvalsObject.getDriver_license_approval();
+ }
+ break;
+ case 2:
+ if (approvalsObject.private_hire_approval != 0) {
+ statusCode = approvalsObject.getPrivate_hire_approval();
+ }
+ break;
+ case 3:
+ if (approvalsObject.vehicle_details_approval != 0) {
+ statusCode = approvalsObject.getVehicle_details_approval();
+ }
+ break;
+ case 4:
+ if (approvalsObject.insurance_details_approval != 0) {
+ statusCode = approvalsObject.getInsurance_details_approval();
+ }
+ break;
+ case 5:
+ if (approvalsObject.mot_details_approval != 0) {
+ statusCode = approvalsObject.getMot_details_approval();
+ }
+ break;
+ case 6:
+ if (approvalsObject.log_book_approval != 0) {
+ statusCode = approvalsObject.getLog_book_approval();
+ }
+ break;
+ case 7:
+ if (approvalsObject.private_hire_vehicle_approval != 0) {
+ statusCode = approvalsObject.getPh_car_approval();
+ }
+ break;
+ }
+ }
+
+ return statusCode;
+ }
+
+ public static float convertDpToPixel(float dp, Context context){
+ return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
+ }
+
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ListViewSuperAdapter.java b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ListViewSuperAdapter.java
new file mode 100644
index 0000000..e1255d6
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ListViewSuperAdapter.java
@@ -0,0 +1,182 @@
+package h_mal.appttude.com.driver.SuperUser;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DatabaseReference;
+import com.squareup.picasso.Picasso;
+import com.squareup.picasso.Target;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.util.List;
+
+import h_mal.appttude.com.driver.Objects.UserObject;
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_NUMBER;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.imageViewClass;
+import static h_mal.appttude.com.driver.MainActivity.loadImage;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+
+public class ListViewSuperAdapter extends ArrayAdapter {
+
+ public ListViewSuperAdapter(@NonNull Context context, @NonNull List objects) {
+ super(context, 0, objects);
+ }
+
+ @NonNull
+ @Override
+ public View getView(int i, @Nullable View convertView, @NonNull ViewGroup parent) {
+ View listItemView = convertView;
+ if (listItemView == null) {
+ listItemView = LayoutInflater.from(getContext()).inflate(
+ R.layout.list_item_layout, parent, false);
+
+
+ }
+
+ Log.i("getviewposition", "getView: pos = " + i);
+
+ final ImageView profilePicImage = listItemView.findViewById(R.id.driverPic);
+ final ProgressBar progressBar = listItemView.findViewById(R.id.pb_su_list);
+ TextView userNameTextView = listItemView.findViewById(R.id.username_text);
+ TextView userEmailTextView = listItemView.findViewById(R.id.emailaddress_text);
+ ImageView profileApprovalImage = listItemView.findViewById(R.id.approval_iv);
+ final TextView driverNo = listItemView.findViewById(R.id.driver_no);
+ final MappedObject mappedObject = getItem(i);
+
+ final UserObject object = mappedObject.getWholeDriverObject().getUser_details();
+
+ if (object.profilePicString != null){
+ Picasso.get()
+ .load(object.getProfilePicString())
+ .resize(128,128)
+ .placeholder(R.drawable.choice_img_round)
+ .into(new Target() {
+ @Override
+ public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
+ progressBar.setVisibility(View.GONE);
+ profilePicImage.setImageBitmap(bitmap);
+
+ }
+
+ @Override
+ public void onBitmapFailed(Exception e, Drawable errorDrawable) {
+ progressBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onPrepareLoad(Drawable placeHolderDrawable) {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+ });
+
+ }else {
+ profilePicImage.setImageResource(R.drawable.choice_img_round);
+ }
+
+ userNameTextView.setText(object.getProfileName());
+ userEmailTextView.setText(object.getProfileEmail());
+ if (mappedObject.getWholeDriverObject().driver_number == null){
+ driverNo.setText("0");
+ }else {
+ String s = String.valueOf(mappedObject.getWholeDriverObject().getDriver_number());
+ driverNo.setText(s);
+ }
+
+
+ driverNo.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+ final EditText input = new EditText(getContext());
+ LinearLayout layout = new LinearLayout(getContext());
+ layout.setOrientation(LinearLayout.VERTICAL);
+ layout.setPadding(28,0,56,0);
+ input.setText(driverNo.getText().toString());
+ input.setSelectAllOnFocus(true);
+ layout.addView(input);
+ builder.setTitle("Change Driver Number")
+ .setView(layout)
+ .setPositiveButton("Submit", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(final DialogInterface dialog, int which) {
+ DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(mappedObject.getUserId())
+ .child(DRIVER_NUMBER);
+ Log.i("Dialog Driver no", "onClick: " + reference.toString());
+
+ reference.setValue(input.getText().toString()).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Toast.makeText(getContext(), "Driver Number Changed", Toast.LENGTH_SHORT).show();
+ dialog.dismiss();
+ notifyDataSetChanged();
+ Log.i("Dialog Driver no", "onComplete: " + task.getResult());
+ }else {
+ Log.e("Dialog Driver no", "onComplete: ", task.getException());
+ }
+
+ }
+ });
+ }
+ }
+ ).create()
+ .show();
+ }
+ });
+
+ profileApprovalImage.setImageResource(
+ approvalsClass.getOverApprovalStatusCode(mappedObject.getWholeDriverObject()));
+
+
+ listItemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Bundle bundle = new Bundle();
+ bundle.putParcelable("mapped",mappedObject);
+
+ executeFragment(new UserMainFragment(),bundle);
+ }
+ });
+
+ return listItemView;
+ }
+
+ private boolean hasImage(@NonNull ImageView view) {
+ Drawable drawable = view.getDrawable();
+ boolean hasImage = (drawable != null);
+
+ if (hasImage && (drawable instanceof BitmapDrawable)) {
+ hasImage = ((BitmapDrawable)drawable).getBitmap() != null;
+ }
+
+ return hasImage;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/UserMainFragment.java b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/UserMainFragment.java
new file mode 100644
index 0000000..826cd81
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/UserMainFragment.java
@@ -0,0 +1,49 @@
+package h_mal.appttude.com.driver.SuperUser;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.GridView;
+import android.widget.ListView;
+
+import h_mal.appttude.com.driver.Archive.ArchiveFragment;
+import h_mal.appttude.com.driver.Global.ExecuteFragment;
+import h_mal.appttude.com.driver.MainActivity;
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
+import h_mal.appttude.com.driver.R;
+
+public class UserMainFragment extends Fragment {
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_user_main, container, false);
+
+ Log.i("UserMain", "onCreateView: height = " + view.getHeight());
+
+ MappedObject mappedObject = getArguments().getParcelable("mapped");
+
+ getActivity().setTitle(mappedObject.getWholeDriverObject().getUser_details().getProfileName());
+
+// ListView listView = view.findViewById(R.id.approvals_list);
+ GridView listView = view.findViewById(R.id.approvals_list);
+ listView.setAdapter(new ApprovalListAdapter(getActivity(), new MappedObject[]{mappedObject}));
+
+ return view;
+ }
+
+
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/homeSuperUserFragment.java b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/homeSuperUserFragment.java
new file mode 100644
index 0000000..61556b6
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/homeSuperUserFragment.java
@@ -0,0 +1,186 @@
+package h_mal.appttude.com.driver.SuperUser;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ListView;
+
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.ValueEventListener;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
+import h_mal.appttude.com.driver.Objects.WholeDriverObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
+import static h_mal.appttude.com.driver.MainActivity.viewController;
+
+
+public class homeSuperUserFragment extends Fragment {
+
+ DatabaseReference users;
+ ListViewSuperAdapter listViewSuperAdapter;
+
+ List mappedObjectList;
+ private SharedPreferences sharedPreferences;
+ private int sortOrder;
+ private boolean sortDesc;
+ private static final String SORT = "SORT";
+ private static final String REVERSED = "REVERSED";
+ private static final String TAG = "homeSuperUserFragment";
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setHasOptionsMenu(true);
+
+ users = mDatabase.child(USER_FIREBASE);
+ mappedObjectList = new ArrayList<>();
+
+ viewController.progress(View.VISIBLE);
+ users.addValueEventListener(valueEventListener);
+
+ sharedPreferences = getActivity().getSharedPreferences("PREFS", 0);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_home_super_user, container, false);
+
+ final ListView list = view.findViewById(R.id.list_view_super);
+
+ listViewSuperAdapter = new ListViewSuperAdapter(getContext(),mappedObjectList);
+ list.setAdapter(listViewSuperAdapter);
+
+ return view;
+ }
+
+ ValueEventListener valueEventListener = new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot snapshot) {
+ mappedObjectList.clear();
+ Log.i("Count " ,""+snapshot.getChildrenCount());
+ for (DataSnapshot postSnapshot: snapshot.getChildren()) {
+ if (postSnapshot.child("role").getValue().toString().equals("driver")){
+ printObjectAsJson("object",postSnapshot.toString());
+ mappedObjectList.add(new MappedObject(postSnapshot.getKey(),postSnapshot.getValue(WholeDriverObject.class)));
+ }
+ }
+ sortDate(sortOrder,sortDesc);
+ viewController.progress(View.GONE);
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+ viewController.progress(View.GONE);
+ }
+
+
+ };
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ inflater.inflate(R.menu.menu_calls_fragment, menu);
+ super.onCreateOptionsMenu(menu, inflater);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.archive){
+ final String[] grpname = {"Driver Name","Driver Number","Approval"};
+ sortOrder = sharedPreferences.getInt(SORT,0);
+ int checkedItem = sortOrder;
+ final int[] compareInt = {0};
+
+ final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+ builder.setTitle("Sort by:")
+ .setSingleChoiceItems(grpname, checkedItem, new DialogInterface
+ .OnClickListener() {
+ public void onClick(DialogInterface dialog, int item) {
+ switch (item) {
+ case 0:
+ compareInt[0] = 0;
+ return;
+ case 1:
+ compareInt[0] = 1;
+ return;
+ case 2:
+ compareInt[0] = 2;
+ }
+ }
+ }).setPositiveButton("Ascending", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ sortDate(compareInt[0],false);
+ dialog.dismiss();
+ }
+ }).setNegativeButton("Descending", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ sortDate(compareInt[0],true);
+ dialog.dismiss();
+ }
+ })
+ .create().show();
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void sortDate(final int compareInt, boolean reversed){
+ Log.i(TAG, "sortDate: " + compareInt + " - " + reversed);
+ Comparator comparator = new Comparator() {
+ @Override
+ public int compare(MappedObject o1, MappedObject o2) {
+ switch (compareInt){
+ case 0:
+ return o1.getWholeDriverObject().getUser_details().getProfileName().compareTo(
+ o2.getWholeDriverObject().getUser_details().getProfileName());
+ case 1:
+ return o1.getWholeDriverObject().getDriver_number()
+ .compareTo(o2.getWholeDriverObject().getDriver_number());
+ case 2:
+ return approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
+ approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject);
+ default:
+ return approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
+ approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject);
+ }
+ }
+ };
+
+ sharedPreferences.edit().putInt(SORT,compareInt).apply();
+ sharedPreferences.edit().putBoolean(REVERSED,reversed).apply();
+
+ if (reversed){
+ Collections.sort(mappedObjectList,comparator.reversed());
+ }else {
+ Collections.sort(mappedObjectList,comparator);
+ }
+
+ listViewSuperAdapter.notifyDataSetChanged();
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/LoginActivity.java b/app/src/main/java/h_mal/appttude/com/driver/User/LoginActivity.java
similarity index 78%
rename from app/src/main/java/h_mal/appttude/com/driver/LoginActivity.java
rename to app/src/main/java/h_mal/appttude/com/driver/User/LoginActivity.java
index 75481c1..734e245 100644
--- a/app/src/main/java/h_mal/appttude/com/driver/LoginActivity.java
+++ b/app/src/main/java/h_mal/appttude/com/driver/User/LoginActivity.java
@@ -1,31 +1,19 @@
-package h_mal.appttude.com.driver;
+package h_mal.appttude.com.driver.User;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.TargetApi;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
-import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
-import android.app.LoaderManager.LoaderCallbacks;
-
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
-import android.provider.ContactsContract;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
-import android.widget.ArrayAdapter;
-import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@@ -37,22 +25,17 @@ import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
-import java.util.ArrayList;
-import java.util.List;
-
-import static android.Manifest.permission.READ_CONTACTS;
+import h_mal.appttude.com.driver.MainActivity;
+import h_mal.appttude.com.driver.R;
/**
* A login screen that offers login via email/password.
*/
public class LoginActivity extends AppCompatActivity{
+ private String TAG = "LoginActivity";
private FirebaseAuth auth;
- private static final String[] DUMMY_CREDENTIALS = new String[]{
- "driver@example.com:hello", "bar@example.com:world"
- };
-
// UI references.
private EditText mEmailView;
private EditText mPasswordView;
@@ -65,6 +48,7 @@ public class LoginActivity extends AppCompatActivity{
setContentView(R.layout.activity_login);
auth = FirebaseAuth.getInstance();
+
// Set up the login form.
mEmailView = findViewById(R.id.email);
@@ -92,7 +76,7 @@ public class LoginActivity extends AppCompatActivity{
mProgressView = findViewById(R.id.login_progress);
mLoginView = findViewById(R.id.email_login_form);
- TextView register = findViewById(R.id.register);
+ TextView register = findViewById(R.id.register_button);
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -100,11 +84,17 @@ public class LoginActivity extends AppCompatActivity{
startActivity(intent);
}
});
+
+ TextView forgotPw = findViewById(R.id.forgot);
+ forgotPw.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(getApplication(),forgotPasswordActivity.class);
+ startActivity(intent);
+ }
+ });
}
-
-
-
/**
* Attempts to sign in or register the account specified by the login form.
* If there are form errors (invalid email, missing fields, etc.), the
@@ -159,23 +149,17 @@ public class LoginActivity extends AppCompatActivity{
@Override
public void onComplete(@NonNull Task task) {
showProgress(false);
-
- Intent intent = new Intent(LoginActivity.this,MainActivity.class);
- startActivity(intent);
- finish();
+ if (task.isSuccessful()){
+ Intent intent = new Intent(LoginActivity.this,MainActivity.class);
+ startActivity(intent);
+ finish();
+ }else {
+ Toast.makeText(LoginActivity.this, getString(R.string.login_failed), Toast.LENGTH_SHORT).show();
+ }
}
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- Toast.makeText(LoginActivity.this, getString(R.string.login_failed), Toast.LENGTH_SHORT).show();
- showProgress(false);
- }
- });
-
-
-
+ }
+ );
}
}
@@ -197,7 +181,7 @@ public class LoginActivity extends AppCompatActivity{
// On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
// for very easy animations. If available, use these APIs to fade-in
// the progress spinner.
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
+
int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
@@ -217,12 +201,6 @@ public class LoginActivity extends AppCompatActivity{
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
}
});
- } else {
- // The ViewPropertyAnimator APIs are not available, so simply show
- // and hide the relevant UI components.
- mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
- mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
- }
}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/User/RegisterActivity.java b/app/src/main/java/h_mal/appttude/com/driver/User/RegisterActivity.java
new file mode 100644
index 0000000..5cabe1e
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/User/RegisterActivity.java
@@ -0,0 +1,161 @@
+package h_mal.appttude.com.driver.User;
+
+import android.content.Intent;
+import android.support.annotation.NonNull;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ProgressBar;
+import android.widget.Toast;
+
+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.auth.UserProfileChangeRequest;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+
+import h_mal.appttude.com.driver.MainActivity;
+import h_mal.appttude.com.driver.Objects.UserObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+
+public class RegisterActivity extends AppCompatActivity {
+
+ private FirebaseAuth auth;
+ private EditText name;
+ private EditText email;
+ private EditText passwordTop;
+ private EditText passwordBottom;
+ private ProgressBar progressBar;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_register);
+
+ auth = FirebaseAuth.getInstance();
+
+ name = findViewById(R.id.name_register);
+ email = findViewById(R.id.email_register);
+ passwordTop = findViewById(R.id.password_top);
+ passwordBottom = findViewById(R.id.password_bottom);
+ progressBar = findViewById(R.id.pb);
+ Button submit = findViewById(R.id.email_sign_up);
+
+ submit.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ final String nameString = name.getText().toString().trim();
+ String emailText = email.getText().toString().trim();
+ String passwordText = passwordTop.getText().toString().trim();
+ String passwordTextBottom = passwordBottom.getText().toString().trim();
+
+ boolean cancel = false;
+ View focusView = null;
+
+ if (TextUtils.isEmpty(nameString)) {
+ name.setError(getString(R.string.error_field_required));
+ focusView = name;
+ cancel = true;
+ }
+
+ if (TextUtils.isEmpty(emailText)) {
+ email.setError(getString(R.string.error_field_required));
+ focusView = email;
+ cancel = true;
+ }
+
+ if (TextUtils.isEmpty(passwordText)) {
+ passwordTop.setError(getString(R.string.error_field_required));
+ focusView = passwordTop;
+ cancel = true;
+ }
+
+ if (TextUtils.isEmpty(passwordTextBottom)) {
+ passwordBottom.setError(getString(R.string.error_field_required));
+ focusView = passwordBottom;
+ cancel = true;
+ }
+
+ if (!TextUtils.isEmpty(passwordText) && !isPasswordValid(passwordText)) {
+ passwordTop.setError(getString(R.string.error_invalid_password));
+ focusView = passwordTop;
+ cancel = true;
+ }
+
+ if (!passwordText.equals(passwordTextBottom)){
+ passwordBottom.setError(getString(R.string.no_match_password));
+ focusView = passwordBottom;
+ cancel = true;
+ }
+
+ if (cancel) {
+ // There was an error; don't attempt login and focus the first
+ // form field with an error.
+ focusView.requestFocus();
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ //create user
+ auth.createUserWithEmailAndPassword(emailText, passwordText)
+ .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ progressBar.setVisibility(View.GONE);
+ if (!task.isSuccessful()) {
+ Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(),
+ Toast.LENGTH_SHORT).show();
+ } else {
+
+ UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
+
+ if (!TextUtils.isEmpty(nameString)){
+ profileUpdatesBuilder.setDisplayName(nameString);
+ }
+
+ UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
+
+ auth.getCurrentUser().updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()){
+ Log.i("RegisterActivity", "onComplete: " + task.isSuccessful());
+
+ DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
+
+ mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child("role")
+ .setValue("driver");
+ mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child("user_details")
+ .setValue(new UserObject(auth.getCurrentUser().getDisplayName(),auth.getCurrentUser().getEmail(),null));
+
+ Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ finish();
+ }
+
+ }
+ });
+
+
+ }
+ }
+ });
+ }
+
+ }
+ });
+ }
+
+ private boolean isPasswordValid(String password) {
+ //TODO: Replace this with your own logic
+ return password.length() > 6;
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/User/forgotPasswordActivity.java b/app/src/main/java/h_mal/appttude/com/driver/User/forgotPasswordActivity.java
new file mode 100644
index 0000000..5b63689
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/User/forgotPasswordActivity.java
@@ -0,0 +1,59 @@
+package h_mal.appttude.com.driver.User;
+
+import android.support.annotation.NonNull;
+import android.support.v4.app.NavUtils;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.auth.FirebaseAuth;
+
+import h_mal.appttude.com.driver.R;
+
+public class forgotPasswordActivity extends AppCompatActivity {
+
+ String TAG = "forgotPasswordActivity";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_forgot_password);
+
+ final EditText editText = findViewById(R.id.reset_pw);
+
+ final Button resetPw = findViewById(R.id.reset_pw_sign_up);
+ resetPw.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ resetPassword(editText.getText().toString().trim());
+ }
+ });
+
+ }
+
+
+ private void resetPassword(String emailAddress){
+ FirebaseAuth auth = FirebaseAuth.getInstance();
+
+ auth.sendPasswordResetEmail(emailAddress)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ Log.d(TAG, "Email sent.");
+
+ NavUtils.navigateUpFromSameTask(forgotPasswordActivity.this);
+ finish();
+ }else {
+ Toast.makeText(forgotPasswordActivity.this, "Could not reset Password", Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/User/profileFragment.java b/app/src/main/java/h_mal/appttude/com/driver/User/profileFragment.java
new file mode 100644
index 0000000..a7d4374
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/User/profileFragment.java
@@ -0,0 +1,251 @@
+package h_mal.appttude.com.driver.User;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.text.InputType;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.auth.AuthCredential;
+import com.google.firebase.auth.EmailAuthProvider;
+import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.auth.FirebaseUser;
+import com.google.firebase.auth.UserProfileChangeRequest;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.storage.FirebaseStorage;
+import com.google.firebase.storage.StorageReference;
+import com.squareup.picasso.Picasso;
+
+import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
+import h_mal.appttude.com.driver.Global.ImageSelectorResults;
+import h_mal.appttude.com.driver.Global.ViewController;
+import h_mal.appttude.com.driver.Objects.UserObject;
+import h_mal.appttude.com.driver.R;
+
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_DETAILS_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
+import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
+import static h_mal.appttude.com.driver.MainActivity.auth;
+import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
+import static h_mal.appttude.com.driver.MainActivity.mDatabase;
+
+public class profileFragment extends Fragment {
+
+ private String TAG = this.getClass().getSimpleName();
+
+ private TextView email;
+ private TextView name;
+ private TextView changePw;
+
+ private FirebaseUser user;
+ private DatabaseReference databaseReference;
+
+ private static final String EMAIL_CONSTANT = "Email Address";
+ private static final String PW_CONSTANT = "Password";
+
+ ViewController viewController;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ viewController = new ViewController(getActivity());
+
+ user = auth.getCurrentUser();
+ databaseReference = mDatabase.child(USER_FIREBASE).child(user.getUid())
+ .child(DRIVER_FIREBASE).child(DRIVER_DETAILS_FIREBASE)
+ .child("driverPic");
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.fragment_profile, container, false);
+
+ email = view.findViewById(R.id.change_email);
+ name = view.findViewById(R.id.change_profile_name);
+ changePw = view.findViewById(R.id.change_pw);
+
+ Button button = view.findViewById(R.id.submit_profile);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ fragmentManager.popBackStack();
+ }
+ });
+
+ name.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
+ dialog.setTitle("Update Username");
+
+ final EditText titleBox = new EditText(getContext());
+ titleBox.setText(user.getDisplayName());
+ dialog.setView(titleBox);
+ dialog.setPositiveButton("Update", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ updateProfile(titleBox.getText().toString().trim());
+ }
+ });
+ dialog.show();
+
+ }
+ });
+
+ email.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog(EMAIL_CONSTANT);
+ }
+ });
+
+ changePw.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog(PW_CONSTANT);
+ }
+ });
+
+ return view;
+ }
+
+ private void updateProfile(String profileName){
+ UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
+
+ if (!TextUtils.isEmpty(profileName)){
+ profileUpdatesBuilder.setDisplayName(profileName);
+ }
+
+ UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
+
+ user.updateProfile(profileUpdates)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ Log.d(TAG, "User profile updated.");
+ viewController.reloadDrawer();
+ }
+ }
+ })
+ .addOnFailureListener(new OnFailureListener() {
+ @Override
+ public void onFailure(@NonNull Exception e) {
+ Toast.makeText(getContext(), "Update Failed", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+
+ }
+
+ private void changeCredentials(String email, String password, final String changeText, final String selector){
+ // Get auth credentials from the user for re-authentication
+ AuthCredential credential = EmailAuthProvider
+ .getCredential(email, password); // Current Login Credentials \\
+ // Prompt the user to re-provide their sign-in credentials
+ user.reauthenticate(credential)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ Log.d(TAG, "User re-authenticated.");
+
+ user = FirebaseAuth.getInstance().getCurrentUser();
+ if (selector.equals(EMAIL_CONSTANT)){
+ user.updateEmail(changeText)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ Log.d(TAG, "User email address updated.");
+ Toast.makeText(getContext(), "Update Successful", Toast.LENGTH_SHORT).show();
+ viewController.reloadDrawer();
+ }
+ }
+ });
+ }
+ if (selector.equals(PW_CONSTANT)){
+ user.updatePassword(changeText)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ Log.d(TAG, "User email address updated.");
+ Toast.makeText(getContext(), "Update Successful", Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+ }
+
+
+
+ }
+ });
+ }
+
+ private void showDialog(final String update){
+ //Make new Dialog
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
+ dialog.setTitle("Update " + update);
+
+ LinearLayout layout = new LinearLayout(getContext());
+ layout.setOrientation(LinearLayout.VERTICAL);
+ layout.setPadding(28,0,56,0);
+
+ final EditText box1 = new EditText(getContext());
+ box1.setHint("Current Email Address");
+ box1.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
+ layout.addView(box1); // Notice this is an add method
+
+ final EditText box2 = new EditText(getContext());
+ box2.setHint("Current Password");
+ box2.setInputType(InputType.TYPE_CLASS_TEXT |
+ InputType.TYPE_TEXT_VARIATION_PASSWORD);
+ layout.addView(box2); // Another add method
+
+ final EditText box3 = new EditText(getContext());
+ if (update.equals(PW_CONSTANT)){
+ box3.setInputType(InputType.TYPE_CLASS_TEXT |
+ InputType.TYPE_TEXT_VARIATION_PASSWORD);
+ }else {
+ box3.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
+ }
+ box3.setHint("New " + update);
+ layout.addView(box3); // Another add method
+
+ dialog.setView(layout);
+ dialog.setPositiveButton("Update", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ String email = box1.getText().toString().trim();
+ String password = box2.getText().toString().trim();
+ String textThree = box3.getText().toString().trim();
+
+ changeCredentials(email,password,textThree,update);
+ }
+ });
+ dialog.show();
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/VehicleSetupFragment.java b/app/src/main/java/h_mal/appttude/com/driver/VehicleSetupFragment.java
deleted file mode 100644
index c814f03..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/VehicleSetupFragment.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.google.android.gms.tasks.OnCompleteListener;
-import com.google.android.gms.tasks.Task;
-
-import h_mal.appttude.com.driver.Objects.PrivateHireObject;
-
-import static h_mal.appttude.com.driver.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
-import static h_mal.appttude.com.driver.FirebaseClass.DRIVER_FIREBASE;
-import static h_mal.appttude.com.driver.FirebaseClass.PRIVATE_HIRE_FIREBASE;
-import static h_mal.appttude.com.driver.FirebaseClass.USER_FIREBASE;
-import static h_mal.appttude.com.driver.MainActivity.auth;
-import static h_mal.appttude.com.driver.MainActivity.executeFragment;
-import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
-import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
-import static h_mal.appttude.com.driver.MainActivity.mDatabase;
-
-
-public class VehicleSetupFragment extends Fragment {
-
- private String TAG = this.getClass().getSimpleName();
-
- EditText reg;
- EditText make;
- EditText model;
- EditText color;
- EditText keeperName;
- EditText address;
- EditText postcode;
- EditText startDate;
- CheckBox seized;
- TextView mot;
- TextView retrievedmot;
- TextView insurance;
- TextView retrievedIns;
- TextView logbook;
- TextView logbook_retrieved;
- Button Submit;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_vehicle_setup, container, false);
-
- reg = view.findViewById(R.id.reg);
- make = view.findViewById(R.id.make);
- model = view.findViewById(R.id.model);
- color = view.findViewById(R.id.colour);
- keeperName = view.findViewById(R.id.keeper_name);
- address = view.findViewById(R.id.address);
- postcode = view.findViewById(R.id.postcode);
- startDate = view.findViewById(R.id.start_date);
- seized = view.findViewById(R.id.seized);
- mot = view.findViewById(R.id.mot);
- retrievedmot = view.findViewById(R.id.retrievedmot);
- insurance = view.findViewById(R.id.insurance);
- retrievedIns = view.findViewById(R.id.insurance_retrieved);
- logbook = view.findViewById(R.id.log_book);
- logbook_retrieved = view.findViewById(R.id.log_book_retrieved);
- Submit = view.findViewById(R.id.submit_vehicle);
-
- initiateViewsFromFb();
-
- mot.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new MotFragment());
- }
- });
-
- insurance.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new InsuranceFragment());
- }
- });
-
- logbook.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new logbookFragment());
- }
- });
-
- Submit.setOnClickListener(submitOnClickListener);
-
- return view;
- }
-
- private void initiateViewsFromFb() {
- //todo: retrieve object and set data in fields
- }
-
- View.OnClickListener submitOnClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //TODO: get strings from views
- String regString = reg.getText().toString().trim();
- String makeString = make.getText().toString().trim();
- String modelString = model.getText().toString().trim();
- String colourString = color.getText().toString().trim();
- String keeperNameStrin = keeperName.getText().toString().trim();
- String addressString = address.getText().toString().trim();
- String postcodeString = postcode.getText().toString().trim();
- String driverForename = startDate.getText().toString().trim();
-
- //TODO: validate the strings
-// if ( !TextUtils.isEmpty(driverForename) &&
-// !TextUtils.isEmpty(AddressString) &&
-// !TextUtils.isEmpty(postCodeString) &&
-// !TextUtils.isEmpty(dobString) &&
-// !TextUtils.isEmpty(niString) &&
-// !TextUtils.isEmpty(dateFirstString)){
-
-// Log.i(TAG, "onClick: new Image uploaded");
-// new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
-// @Override
-// public void processFinish(Uri output) {
-// Log.i(TAG, "processFinish: ");
-// if (output != null){
-// picUri = output;
-// writeDriverToDb();
-// fragmentManager.popBackStack();
-// }
-//
-// }
-// }).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
-// Log.i(TAG, "onClick: pushing with same image");
-// writeDriverToDb();
-
- //todo: set error if invalid
-// }else {
-// if (TextUtils.isEmpty(driverForename)){
-// forenames.setError("Field required");
-// }
-// if (TextUtils.isEmpty(AddressString)){
-// address.setError("Field required");
-// }
-// if (TextUtils.isEmpty(postCodeString)){
-// postcode.setError("Field required");
-// }
-// if (TextUtils.isEmpty(dobString)){
-// dob.setError("Field required");
-// }
-// if (TextUtils.isEmpty(niString)){
-// ni.setError("Field required");
-// }
-// if (TextUtils.isEmpty(dateFirstString)){
-// dateFirst.setError("Field required");
-// }
-// }
-
- }
-
- };
-
- private void publishObject(){
- //TODO: publish vehicle object
-// PrivateHireObject privateHireObject = new PrivateHireObject(picUri.toString(),Ph_numberString,Ph_exprString);
-//
-// mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE)
-// .setValue(privateHireObject).addOnCompleteListener(new OnCompleteListener() {
-// @Override
-// public void onComplete(@NonNull Task task) {
-//
-// Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
-// }
-// });
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/logbookFragment.java b/app/src/main/java/h_mal/appttude/com/driver/logbookFragment.java
deleted file mode 100644
index 9b17243..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/logbookFragment.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.content.Context;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-
-public class logbookFragment extends Fragment {
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_logbook, container, false);
-
-
-
- return view;
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/profileFragment.java b/app/src/main/java/h_mal/appttude/com/driver/profileFragment.java
deleted file mode 100644
index 943cb15..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/profileFragment.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.design.widget.NavigationView;
-import android.support.v4.app.Fragment;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.google.android.gms.tasks.Continuation;
-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.firebase.auth.FirebaseAuth;
-import com.google.firebase.auth.FirebaseUser;
-import com.google.firebase.auth.UserProfileChangeRequest;
-import com.google.firebase.storage.FirebaseStorage;
-import com.google.firebase.storage.OnProgressListener;
-import com.google.firebase.storage.StorageReference;
-import com.google.firebase.storage.UploadTask;
-import com.squareup.picasso.Picasso;
-
-import java.io.IOException;
-import java.util.UUID;
-
-import static android.app.Activity.RESULT_OK;
-import static h_mal.appttude.com.driver.MainActivity.auth;
-import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
-import static h_mal.appttude.com.driver.MainActivity.setupDrawer;
-
-public class profileFragment extends Fragment {
-
- private String TAG = this.getClass().getSimpleName();
- private final int PICK_IMAGE_REQUEST = 70;
-
- private ImageView imageView;
- private EditText email;
- private EditText name;
-
- FirebaseStorage storage;
- StorageReference storageReference;
-
- private FirebaseUser user;
-
- private Uri filePath;
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- user = auth.getCurrentUser();
- storage = FirebaseStorage.getInstance();
- storageReference = storage.getReference();
-
- setRetainInstance(true);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_profile, container, false);
-
- imageView = view.findViewById(R.id.profile_pic);
- email = view.findViewById(R.id.profile_email);
- name = view.findViewById(R.id.profile_name);
-
- TextView upload = view.findViewById(R.id.uploadprofilepic);
-
- upload.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- chooseImage();
- }
- });
-
- retrieveProfile();
-
- Button button = view.findViewById(R.id.submit_profile);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- updateProfile();
- }
- });
-
- return view;
- }
-
- public void retrieveProfile(){
- email.setText(user.getEmail());
- if (user.getDisplayName() != null){
- name.setText(user.getDisplayName());
- }
-
- if(imageView != null){
- Picasso.get()
- .load(user.getPhotoUrl())
- .placeholder(R.mipmap.ic_launcher_round)
- .into(imageView);
- }
-
- }
-
- private void updateProfile(){
- UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
-
- String profileName = name.getText().toString().trim();
-
-
- if (!TextUtils.isEmpty(profileName)){
- profileUpdatesBuilder.setDisplayName(profileName);
- }
- if (filePath != null ||
- imageView.getDrawable().getConstantState() != getResources().getDrawable( R.mipmap.ic_launcher_round).getConstantState()){
- profileUpdatesBuilder.setPhotoUri(filePath);
- }
-
- UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
-
- user.updateProfile(profileUpdates)
- .addOnCompleteListener(new OnCompleteListener() {
- @Override
- public void onComplete(@NonNull Task task) {
- if (task.isSuccessful()) {
- Log.d(TAG, "User profile updated.");
- setupDrawer();
- fragmentManager.popBackStack();
- }
- }
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- Toast.makeText(getContext(), "Update Failed", Toast.LENGTH_SHORT).show();
- }
- });
- }
-
- private void uploadImage() {
-
- if(filePath != null)
- {
- final ProgressDialog progressDialog = new ProgressDialog(getContext());
- progressDialog.setTitle("Uploading...");
- progressDialog.show();
-
- final StorageReference ref = storageReference.child("images/"+ user.getUid() + "/profile_pic");
- UploadTask uploadTask = ref.putFile(filePath);
-
- uploadTask.addOnProgressListener(new OnProgressListener() {
- @Override
- public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
- double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
- .getTotalByteCount());
- progressDialog.setMessage("Uploaded "+(int)progress+"%");
- }
- }).continueWithTask(new Continuation>() {
- @Override
- public Task then(@NonNull Task task) throws Exception {
- if (!task.isSuccessful()) {
- throw task.getException();
- }
-
- // Continue with the task to get the download URL
- return ref.getDownloadUrl();
- }
- }).addOnCompleteListener(new OnCompleteListener() {
- @Override
- public void onComplete(@NonNull Task task) {
- if (task.isSuccessful()) {
- filePath = task.getResult();
- progressDialog.dismiss();
- Toast.makeText(getContext(), "Uploaded Successfully", Toast.LENGTH_SHORT).show();
- Log.i(TAG, "onComplete: uploaded Successful uri: " + task.getResult());
- } else {
- progressDialog.dismiss();
- Toast.makeText(getContext(), "Failed to upload", Toast.LENGTH_SHORT).show();
- Log.i(TAG, "onComplete: failed to get url");
- }
- }
- });
-
-// uploadTask.addOnSuccessListener(new OnSuccessListener() {
-// @Override
-// public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
-//
-// }
-// })
-// .addOnFailureListener(new OnFailureListener() {
-// @Override
-// public void onFailure(@NonNull Exception e) {
-//
-// }
-// })
-// .addOnProgressListener(new OnProgressListener() {
-// @Override
-// public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
-// double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
-// .getTotalByteCount());
-// progressDialog.setMessage("Uploaded "+(int)progress+"%");
-// }
-// });
-
-
- }
- }
-
- private void chooseImage() {
- Intent intent = new Intent();
- intent.setType("image/*");
- intent.setAction(Intent.ACTION_GET_CONTENT);
- startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
- && data != null && data.getData() != null )
- {
- filePath = data.getData();
- Bitmap bitmap = null;
- try {
- bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
- imageView.setImageBitmap(bitmap);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally {
- if (bitmap != null){
- uploadImage();
- }
- }
- }
- }
-
-}
diff --git a/app/src/main/res/drawable/approved.png b/app/src/main/res/drawable/approved.png
new file mode 100644
index 0000000..ca646f4
Binary files /dev/null and b/app/src/main/res/drawable/approved.png differ
diff --git a/app/src/main/res/drawable/choice_img.png b/app/src/main/res/drawable/choice_img.png
new file mode 100644
index 0000000..9d82d49
Binary files /dev/null and b/app/src/main/res/drawable/choice_img.png differ
diff --git a/app/src/main/res/drawable/choice_img_round.png b/app/src/main/res/drawable/choice_img_round.png
new file mode 100644
index 0000000..a981668
Binary files /dev/null and b/app/src/main/res/drawable/choice_img_round.png differ
diff --git a/app/src/main/res/drawable/denied.png b/app/src/main/res/drawable/denied.png
new file mode 100644
index 0000000..4bc6bb5
Binary files /dev/null and b/app/src/main/res/drawable/denied.png differ
diff --git a/app/src/main/res/drawable/ic_archive_black_24dp.xml b/app/src/main/res/drawable/ic_archive_black_24dp.xml
new file mode 100644
index 0000000..025a961
--- /dev/null
+++ b/app/src/main/res/drawable/ic_archive_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_file_download_black_24dp.xml b/app/src/main/res/drawable/ic_file_download_black_24dp.xml
new file mode 100644
index 0000000..8073476
--- /dev/null
+++ b/app/src/main/res/drawable/ic_file_download_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_local_taxi_black_24dp.xml b/app/src/main/res/drawable/ic_local_taxi_black_24dp.xml
new file mode 100644
index 0000000..21b763e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_local_taxi_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_person_black_24dp.xml b/app/src/main/res/drawable/ic_person_black_24dp.xml
new file mode 100644
index 0000000..b2cb337
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_settings_black_24dp.xml b/app/src/main/res/drawable/ic_settings_black_24dp.xml
new file mode 100644
index 0000000..ace746c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_settings_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sort_black_24dp.xml b/app/src/main/res/drawable/ic_sort_black_24dp.xml
new file mode 100644
index 0000000..449c263
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sort_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/pending.png b/app/src/main/res/drawable/pending.png
new file mode 100644
index 0000000..54a7933
Binary files /dev/null and b/app/src/main/res/drawable/pending.png differ
diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml
index 3777d1b..a36d7a1 100644
--- a/app/src/main/res/drawable/side_nav_bar.xml
+++ b/app/src/main/res/drawable/side_nav_bar.xml
@@ -3,7 +3,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/drawable/zero.png b/app/src/main/res/drawable/zero.png
new file mode 100644
index 0000000..ceadf26
Binary files /dev/null and b/app/src/main/res/drawable/zero.png differ
diff --git a/app/src/main/res/layout/activity_forgot_password.xml b/app/src/main/res/layout/activity_forgot_password.xml
new file mode 100644
index 0000000..3fb1c86
--- /dev/null
+++ b/app/src/main/res/layout/activity_forgot_password.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_image_selector.xml b/app/src/main/res/layout/activity_image_selector.xml
deleted file mode 100644
index 71cb80f..0000000
--- a/app/src/main/res/layout/activity_image_selector.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 2e1cb83..f88e053 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -10,7 +10,8 @@
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@drawable/cars"
- tools:context=".LoginActivity">
+ android:importantForAutofill="yes"
+ tools:context=".User.LoginActivity">
@@ -41,6 +42,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
+ android:importantForAutofill="yes"
android:autofilledHighlight="@android:color/transparent"
android:ems="10"
android:hint="@string/prompt_email"
@@ -69,6 +71,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
+ android:importantForAutofill="yes"
android:autofilledHighlight="@android:color/transparent"
android:ems="10"
android:hint="@string/prompt_password"
@@ -84,17 +87,45 @@
-
+ android:layout_marginLeft="18dp">
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a61d8a6..5b08fe6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -20,6 +20,24 @@
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
- app:menu="@menu/activity_main_drawer" />
+ app:menu="@menu/activity_main_drawer" >
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml
index 5913be2..55a200c 100644
--- a/app/src/main/res/layout/activity_register.xml
+++ b/app/src/main/res/layout/activity_register.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".RegisterActivity">
+ tools:context=".User.RegisterActivity">
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml
index 449fcfc..030fe73 100644
--- a/app/src/main/res/layout/app_bar_main.xml
+++ b/app/src/main/res/layout/app_bar_main.xml
@@ -26,6 +26,11 @@
android:layout_height="match_parent"
android:id="@+id/container">
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/approval_list_item.xml b/app/src/main/res/layout/approval_list_item.xml
new file mode 100644
index 0000000..336bdaa
--- /dev/null
+++ b/app/src/main/res/layout/approval_list_item.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/archive_insurance_item.xml b/app/src/main/res/layout/archive_insurance_item.xml
new file mode 100644
index 0000000..64e7595
--- /dev/null
+++ b/app/src/main/res/layout/archive_insurance_item.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/archive_vehicle_item.xml b/app/src/main/res/layout/archive_vehicle_item.xml
new file mode 100644
index 0000000..f7d3fb7
--- /dev/null
+++ b/app/src/main/res/layout/archive_vehicle_item.xml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
deleted file mode 100644
index 9103c1e..0000000
--- a/app/src/main/res/layout/content_main.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_archive.xml b/app/src/main/res/layout/fragment_archive.xml
new file mode 100644
index 0000000..eb32c6e
--- /dev/null
+++ b/app/src/main/res/layout/fragment_archive.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_driver_license.xml b/app/src/main/res/layout/fragment_driver_license.xml
index 3052306..6c2c1f5 100644
--- a/app/src/main/res/layout/fragment_driver_license.xml
+++ b/app/src/main/res/layout/fragment_driver_license.xml
@@ -3,34 +3,50 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".DriverLicenseFragment">
-
-
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ tools:context=".Driver.DriverLicenseFragment">
+ android:paddingLeft="12dp"
+ android:paddingTop="12dp"
+ android:paddingRight="12dp">
+
+
+
+
+
+
+
+ android:maxLines="1" />
@@ -65,16 +81,19 @@
+ android:maxLines="1" />
+
+
diff --git a/app/src/main/res/layout/fragment_driver_overall.xml b/app/src/main/res/layout/fragment_driver_overall.xml
new file mode 100644
index 0000000..9944af4
--- /dev/null
+++ b/app/src/main/res/layout/fragment_driver_overall.xml
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_driver_profile.xml b/app/src/main/res/layout/fragment_driver_profile.xml
index ea2d7e1..58de7ff 100644
--- a/app/src/main/res/layout/fragment_driver_profile.xml
+++ b/app/src/main/res/layout/fragment_driver_profile.xml
@@ -3,8 +3,9 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
- tools:context=".driverProfileFragment">
+ tools:context=".Driver.DriverProfileFragment">
-
+ app:cardCornerRadius="28dp"
+ app:cardElevation="0dp">
+
+
+
+
+
@@ -146,50 +165,6 @@
-
-
-
-
-
-
-
-