diff --git a/.gitignore b/.gitignore
index fd45b12..c241fbd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,8 +3,10 @@
/local.properties
/.idea/caches/build_file_checksums.ser
/.idea/libraries
+/.idea/dictionaries
/.idea/modules.xml
/.idea/workspace.xml
+/.idea/navEditor.xml
.DS_Store
/build
/captures
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 30aa626..3cc336b 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,29 +1,138 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7ac24c7..5cd135a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,8 +1,10 @@
+
-
+
diff --git a/app/.gitignore b/app/.gitignore
index 796b96d..9bdc723 100644
--- a/app/.gitignore
+++ b/app/.gitignore
@@ -1 +1,3 @@
/build
+/release
+google-services.json
diff --git a/app/build.gradle b/app/build.gradle
index e0d9e1e..b8eb85f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,17 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+apply plugin: 'com.google.gms.google-services'
+
+// kotlin kapt
+apply plugin: 'kotlin-kapt'
+// Android navigation
+apply plugin: 'androidx.navigation.safeargs'
+
+repositories {
+ mavenCentral()
+}
android {
compileSdkVersion 28
@@ -7,9 +19,9 @@ android {
applicationId "h_mal.appttude.com.driver"
minSdkVersion 24
targetSdkVersion 28
- versionCode 5
- versionName "1.5"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ versionCode 6
+ versionName "1.6"
+ testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
@@ -17,30 +29,64 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
}
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: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'
-}
+ implementation "androidx.appcompat:appcompat:1.0.0"
+ implementation "com.google.android.material:material:1.0.0"
+ implementation "androidx.cardview:cardview:1.0.0"
+ implementation "androidx.legacy:legacy-support-v4:1.0.0"
+ implementation "androidx.exifinterface:exifinterface:1.0.0"
+ implementation "androidx.constraintlayout:constraintlayout:1.1.3"
+ implementation "androidx.fragment:fragment-ktx:1.2.5"
+ implementation "androidx.activity:activity-ktx:1.2.0"
+ implementation "androidx.recyclerview:recyclerview:1.1.0"
+ implementation "androidx.navigation:navigation-fragment-ktx:2.3.3"
+ implementation "androidx.navigation:navigation-ui-ktx:2.3.3"
+ implementation "androidx.drawerlayout:drawerlayout:1.1.1"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0"
+ implementation 'androidx.viewpager:viewpager:1.0.0'
+ testImplementation "junit:junit:4.12"
+ androidTestImplementation "androidx.test.ext:junit:1.1.1"
+ androidTestImplementation "androidx.test.espresso:espresso-core:3.1.0"
+ androidTestImplementation "androidx.test:rules:1.1.1"
-apply plugin: 'com.google.gms.google-services'
-repositories {
- mavenCentral()
+ implementation "androidx.legacy:legacy-support-v4:1.0.0"
+ // Google play services
+ implementation "com.google.android.gms:play-services-auth:15.0.1"
+ // Google firebase
+ def firebaseVer = "16.0.1"
+ implementation "com.google.firebase:firebase-core:$firebaseVer"
+ implementation "com.google.firebase:firebase-auth:$firebaseVer"
+ implementation "com.google.firebase:firebase-storage:$firebaseVer"
+ implementation "com.google.firebase:firebase-database:$firebaseVer"
+ // Photoviewer
+ implementation "com.github.chrisbanes:PhotoView:2.1.0"
+ /* Picasso photo loader */
+ implementation "com.squareup.picasso:picasso:2.71828"
+ /* Gson */
+ implementation "com.google.code.gson:gson:2.3.1"
+ /* coroutines support for firebase operations */
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.1.1"
+
+ // Circle Image View
+ implementation "com.mikhaellopez:circularimageview:4.2.0"
+
+ //Kodein Dependency Injection
+ def kodein_version = "6.2.1"
+ implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
+ implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version"
+
+ /* Image Carousal */
+ implementation 'com.synnapps:carouselview:0.1.5'
}
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 750d904..bb2e9e9 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,14 +3,11 @@ 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;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
/**
* Instrumented test, which will execute on an Android device.
diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/MainActivityTest.java b/app/src/androidTest/java/h_mal/appttude/com/driver/MainActivityTest.java
new file mode 100644
index 0000000..588d209
--- /dev/null
+++ b/app/src/androidTest/java/h_mal/appttude/com/driver/MainActivityTest.java
@@ -0,0 +1,54 @@
+package h_mal.appttude.com.driver;
+
+import android.view.View;
+
+import androidx.test.rule.ActivityTestRule;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import h_mal.appttude.com.driver.ui.driver.HomeFragment;
+import h_mal.appttude.com.driver.ui.driver.MainActivity;
+
+import static org.junit.Assert.assertNotNull;
+
+public class MainActivityTest {
+
+ @Rule
+ public ActivityTestRule activityActivityTestRule = new ActivityTestRule(MainActivity.class);
+
+
+ private MainActivity mainActivity = null;
+ private HomeFragment hdf;
+
+ @Before
+ public void setUp() throws Exception {
+ mainActivity = activityActivityTestRule.getActivity();
+
+ hdf = new HomeFragment();
+ mainActivity.getSupportFragmentManager().beginTransaction().replace(R.id.container, hdf).commit();
+ }
+
+ @Test
+ public void testViews(){
+ View view = hdf.getView().findViewById(R.id.driver);
+
+ assertNotNull(view);
+
+// Bundle bundle = new Bundle();
+// bundle.putInt("selectedListItem", 0);
+// FragmentFactory factory = new FragmentFactory();
+// homeDriverFragment hdf = new homeDriverFragment();
+//
+// launchInContainer(hdf.getClass(), bundle, factory);
+// Espresso.onView(ViewMatchers.withId(2131231038)).check(ViewAssertions.matches(ViewMatchers.withText("Hello World!")));
+ }
+
+ @After
+ public void TearDown() throws Exception{
+ mainActivity = null;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/base/BaseActivityTest.kt b/app/src/androidTest/java/h_mal/appttude/com/driver/base/BaseActivityTest.kt
new file mode 100644
index 0000000..dfd42d1
--- /dev/null
+++ b/app/src/androidTest/java/h_mal/appttude/com/driver/base/BaseActivityTest.kt
@@ -0,0 +1,8 @@
+package h_mal.appttude.com.driver.base
+
+import org.junit.Assert.*
+
+class BaseActivityTest{
+
+
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/user/EspressoTestTwo.java b/app/src/androidTest/java/h_mal/appttude/com/driver/user/EspressoTestTwo.java
new file mode 100644
index 0000000..0cc828f
--- /dev/null
+++ b/app/src/androidTest/java/h_mal/appttude/com/driver/user/EspressoTestTwo.java
@@ -0,0 +1,199 @@
+package h_mal.appttude.com.driver.user;
+
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import h_mal.appttude.com.driver.R;
+import h_mal.appttude.com.driver.ui.user.LoginActivity;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.*;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.*;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.is;
+
+@LargeTest
+@RunWith(AndroidJUnit4.class)
+public class EspressoTestTwo {
+
+ @Rule
+ public ActivityTestRule mActivityTestRule = new ActivityTestRule<>(LoginActivity.class);
+
+ @Test
+ public void espressoTestTwo() {
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ViewInteraction appCompatEditText = onView(
+ allOf(withId(R.id.email),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.fields_holder),
+ 0),
+ 0),
+ isDisplayed()));
+ appCompatEditText.perform(replaceText("h.malik144.au@gmail.com"), closeSoftKeyboard());
+
+ ViewInteraction appCompatEditText2 = onView(
+ allOf(withId(R.id.password),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.fields_holder),
+ 1),
+ 0),
+ isDisplayed()));
+ appCompatEditText2.perform(replaceText("crack167"), closeSoftKeyboard());
+
+ ViewInteraction appCompatEditText3 = onView(
+ allOf(withId(R.id.password), withText("crack167"),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.fields_holder),
+ 1),
+ 0),
+ isDisplayed()));
+ appCompatEditText3.perform(pressImeActionButton());
+
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ViewInteraction button = onView(
+ allOf(withId(R.id.driver),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 0),
+ 0),
+ isDisplayed()));
+ button.check(matches(isDisplayed()));
+
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ViewInteraction appCompatImageButton = onView(
+ allOf(withContentDescription("Open navigation drawer"),
+ childAtPosition(
+ allOf(withId(R.id.toolbar),
+ childAtPosition(
+ withClassName(is("android.support.design.widget.AppBarLayout")),
+ 0)),
+ 1),
+ isDisplayed()));
+ appCompatImageButton.perform(click());
+
+ ViewInteraction cardView = onView(
+ allOf(withId(R.id.car),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 1),
+ 1),
+ isDisplayed()));
+ cardView.perform(click());
+
+ ViewInteraction cardView2 = onView(
+ allOf(withId(R.id.vehicle_prof),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 1),
+ 0),
+ isDisplayed()));
+ cardView2.perform(click());
+
+ pressBack();
+
+ ViewInteraction appCompatButton = onView(
+ allOf(withId(R.id.driver), withText("Driver Profile"),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 1),
+ 0),
+ isDisplayed()));
+ appCompatButton.perform(click());
+
+ ViewInteraction cardView3 = onView(
+ allOf(withId(R.id.driver_prof),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 1),
+ 0),
+ isDisplayed()));
+ cardView3.perform(click());
+
+ pressBack();
+
+ ViewInteraction cardView4 = onView(
+ allOf(withId(R.id.private_hire),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 1),
+ 1),
+ isDisplayed()));
+ cardView4.perform(click());
+
+ ViewInteraction appCompatButton2 = onView(
+ allOf(withId(android.R.id.button1), withText("View/Edit"),
+ childAtPosition(
+ childAtPosition(
+ withClassName(is("android.widget.ScrollView")),
+ 0),
+ 3)));
+ appCompatButton2.perform(scrollTo(), click());
+ }
+
+ private static Matcher childAtPosition(
+ final Matcher parentMatcher, final int position) {
+
+ return new TypeSafeMatcher() {
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("Child at position " + position + " in parent ");
+ parentMatcher.describeTo(description);
+ }
+
+ @Override
+ public boolean matchesSafely(View view) {
+ ViewParent parent = view.getParent();
+ return parent instanceof ViewGroup && parentMatcher.matches(parent)
+ && view.equals(((ViewGroup) parent).getChildAt(position));
+ }
+ };
+ }
+}
diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/user/LoginActivityTest.java b/app/src/androidTest/java/h_mal/appttude/com/driver/user/LoginActivityTest.java
new file mode 100644
index 0000000..e88572f
--- /dev/null
+++ b/app/src/androidTest/java/h_mal/appttude/com/driver/user/LoginActivityTest.java
@@ -0,0 +1,147 @@
+package h_mal.appttude.com.driver.user;
+
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import h_mal.appttude.com.driver.R;
+import h_mal.appttude.com.driver.ui.user.LoginActivity;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.*;
+import static androidx.test.espresso.matcher.ViewMatchers.*;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.is;
+
+@LargeTest
+@RunWith(AndroidJUnit4.class)
+public class LoginActivityTest {
+
+ @Rule
+ public ActivityTestRule mActivityTestRule = new ActivityTestRule<>(LoginActivity.class);
+
+ @Test
+ public void loginActivityTest() {
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ViewInteraction appCompatEditText = onView(
+ allOf(withId(R.id.email),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.fields_holder),
+ 0),
+ 0),
+ isDisplayed()));
+ appCompatEditText.perform(replaceText("h.malik144.au@gmail.com"), closeSoftKeyboard());
+
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ViewInteraction appCompatEditText2 = onView(
+ allOf(withId(R.id.password),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.fields_holder),
+ 1),
+ 0),
+ isDisplayed()));
+ appCompatEditText2.perform(replaceText("crack167"), closeSoftKeyboard());
+
+// ViewInteraction appCompatButton = onView(
+// allOf(withId(R.id.email_sign_in_button), withText("Sign in"),
+// childAtPosition(
+// allOf(withId(R.id.email_login_form),
+// childAtPosition(
+// withClassName(is("android.widget.RelativeLayout")),
+// 0)),
+// 1),
+// isDisplayed()));
+// appCompatButton.perform(click());
+
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+// ViewInteraction textView = onView(
+// allOf(withText("Choice Minicabs"),
+// childAtPosition(
+// allOf(withId(R.id.toolbar),
+// childAtPosition(
+// IsInstanceOf.instanceOf(android.widget.LinearLayout.class),
+// 0)),
+// 1),
+// isDisplayed()));
+// textView.check(matches(isDisplayed()));
+
+ // Added a sleep statement to match the app's execution delay.
+ // The recommended way to handle such scenarios is to use Espresso idling resources:
+ // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
+ try {
+ Thread.sleep(7000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ViewInteraction appCompatButton2 = onView(
+ allOf(withId(R.id.driver), withText("Driver Profile"),
+ childAtPosition(
+ childAtPosition(
+ withId(R.id.container),
+ 1),
+ 0),
+ isDisplayed()));
+ appCompatButton2.perform(click());
+ }
+
+ private static Matcher childAtPosition(
+ final Matcher parentMatcher, final int position) {
+
+ return new TypeSafeMatcher() {
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("Child at position " + position + " in parent ");
+ parentMatcher.describeTo(description);
+ }
+
+ @Override
+ public boolean matchesSafely(View view) {
+ ViewParent parent = view.getParent();
+ return parent instanceof ViewGroup && parentMatcher.matches(parent)
+ && view.equals(((ViewGroup) parent).getChildAt(position));
+ }
+ };
+ }
+
+
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3dbab83..1a31419 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,6 @@
-
@@ -12,35 +11,33 @@
+
+
-
-
-
-
-
+ android:theme="@style/AppTheme.NoActionBar" />
@@ -48,8 +45,6 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
-
-
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveFragment.kt
new file mode 100644
index 0000000..1e5400f
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveFragment.kt
@@ -0,0 +1,63 @@
+package h_mal.appttude.com.driver.Archive
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ListView
+import androidx.fragment.app.Fragment
+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.FirebaseClass
+import h_mal.appttude.com.driver.Objects.ArchiveObject
+import h_mal.appttude.com.driver.R
+
+class ArchiveFragment : Fragment() {
+ var archive: ArchiveObject? = null
+ private var reference: DatabaseReference? = null
+ private var listView: ListView? = null
+ var archiveString: String? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+// reference =
+// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
+// requireArguments().getString("user_id")
+// )
+// .child(FirebaseClass.ARCHIVE_FIREBASE)
+
+ archiveString = requireArguments().getString("archive")
+ var s: String = ""
+ when (archiveString) {
+ FirebaseClass.PRIVATE_HIRE_FIREBASE -> s = "Private Hire"
+ FirebaseClass.DRIVERS_LICENSE_FIREBASE -> s = "License"
+ FirebaseClass.VEHICLE_DETAILS_FIREBASE -> s = "Vehicle"
+ FirebaseClass.MOT_FIREBASE -> s = "M.O.T"
+ FirebaseClass.INSURANCE_FIREBASE -> s = "Insurance"
+ FirebaseClass.LOG_BOOK_FIREBASE -> s = "Logbook"
+ FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> s = "Private Hire Vehicle"
+ }
+ requireActivity().title = s + " Archive"
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view: View = inflater.inflate(R.layout.fragment_archive, container, false)
+ listView = view.findViewById(R.id.archive_listview)
+// reference!!.addListenerForSingleValueEvent(valueEventListener)
+ return view
+ }
+
+ var valueEventListener: ValueEventListener = object : ValueEventListener {
+ override fun onDataChange(dataSnapshot: DataSnapshot) {
+ archive = dataSnapshot.getValue(ArchiveObject::class.java)
+ listView!!.adapter = ArchiveObjectListAdapter(archive, requireContext(), archiveString)
+ }
+
+ override fun onCancelled(databaseError: DatabaseError) {}
+ }
+}
\ 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
deleted file mode 100644
index 7aca2d6..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveObjectListAdapter.java
+++ /dev/null
@@ -1,293 +0,0 @@
-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/Archive/ArchiveObjectListAdapter.kt b/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveObjectListAdapter.kt
new file mode 100644
index 0000000..1aee612
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Archive/ArchiveObjectListAdapter.kt
@@ -0,0 +1,227 @@
+package h_mal.appttude.com.driver.Archive
+
+import android.content.Context
+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.TextView
+import com.squareup.picasso.Picasso
+import h_mal.appttude.com.driver.Global.FirebaseClass
+import h_mal.appttude.com.driver.Global.ImageSwiperClass
+import h_mal.appttude.com.driver.ui.driver.MainActivity
+import h_mal.appttude.com.driver.Objects.ArchiveObject
+import h_mal.appttude.com.driver.Objects.InsuranceObject
+import h_mal.appttude.com.driver.Objects.LogbookObject
+import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.model.DriversLicenseObject
+import h_mal.appttude.com.driver.model.MotObject
+import h_mal.appttude.com.driver.model.PrivateHireObject
+import h_mal.appttude.com.driver.model.VehicleProfileObject
+import h_mal.appttude.com.driver.utils.DateUtils.convertDateStringDatePattern
+import java.text.ParseException
+
+class ArchiveObjectListAdapter(
+ var archiveObject: ArchiveObject?,
+ var context: Context?,
+ var archiveString: String?
+) : BaseAdapter() {
+ var size: Int = 0
+ lateinit var mKeys: Array
+ private var dateArchivedText: TextView? = null
+ override fun getCount(): Int {
+ return size
+ }
+
+ override fun getItem(position: Int): Any? {
+ when (archiveString) {
+ FirebaseClass.PRIVATE_HIRE_FIREBASE -> return archiveObject?.private_hire
+ ?.get(mKeys[position])
+ FirebaseClass.DRIVERS_LICENSE_FIREBASE -> return archiveObject?.driver_license
+ ?.get(mKeys[position])
+ FirebaseClass.VEHICLE_DETAILS_FIREBASE -> return archiveObject?.vehicle_details
+ ?.get(mKeys[position])
+ FirebaseClass.MOT_FIREBASE -> return archiveObject?.mot_details?.get(mKeys[position])
+ FirebaseClass.INSURANCE_FIREBASE -> return archiveObject?.insurance_details?.get(
+ mKeys[position]
+ )
+ FirebaseClass.LOG_BOOK_FIREBASE -> return archiveObject?.log_book
+ ?.get(mKeys.get(position))
+ FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> return archiveObject?.ph_car?.get(mKeys[position])
+ else -> return mKeys[position]
+ }
+ }
+
+ override fun getItemId(position: Int): Long {
+ return position.toLong()
+ }
+
+ override fun getView(position: Int, convertView: View, parent: ViewGroup): View {
+ var listItemView: View = convertView
+ if (listItemView == null) {
+ if (((archiveString == FirebaseClass.PRIVATE_HIRE_FIREBASE) || (archiveString == FirebaseClass.DRIVERS_LICENSE_FIREBASE) || (archiveString == FirebaseClass.MOT_FIREBASE) || (archiveString == FirebaseClass.LOG_BOOK_FIREBASE) || (archiveString == FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE))) {
+ listItemView = LayoutInflater.from(context).inflate(
+ R.layout.archive_license_item, parent, false
+ )
+ val imageView: ImageView = listItemView.findViewById(R.id.image_archive)
+ dateArchivedText = listItemView.findViewById(R.id.date_archived)
+ val expiryHolder: LinearLayout = listItemView.findViewById(R.id.expiry_view)
+ val fieldTwo: LinearLayout = listItemView.findViewById(R.id.field_two_view)
+ val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
+ val fiewTwoLable: TextView = listItemView.findViewById(R.id.field_two)
+ val fieldTwoText: TextView = listItemView.findViewById(R.id.field_two_text)
+ when (archiveString) {
+// FirebaseClass.PRIVATE_HIRE_FIREBASE -> {
+// expiryHolder.visibility = View.VISIBLE
+// fieldTwo.visibility = View.VISIBLE
+// val privateHireObject: PrivateHireObject =
+// getItem(position) as PrivateHireObject
+// Picasso.get().load(privateHireObject.phImageString)
+// .placeholder(R.drawable.choice_img)
+// .into(imageView)
+// dateString(position)
+// expiryText.text = privateHireObject.phExpiry
+// fiewTwoLable.text = "Private Hire License No.:"
+// fieldTwoText.text = privateHireObject.phNumber
+// }
+// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> {
+// expiryHolder.visibility = View.VISIBLE
+// fieldTwo.visibility = View.VISIBLE
+// val driversLicenseObject: DriversLicenseObject =
+// getItem(position) as DriversLicenseObject
+// Picasso.get().load(driversLicenseObject.licenseImageString)
+// .placeholder(R.drawable.choice_img)
+// .into(imageView)
+// dateString(position)
+// expiryText.text = driversLicenseObject.licenseExpiry
+// fiewTwoLable.text = "License No.:"
+// fieldTwoText.text = driversLicenseObject.licenseNumber
+// }
+// FirebaseClass.MOT_FIREBASE -> {
+// expiryHolder.visibility = View.VISIBLE
+// fieldTwo.visibility = View.GONE
+// val motObject: MotObject = getItem(position) as MotObject
+// Picasso.get().load(motObject.motImageString)
+// .placeholder(R.drawable.choice_img)
+// .into(imageView)
+// dateString(position)
+// expiryText.text = motObject.motExpiry
+// }
+// FirebaseClass.LOG_BOOK_FIREBASE -> {
+// expiryHolder.visibility = View.GONE
+// fieldTwo.visibility = View.VISIBLE
+// val logbookObject: LogbookObject = getItem(position) as LogbookObject
+// Picasso.get().load(logbookObject.photoString)
+// .into(MainActivity.loadImage(imageView))
+// dateString(position)
+// fiewTwoLable.text = "V5C No.:"
+// fieldTwoText.text = logbookObject.v5cnumber
+// }
+// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> {
+// expiryHolder.visibility = View.VISIBLE
+// fieldTwo.visibility = View.VISIBLE
+// val privateHireVehicleObject: PrivateHireVehicleObject =
+// getItem(position) as PrivateHireVehicleObject
+// Picasso.get().load(privateHireVehicleObject.phCarImageString)
+// .into(MainActivity.loadImage(imageView))
+// dateString(position)
+// expiryText.text = privateHireVehicleObject.phCarExpiry
+// fiewTwoLable.text = "Private Hire Vehicle License No.:"
+// fieldTwoText.text = privateHireVehicleObject.phCarNumber
+// }
+ }
+ } else if ((archiveString == FirebaseClass.INSURANCE_FIREBASE)) {
+ listItemView = LayoutInflater.from(context).inflate(
+ R.layout.archive_insurance_item, parent, false
+ )
+ val holder: View = listItemView.findViewById(R.id.image_pager)
+ val swiperClass: ImageSwiperClass = ImageSwiperClass(context, holder)
+ // swiperClass.hideDelete();
+ listItemView.findViewById(R.id.delete).visibility = View.GONE
+ // holder.findViewById(R.id.delete).setVisibility(View.INVISIBLE);
+ dateArchivedText = listItemView.findViewById(R.id.date_archived)
+ dateString(position)
+ val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
+ val fieldTwoText: TextView = listItemView.findViewById(R.id.archive_insurer)
+ val insuranceObject: InsuranceObject = getItem(position) as InsuranceObject
+// swiperClass.reinstantiateList(insuranceObject.photoStrings)
+ expiryText.text = insuranceObject.expiryDate
+ fieldTwoText.text = insuranceObject.insurerName
+ } else if ((archiveString == FirebaseClass.VEHICLE_DETAILS_FIREBASE)) {
+ listItemView = LayoutInflater.from(context).inflate(
+ R.layout.archive_vehicle_item, parent, false
+ )
+ dateArchivedText = listItemView.findViewById(R.id.date_archived)
+ dateString(position)
+ val numberPlate: TextView = listItemView.findViewById(R.id.number_plate)
+ val keeperName: TextView = listItemView.findViewById(R.id.keeper_name)
+ val keeperAddress: TextView = listItemView.findViewById(R.id.keeper_address)
+ val carText: TextView = listItemView.findViewById(R.id.car_text_arch)
+ val carColour: TextView = listItemView.findViewById(R.id.car_colour)
+ val carSeized: TextView = listItemView.findViewById(R.id.seized_checkbox)
+ val startDate: TextView = listItemView.findViewById(R.id.first_date)
+ val vehicleProfileObject: VehicleProfileObject =
+ getItem(position) as VehicleProfileObject
+ numberPlate.text = vehicleProfileObject.reg
+ keeperName.text = vehicleProfileObject.keeperName
+ keeperAddress.text = vehicleProfileObject.keeperAddress + "\n" + vehicleProfileObject.keeperPostCode
+ carText.text = vehicleProfileObject.make + " " + vehicleProfileObject.model
+ carColour.text = vehicleProfileObject.colour
+ val s: String
+ if (vehicleProfileObject.isSeized) {
+ s = "Yes"
+ } else {
+ s = "No"
+ }
+ carSeized.text = s
+ startDate.text = vehicleProfileObject.startDate
+ }
+ }
+ return listItemView
+ }
+
+ private fun dateString(position: Int) {
+ var success: Boolean = true
+ try {
+ dateArchivedText!!.text = mKeys[position].convertDateStringDatePattern("yyyyMMdd_HHmmss", "dd/MM/yyyy")
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ success = false
+ } finally {
+ if (!success) {
+ dateArchivedText!!.text = mKeys.get(position).substring(0, 8)
+ }
+ }
+ }
+
+ companion object {
+ private val TAG: String = "ArchiveObjectListAdapte"
+ }
+
+ init {
+ archiveObject?.apply {
+ val map = when (archiveString) {
+ FirebaseClass.PRIVATE_HIRE_FIREBASE -> private_hire
+ FirebaseClass.DRIVERS_LICENSE_FIREBASE -> driver_license
+ FirebaseClass.VEHICLE_DETAILS_FIREBASE -> vehicle_details
+ FirebaseClass.MOT_FIREBASE -> mot_details
+ FirebaseClass.INSURANCE_FIREBASE -> insurance_details
+ FirebaseClass.LOG_BOOK_FIREBASE -> log_book
+ FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> ph_car
+ else -> null
+ }
+ setUp(map)
+ }
+
+ }
+
+ private fun setUp(map: HashMap?){
+ size = map?.size ?: 0
+ map?.keys?.toTypedArray()?.let{
+ mKeys = it
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverLicenseFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverLicenseFragment.java
deleted file mode 100644
index f6afe18..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverLicenseFragment.java
+++ /dev/null
@@ -1,290 +0,0 @@
-package h_mal.appttude.com.driver.Driver;
-
-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;
-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 java.util.Calendar;
-
-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;
-
- public Uri filePath;
- public Uri picUri;
-
- 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
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this 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);
-
- viewController.progress(View.VISIBLE);
- reference.addListenerForSingleValueEvent(valueEventListener);
-
- TextView uploadLic = view.findViewById(R.id.upload_lic);
-
- licenseNo = view.findViewById(R.id.lic_no);
- expiry = view.findViewById(R.id.lic_expiry);
-
- expiry.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- DateDialog dateDialog = new DateDialog(getContext());
- dateDialog.init(expiry);
-
- }
- });
-
- Button submit = view.findViewById(R.id.submit);
- submit.setOnClickListener(submitOnClickListener);
-
- uploadLic.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
- imageSelectorDialog.setImageName("drivers_license");
- imageSelectorDialog.show();
- }
- });
-
- return view;
- }
-
- View.OnClickListener submitOnClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- li_numberString = licenseNo.getText().toString().trim();
- li_exprString = expiry.getText().toString().trim();
-
- if (!TextUtils.isEmpty(li_numberString) &&
- !TextUtils.isEmpty(li_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(), 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");
- }
- if (TextUtils.isEmpty(li_exprString)){
- expiry.setError("Field required");
- }
- if (picUri == null && filePath == 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{
- driversLicenseObject = dataSnapshot.getValue(DriversLicenseObject.class);
- }catch (Exception e){
- Log.e(TAG, "onDataChange: ", e);
- }finally {
- if (driversLicenseObject != null){
- picUri = Uri.parse(driversLicenseObject.getLicenseImageString());
- li_numberString = driversLicenseObject.getLicenseNumber();
- li_exprString = driversLicenseObject.getLicenseExpiry();
-
- 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(){
-
- if (uploadNew){
- archiveClass.archiveRecord(UID,DRIVERS_LICENSE_FIREBASE,driversLicenseObject);
- }
-
- 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();
- }
-
- 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/DriverOverallFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverOverallFragment.java
deleted file mode 100644
index 44e1a6b..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverOverallFragment.java
+++ /dev/null
@@ -1,147 +0,0 @@
-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/Driver/DriverProfileFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverProfileFragment.java
deleted file mode 100644
index 1ec17ea..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/DriverProfileFragment.java
+++ /dev/null
@@ -1,310 +0,0 @@
-package h_mal.appttude.com.driver.Driver;
-
-import android.content.Intent;
-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.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.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.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 {
-
- private String TAG = this.getClass().getSimpleName();
-
- ImageView driverPic;
- ProgressBar pb;
- TextView addPic;
- EditText forenames;
- EditText address;
- EditText postcode;
- EditText dob;
- EditText ni;
- EditText dateFirst;
- Button submit_driver;
-
- Uri filePath;
- Uri picUri;
-
- DatabaseReference driverProfileReference;
- String UID;
- DriverProfileObject driverProfileObject;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
- if (getArguments() != null){
- UID = getArguments().getString("user_id");
- }else{
- UID = auth.getCurrentUser().getUid();
- }
-
- driverProfileReference = mDatabase.child(USER_FIREBASE).child(UID)
- .child(DRIVER_FIREBASE);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this 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);
- dateFirst = view.findViewById(R.id.date_first);
- submit_driver = view.findViewById(R.id.submit_driver);
-
- viewController.progress(View.VISIBLE);
- driverProfileReference.addListenerForSingleValueEvent(valueEventListener);
-
- addPic.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
- imageSelectorDialog.setImageName("driver_pic"+getDateStamp());
- imageSelectorDialog.show();
- }
- });
-
- dob.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DateDialog dateDialog = new DateDialog(getContext());
- dateDialog.init(dob);
- }
- });
-
- dateFirst.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DateDialog dateDialog = new DateDialog(getContext());
- dateDialog.init(dateFirst);
- }
- });
-
- submit_driver.setOnClickListener(submitOnClickListener);
-
-
- return view;
- }
-
- ValueEventListener valueEventListener = new ValueEventListener(){
-
- @Override
- public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- viewController.progress(View.GONE);
-
- try {
- driverProfileObject = dataSnapshot.child(DRIVER_DETAILS_FIREBASE).getValue(DriverProfileObject.class);
- }catch (Exception e){
- Log.e(TAG, "onDataChange: ", e);
- }finally {
- if (driverProfileObject != null){
- forenames.setText(driverProfileObject.getForenames());
- address.setText(driverProfileObject.getAddress());
- postcode.setText(driverProfileObject.getPostcode());
- dob.setText(driverProfileObject.getDob());
- dateFirst.setText(driverProfileObject.getDateFirst());
- ni.setText(driverProfileObject.getNi());
-
-
- Picasso.get().load(driverProfileObject.getDriverPic())
- .into(loadImage(pb,driverPic));
- picUri = Uri.parse(driverProfileObject.getDriverPic());
- }
- }
-
- }
-
- @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();
- String dobString = dob.getText().toString().trim();
- String niString = ni.getText().toString().trim();
- String dateFirstString = dateFirst.getText().toString().trim();
-
- if ( !TextUtils.isEmpty(driverForename) &&
- !TextUtils.isEmpty(AddressString) &&
- !TextUtils.isEmpty(postCodeString) &&
- !TextUtils.isEmpty(dobString) &&
- !TextUtils.isEmpty(niString) &&
- !TextUtils.isEmpty(dateFirstString)){
-
- 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 {
- 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");
- }
- }
-
- }
-
- };
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
-
- new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
- filePath,driverPic,new ImageSelectorResults.FilepathResponse() {
- @Override
- public void processFinish(Uri output) {
- filePath = output;
- }
- });
-
-
- }
-
- private void writeDriverToDb(){
-
- String forenameText = forenames.getText().toString().trim();
- String addressText = address.getText().toString().trim();
- String postcodeText = postcode.getText().toString().trim();
- String dobText = dob.getText().toString().trim();
- String niText = ni.getText().toString().trim();
- String datefirstText = dateFirst.getText().toString().trim();
-
- DriverProfileObject driverProfileObject = new DriverProfileObject(picUri.toString(),forenameText,
- addressText,postcodeText,dobText,niText,datefirstText);
-
- 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
deleted file mode 100644
index 6774a2d..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/InsuranceFragment.java
+++ /dev/null
@@ -1,300 +0,0 @@
-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
deleted file mode 100644
index 3d7cf6c..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/MotFragment.java
+++ /dev/null
@@ -1,262 +0,0 @@
-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/Driver/PrivateHireLicenseFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireLicenseFragment.java
deleted file mode 100644
index a33d51d..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireLicenseFragment.java
+++ /dev/null
@@ -1,278 +0,0 @@
-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.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.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 java.util.UUID;
-
-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;
- ProgressBar pb;
-
- EditText phNo;
- EditText phExpiry;
-
- public Uri filePath;
-
- public Uri picUri;
- 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
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_private_hire_license, container, false);
-
- viewController.progress(View.VISIBLE);
- reference.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- viewController.progress(View.GONE);
-
- try{
- privateHireObject = dataSnapshot.getValue(PrivateHireObject.class);
- }catch (Exception e){
- Log.e(TAG, "onDataChange: ", e);
- }finally {
- if (privateHireObject != null){
- picUri = Uri.parse(privateHireObject.getPhImageString());
- Ph_numberString = privateHireObject.getPhNumber();
- Ph_exprString = privateHireObject.getPhExpiry();
-
- 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);
- }
- });
-
- 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);
-
- uploadPH.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
- imageSelectorDialog.setImageName("private_hire");
- imageSelectorDialog.show();
-
- }
- });
-
- submit.setOnClickListener(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 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();
- }
- }
-
- }
- });
-
- return view;
- }
-
- private void publishObject(){
-
- if (uploadNew){
- archiveClass.archiveRecord(UID,PRIVATE_HIRE_FIREBASE,privateHireObject);
- }
-
- 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);
-
- }
- });
-
- }
-
- @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/PrivateHireVehicleFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireVehicleFragment.java
deleted file mode 100644
index 8d9cf8b..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/PrivateHireVehicleFragment.java
+++ /dev/null
@@ -1,285 +0,0 @@
-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
deleted file mode 100644
index 96259de..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleOverallFragment.java
+++ /dev/null
@@ -1,188 +0,0 @@
-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
deleted file mode 100644
index c9dc1ce..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/VehicleSetupFragment.java
+++ /dev/null
@@ -1,223 +0,0 @@
-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/Driver/homeDriverFragment.java b/app/src/main/java/h_mal/appttude/com/driver/Driver/homeDriverFragment.java
deleted file mode 100644
index 33194f3..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/homeDriverFragment.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package h_mal.appttude.com.driver.Driver;
-
-import android.os.Bundle;
-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.Button;
-
-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 homeDriverFragment 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_home, container, false);
-
- Button button = view.findViewById(R.id.driver);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new DriverOverallFragment());
- }
- });
-
- CardView second= view.findViewById(R.id.car);
- second.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- executeFragment(new VehicleOverallFragment());
- }
- });
-
- return view;
- }
-
-
-
-}
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
deleted file mode 100644
index 397422f..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Driver/logbookFragment.java
+++ /dev/null
@@ -1,255 +0,0 @@
-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/Global/ApprovalsClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.java
deleted file mode 100644
index 89d869d..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.java
+++ /dev/null
@@ -1,123 +0,0 @@
-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/ApprovalsClass.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.kt
new file mode 100644
index 0000000..3eb4a5a
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ApprovalsClass.kt
@@ -0,0 +1,87 @@
+package h_mal.appttude.com.driver.Global
+
+import h_mal.appttude.com.driver.Objects.ApprovalsObject
+import h_mal.appttude.com.driver.Objects.WholeDriverObject
+import h_mal.appttude.com.driver.R
+
+
+class ApprovalsClass {
+ fun getOverApprovalStatusCode(wholeDriverObject: WholeDriverObject?): Int {
+ if (wholeDriverObject!!.approvalsObject != null) {
+ val approvalsObject: ApprovalsObject = wholeDriverObject!!.approvalsObject!!
+ val ints: IntArray = intArrayOf(
+ approvalsObject.driver_details_approval,
+ approvalsObject.driver_license_approval,
+ approvalsObject.private_hire_approval,
+ approvalsObject.vehicle_details_approval,
+ approvalsObject.insurance_details_approval,
+ approvalsObject.mot_details_approval,
+ approvalsObject.log_book_approval,
+ approvalsObject.ph_car_approval
+ )
+ return setImageResource(mode(ints))
+ }
+ return setImageResource(FirebaseClass.NO_DATE_PRESENT)
+ }
+
+ fun setStatusCode(userId: String?, approvalNameString: String, status: Int) {
+// if (!(approvalNameString == "")) {
+// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE)
+// .child((userId)!!).child(FirebaseClass.USER_APPROVALS)
+// .child(approvalNameString)
+// .setValue(status).addOnCompleteListener { task ->
+// if (task.isSuccessful) {
+// } else {
+// }
+// }
+// }
+ }
+
+ fun setImageResource(statusCode: Int): Int {
+ val imageResource: Int
+ when (statusCode) {
+ FirebaseClass.APPROVAL_PENDING -> imageResource = R.drawable.pending
+ FirebaseClass.APPROVAL_DENIED -> imageResource = R.drawable.denied
+ FirebaseClass.APPROVED -> imageResource = R.drawable.approved
+ else -> imageResource = R.drawable.zero
+ }
+ return imageResource
+ }
+
+ companion object {
+ fun mode(array: IntArray): Int {
+ var mode: Int = array.get(0)
+ var maxCount: Int = 0
+ if (matchedArray(array, 3)) {
+ return 3
+ } else if (matchedArray(array, 0)) {
+ return 0
+ } else {
+ for (i in array.indices) {
+ val value: Int = array.get(i)
+ var count: Int = 1
+ for (j in array.indices) {
+ if (array.get(j) == value) count++
+ if (count > maxCount) {
+ mode = value
+ maxCount = count
+ }
+ }
+ }
+ if (mode == 3) {
+ return 1
+ }
+ }
+ return mode
+ }
+
+ private fun matchedArray(array: IntArray, match: Int): Boolean {
+ for (i: Int in array) {
+ if (i != match) {
+ return false
+ }
+ }
+ return true
+ }
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 029db51..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ArchiveClass.java
+++ /dev/null
@@ -1,99 +0,0 @@
-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/Global/ArchiveClass.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/ArchiveClass.kt
new file mode 100644
index 0000000..2f1e129
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ArchiveClass.kt
@@ -0,0 +1,70 @@
+package h_mal.appttude.com.driver.Global
+
+import android.app.AlertDialog
+import android.content.Context
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import h_mal.appttude.com.driver.utils.UPLOAD_NEW
+
+
+class ArchiveClass {
+ fun archiveRecord(UID: String?, item: String?, `object`: Any?) {
+// val toPath: DatabaseReference =
+// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
+// (UID)!!
+// )
+// .child(FirebaseClass.ARCHIVE_FIREBASE).child((item)!!)
+// toPath.child(MainActivity.dateTimeStamp).setValue(`object`)
+// .addOnCompleteListener { task ->
+// if (task.isSuccessful) {
+// Log.i(TAG, "onComplete: archive successful")
+// } else {
+// Log.i(TAG, "onComplete: archive unsuccessful")
+// }
+// }
+ }
+
+ fun openDialogArchive(context: Context?, `object`: Any?, fragment: Fragment) {
+ if (`object` == null) {
+// executeFragment(fragment)
+ } else {
+ val builder: AlertDialog.Builder = AlertDialog.Builder(context)
+ builder.setMessage("Do you want to View/Edit or Upload new?")
+ .setPositiveButton("View/Edit"
+ ) { _, _ ->
+// executeFragment(fragment)
+ }
+ .setNegativeButton("Upload New"
+ ) { _, _ ->
+ val bundle = Bundle()
+ bundle.putString(UPLOAD_NEW, "Yes")
+ fragment.arguments = bundle
+// executeFragment(fragment)
+ }
+ .create().show()
+ }
+ }
+
+ fun openDialogArchive(context: Context?, `object`: Any?, user: String?, fragment: Fragment?) {
+ val bundle: Bundle = Bundle()
+ bundle.putString("user_id", user)
+ fragment!!.arguments = bundle
+ if (`object` == null) {
+// executeFragment(fragment)
+ } else {
+ val builder: AlertDialog.Builder = AlertDialog.Builder(context)
+ builder.setMessage("Do you want to View/Edit or Upload new?")
+ .setPositiveButton("View/Edit"
+ ) { _, _ ->
+// executeFragment(fragment)
+ }
+ .setNegativeButton("Upload New"
+ ) { _, _ ->
+ bundle.putString(UPLOAD_NEW, "Yes")
+// executeFragment(fragment)
+ }
+ .create().show()
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.java b/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.java
deleted file mode 100644
index 43c90e9..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import java.text.ParseException;
-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;
- int mMonth;
- int mDay;
-
- 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);
- }
-
- public DateDialog(@NonNull Context context,
- @Nullable DatePickerDialog.OnDateSetListener listener,
- int year, int month, int dayOfMonth) {
- super(context, listener, year, month, dayOfMonth);
-
-
- }
-
- public DateDialog(@NonNull Context context, int themeResId, @Nullable DatePickerDialog.OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) {
- super(context, themeResId, listener, year, monthOfYear, dayOfMonth);
-
-
- }
-
- @Override
- public void setTitle(CharSequence title) {
- super.setTitle(title);
- }
-
- @Override
- public void setOnDateSetListener(@Nullable DatePickerDialog.OnDateSetListener listener) {
- super.setOnDateSetListener(dateSetListener);
- }
-
- public void init(EditText editText){
- this.editText = editText;
-
- String dateString = editText.getText().toString();
-
- Date javaDate = null;
-
- if(TextUtils.isEmpty(dateString)){
- Calendar calendar = Calendar.getInstance();
- mYear = calendar.get(Calendar.YEAR);
- mMonth = calendar.get(Calendar.MONTH);
- mDay = calendar.get(Calendar.DAY_OF_MONTH);
- }else {
- try {
- 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, 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);
- mMonth = calendar.get(Calendar.MONTH);
- mDay = calendar.get(Calendar.DAY_OF_MONTH);
- }
- }
-
- }
-
- Log.i(this.getClass().getSimpleName(), "init: year =" + mYear +
- "month = " + mMonth +
- "day = " + mDay);
-
-
- updateDate(mYear,mMonth,mDay);
-
- setOnDateSetListener(null);
-
- this.setTitle(getContext().getString(R.string.set_date));
- this.show();
- }
-
- DatePickerDialog.OnDateSetListener dateSetListener = new OnDateSetListener() {
- @Override
- public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
- mYear = year;
- mMonth = month + 1;
- mDay = dayOfMonth;
-
- editText.setText(String.format("%02d", mDay) + "/" +
- String.format("%02d", (mMonth)) +"/" +
- mYear
- );
-
- }
- };
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.kt
new file mode 100644
index 0000000..4df5444
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/DateDialog.kt
@@ -0,0 +1,55 @@
+package h_mal.appttude.com.driver.Global
+
+
+import android.app.AlertDialog
+import android.app.DatePickerDialog
+import android.app.DatePickerDialog.OnDateSetListener
+import android.content.Context
+import android.icu.util.Calendar
+import android.os.Build
+import android.widget.EditText
+import androidx.annotation.RequiresApi
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.utils.DateUtils
+
+
+private const val DATE_FORMAT = "dd/MM/yyyy"
+@RequiresApi(api = Build.VERSION_CODES.N)
+class DateDialog(
+ private val editText: EditText
+) : DatePickerDialog(editText.context, AlertDialog.THEME_HOLO_LIGHT) {
+
+ var dateSetListener: OnDateSetListener =
+ OnDateSetListener { _, year, month, dayOfMonth ->
+ val cal = Calendar.getInstance()
+ cal.set(year, month + 1, dayOfMonth)
+
+ editText.setText(DateUtils.parseCalenderIntoDateString(cal, DATE_FORMAT))
+ }
+
+ init {
+ val dateString = editText.text?.toString()
+ val date = if (dateString.isNullOrBlank()){
+ // Set time to now
+ Calendar.getInstance()
+ }else{
+ // Parse current edit text string and set value
+ DateUtils.parseDateStringIntoCalender(dateString, DATE_FORMAT)
+ ?: Calendar.getInstance()
+ }
+ setDateFromCalender(date)
+ setOnDateSetListener(dateSetListener)
+ setTitle(context.getString(R.string.set_date))
+ show()
+ }
+
+ private fun setDateFromCalender(calendar: Calendar){
+ val mYear = calendar.get(Calendar.YEAR)
+ val mMonth = calendar.get(Calendar.MONTH)
+ val mDay = calendar.get(Calendar.DAY_OF_MONTH)
+
+ updateDate(mYear, mMonth, mDay)
+ }
+
+
+}
\ No newline at end of file
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
deleted file mode 100644
index a88ebc9..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ExecuteFragment.java
+++ /dev/null
@@ -1,65 +0,0 @@
-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/Global/FirebaseClass.java b/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.java
deleted file mode 100644
index 5e271b9..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package h_mal.appttude.com.driver.Global;
-
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.google.android.gms.tasks.Continuation;
-import com.google.android.gms.tasks.OnCompleteListener;
-import com.google.android.gms.tasks.Task;
-import com.google.firebase.storage.OnProgressListener;
-import com.google.firebase.storage.StorageReference;
-import com.google.firebase.storage.UploadTask;
-
-import static h_mal.appttude.com.driver.MainActivity.auth;
-import static h_mal.appttude.com.driver.MainActivity.storageReference;
-
-public class FirebaseClass {
-
- public static final String USER_FIREBASE = "user";
- public static final String DRIVER_FIREBASE = "driver_profile";
- public static final String DRIVER_DETAILS_FIREBASE = "driver_details";
- 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;
-
- public interface Response {
- void processFinish(Uri output);
- }
-
- public Response delegate;
-
- public FirebaseClass(Context context, Uri filePath, Response delegate) {
- this.context = context;
- this.filePath = filePath;
- this.delegate = delegate;
- }
-
- public void uploadImage(String path, String name) {
-
- if(filePath != null) {
- final ProgressDialog progressDialog = new ProgressDialog(context);
- progressDialog.setTitle("Uploading...");
- progressDialog.show();
-
- final StorageReference ref = storageReference.child("images/"+ auth.getCurrentUser().getUid() + "/" + path
- + "/" + name);
-
- 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()) {
- delegate.processFinish(task.getResult());
- progressDialog.dismiss();
- Toast.makeText(context, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
- Log.i(context.getClass().getSimpleName(), "onComplete: uploaded Successful uri: " + task.getResult());
- } else {
- delegate.processFinish(null);
- progressDialog.dismiss();
- Toast.makeText(context, "Failed to upload", Toast.LENGTH_SHORT).show();
- Log.i(context.getClass().getSimpleName(), "onComplete: failed to get url");
- }
- }
- });
-
- }
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.kt
new file mode 100644
index 0000000..d644835
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/FirebaseClass.kt
@@ -0,0 +1,71 @@
+package h_mal.appttude.com.driver.Global
+
+import android.content.Context
+import android.net.Uri
+
+class FirebaseClass constructor(var context: Context?, var filePath: Uri?, var delegate: Response) {
+ open interface Response {
+ fun processFinish(output: Uri?)
+ }
+
+ fun uploadImage(path: String, name: String) {
+// if (filePath != null) {
+// val progressDialog: ProgressDialog = ProgressDialog(context)
+// progressDialog.setTitle("Uploading...")
+// progressDialog.show()
+// val ref: StorageReference = MainActivity.storageReference!!.child(
+// ("images/" + MainActivity.auth!!.currentUser!!
+// .uid + "/" + path
+// + "/" + name)
+// )
+// val uploadTask: UploadTask = ref.putFile(filePath!!)
+// uploadTask.addOnProgressListener { taskSnapshot ->
+// val progress: Double =
+// (100.0 * taskSnapshot.bytesTransferred / taskSnapshot
+// .totalByteCount)
+// progressDialog.setMessage("Uploaded " + progress.toInt() + "%")
+// }.continueWithTask { task ->
+// if (!task.isSuccessful) {
+// throw (task.exception)!!
+// }
+//
+// // Continue with the task to get the download URL
+// ref.downloadUrl
+// }.addOnCompleteListener { task ->
+// if (task.isSuccessful) {
+// delegate.processFinish(task.result)
+// progressDialog.dismiss()
+// context?.displayToast("Uploaded Successfully")
+// println("onComplete: uploaded Successful uri: " + task.result)
+// } else {
+// delegate.processFinish(null)
+// progressDialog.dismiss()
+// context?.displayToast("Uploaded Successfully")
+// }
+// }
+// }
+ }
+
+ companion object {
+ val USER_FIREBASE: String = "user"
+ val DRIVER_FIREBASE: String = "driver_profile"
+ val DRIVER_DETAILS_FIREBASE: String = "driver_details"
+ val PRIVATE_HIRE_FIREBASE: String = "private_hire"
+ val DRIVERS_LICENSE_FIREBASE: String = "driver_license"
+ val DRIVER_STATUS: String = "driver_status"
+ val USER_APPROVALS: String = "approvalsObject"
+ val APPROVAL_CONSTANT: String = "_approval"
+ val ARCHIVE_FIREBASE: String = "archive"
+ val DRIVER_NUMBER: String = "driver_number"
+ val VEHICLE_FIREBASE: String = "vehicle_profile"
+ val MOT_FIREBASE: String = "mot_details"
+ val VEHICLE_DETAILS_FIREBASE: String = "vehicle_details"
+ val INSURANCE_FIREBASE: String = "insurance_details"
+ val LOG_BOOK_FIREBASE: String = "log_book"
+ val PRIVATE_HIRE_VEHICLE_LICENSE: String = "private_hire_vehicle"
+ val NO_DATE_PRESENT: Int = 0
+ val APPROVAL_PENDING: Int = 1
+ val APPROVAL_DENIED: Int = 2
+ val APPROVED: Int = 3
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.java
deleted file mode 100644
index 835af5e..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package h_mal.appttude.com.driver.Global;
-
-import android.Manifest;
-import android.app.Activity;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Environment;
-import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-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;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.Toast;
-
-import com.google.firebase.storage.FirebaseStorage;
-import com.google.firebase.storage.StorageReference;
-
-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.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;
-import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
-import static h_mal.appttude.com.driver.MainActivity.verifyStoragePermissions;
-
-public class ImageSelectorDialog extends Dialog{
-
- private String TAG = this.getClass().getSimpleName();
- 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;
-
- Fragment fragment;
-
- public ImageSelectorDialog(@NonNull Context context) {
- super(context);
-
- this.saveFileName = "default_name";
- }
-
- public ImageSelectorDialog(@NonNull Context context, int themeResId) {
- super(context, themeResId);
- this.saveFileName = "default_name";
- }
-
- protected ImageSelectorDialog(@NonNull Context context, boolean cancelable, @Nullable DialogInterface.OnCancelListener cancelListener) {
- super(context, cancelable, cancelListener);
- this.saveFileName = "default_name";
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.address_dialog);
-
- //check if we have we have storage rights
- 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);
-
- Button upload = findViewById(R.id.upload);
- Button takePic = findViewById(R.id.take_pic);
-
- upload.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- 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();
- }
- });
-
- takePic.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (permissionCam == PackageManager.PERMISSION_GRANTED){
- Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
- File file = createFile();
- photoURI = Uri.fromFile(file);
- Uri imageUri = FileProvider.getUriForFile(
- getContext(),
- "h_mal.appttude.com.driver",
- 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();
- }
- });
-
- }
-
- public void setImageName(String saveFileName){
- this.saveFileName = saveFileName;
- }
-
- private File createFile(){
- //create directory
- File root = getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
- //create file
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmm");
- String currentDateandTime = sdf.format(new Date());
- String fname = saveFileName+ currentDateandTime;
- File image = new File(root,fname);
-
- return image;
-
- }
-
- private void chooseImage() {
- Intent intent = new Intent();
- intent.setType("image/*");
- intent.setAction(Intent.ACTION_GET_CONTENT);
-
- fragment.startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
-
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.kt
new file mode 100644
index 0000000..7d0cbd1
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorDialog.kt
@@ -0,0 +1,129 @@
+package h_mal.appttude.com.driver.Global
+
+import android.Manifest
+import android.app.Dialog
+import android.content.Context
+import android.content.DialogInterface
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.icu.text.SimpleDateFormat
+import android.net.Uri
+import android.os.Bundle
+import android.os.Environment
+import android.provider.MediaStore
+import android.widget.Button
+import android.widget.Toast
+import androidx.core.app.ActivityCompat
+import androidx.core.content.FileProvider
+import androidx.fragment.app.Fragment
+import h_mal.appttude.com.driver.R
+import java.io.File
+import java.util.*
+
+
+class ImageSelectorDialog : Dialog {
+ private val TAG: String = this.javaClass.simpleName
+ private var saveFileName: String
+ var fragment: Fragment? = null
+
+ constructor(context: Context) : super(context) {
+ saveFileName = "default_name"
+ }
+
+ constructor(context: Context, themeResId: Int) : super(context, themeResId) {
+ saveFileName = "default_name"
+ }
+
+ protected constructor(
+ context: Context,
+ cancelable: Boolean,
+ cancelListener: DialogInterface.OnCancelListener?
+ ) : super(context, cancelable, cancelListener) {
+ saveFileName = "default_name"
+ }
+
+ override fun onCreate(savedInstanceState: Bundle) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.address_dialog)
+
+ //check if we have we have storage rights
+ val permissionPic: Int = ActivityCompat.checkSelfPermission(
+ context,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE
+ )
+ val permissionCam: Int =
+ ActivityCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
+// fragment = MainActivity.mainFragmentManager.fragments[0]
+ val upload: Button = findViewById(R.id.upload)
+ val takePic: Button = findViewById(R.id.take_pic)
+ upload.setOnClickListener {
+ if (permissionPic == PackageManager.PERMISSION_GRANTED) {
+ chooseImage()
+ } else {
+ Toast.makeText(context, "Storage permissions required", Toast.LENGTH_SHORT)
+ .show()
+ ActivityCompat.requestPermissions(
+ (fragment!!.requireActivity()),
+ arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
+ STORAGE_PERMISSION_CODE
+ )
+ }
+ dismiss()
+ }
+ takePic.setOnClickListener {
+ if (permissionCam == PackageManager.PERMISSION_GRANTED) {
+ val cameraIntent: Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
+ val file: File = createFile()
+ photoURI = Uri.fromFile(file)
+ val imageUri: Uri = FileProvider.getUriForFile(
+ context,
+ "h_mal.appttude.com.driver",
+ file
+ )
+ cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
+ fragment!!.startActivityForResult(cameraIntent, CAMERA_REQUEST)
+ } else {
+ Toast.makeText(context, "Camera Permissions required", Toast.LENGTH_SHORT)
+ .show()
+ ActivityCompat.requestPermissions(
+ (fragment!!.requireActivity()), arrayOf(Manifest.permission.CAMERA),
+ MY_CAMERA_PERMISSION_CODE
+ )
+ }
+ dismiss()
+ }
+ }
+
+ fun setImageName(saveFileName: String) {
+ this.saveFileName = saveFileName
+ }
+
+ private fun createFile(): File {
+ //create directory
+ val root: File = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
+ //create file
+ val sdf: SimpleDateFormat = SimpleDateFormat("yyyyMMdd_HHmm")
+ val currentDateandTime: String = sdf.format(Date())
+ val fname: String = saveFileName + currentDateandTime
+ val image: File = File(root, fname)
+ return image
+ }
+
+ private fun chooseImage() {
+ val intent: Intent = Intent()
+ intent.type = "image/*"
+ intent.action = Intent.ACTION_GET_CONTENT
+ fragment!!.startActivityForResult(
+ Intent.createChooser(intent, "Select Picture"),
+ PICK_IMAGE_REQUEST
+ )
+ }
+
+ companion object {
+ val PICK_IMAGE_REQUEST: Int = 71
+ val CAMERA_REQUEST: Int = 1888
+ val MY_CAMERA_PERMISSION_CODE: Int = 100
+ val STORAGE_PERMISSION_CODE: Int = 101
+ var photoURI: Uri? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.java b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.java
deleted file mode 100644
index 6ec3b61..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package h_mal.appttude.com.driver.Global;
-
-import android.Manifest;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Environment;
-import android.provider.MediaStore;
-import android.support.v4.app.ActivityCompat;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.Toast;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import static android.app.Activity.RESULT_OK;
-import static android.os.Environment.DIRECTORY_PICTURES;
-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 {
-
- Activity activity;
-
- public interface FilepathResponse {
- void processFinish(Uri output);
- }
-
-// public FilepathResponse delegate;
-
- public ImageSelectorResults() {
- }
-
- public void Results(Activity activity, int requestCode, int resultCode, Intent data, Uri filePath,
- ImageView imageView,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);
- if (imageView.getVisibility() != View.VISIBLE) {
- imageView.setVisibility(View.VISIBLE);
- }
- imageView.setImageBitmap(bitmap);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally {
- if (bitmap != null){
- 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);
-
- imageView.setImageBitmap(bitmap);
-
- 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);
- }
- }
-
- 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);
- }
- }
- }
-
- 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() {
- Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
- File f = new File(photoURI.getPath());
- Uri contentUri = Uri.fromFile(f);
- mediaScanIntent.setData(contentUri);
- activity.sendBroadcast(mediaScanIntent);
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.kt
new file mode 100644
index 0000000..36c73f4
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSelectorResults.kt
@@ -0,0 +1,159 @@
+package h_mal.appttude.com.driver.Global
+
+import android.Manifest
+import android.app.Activity
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.graphics.Bitmap
+import android.net.Uri
+import android.os.Environment
+import android.provider.MediaStore
+import android.view.View
+import android.widget.ImageView
+import android.widget.Toast
+import androidx.core.app.ActivityCompat
+import h_mal.appttude.com.driver.utils.DateUtils.getDateStamp
+import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
+
+class ImageSelectorResults // public FilepathResponse delegate;
+{
+ lateinit var activity: Activity
+
+ interface FilepathResponse {
+ fun processFinish(output: Uri?)
+ }
+
+ fun Results(
+ activity: Activity, requestCode: Int, resultCode: Int, data: Intent?, filePath: Uri?,
+ imageView: ImageView?, delegate: FilepathResponse
+ ) {
+ var filePath: Uri? = filePath
+ this.activity = activity
+ if ((requestCode == ImageSelectorDialog.PICK_IMAGE_REQUEST) && (resultCode == Activity.RESULT_OK
+ ) && (data != null) && (data.data != null)
+ ) {
+ val uri = data.data
+ var bitmap: Bitmap? = null
+ try {
+ bitmap =
+ MediaStore.Images.Media.getBitmap(activity.contentResolver, uri)
+ if (imageView!!.visibility != View.VISIBLE) {
+ imageView.visibility = View.VISIBLE
+ }
+ imageView.setImageBitmap(bitmap)
+ } catch (e: IOException) {
+ e.printStackTrace()
+ } finally {
+ if (bitmap != null) {
+ delegate.processFinish(uri)
+ }
+ }
+ }
+ if (requestCode == ImageSelectorDialog.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
+ //check if we have we have storage rights
+ val permission: Int = 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 {
+ val f: File =
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ val fname: String = "driver" + getDateStamp() + ".jpg"
+ val image = File(f, fname)
+ val fileOutputStream = FileOutputStream(image)
+ filePath = ImageSelectorDialog.photoURI
+ val bitmap: Bitmap = MediaStore.Images.Media
+ .getBitmap(
+ activity.contentResolver,
+ ImageSelectorDialog.photoURI
+ )
+ imageView!!.setImageBitmap(bitmap)
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream)
+ fileOutputStream.flush()
+ fileOutputStream.close()
+ galleryAddPic()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ delegate.processFinish(filePath)
+ }
+ }
+
+ fun Results(
+ activity: Activity,
+ requestCode: Int,
+ resultCode: Int,
+ data: Intent?,
+ filePath: Uri?,
+ delegate: FilepathResponse
+ ) {
+ var filePath: Uri? = filePath
+ this.activity = activity
+ if ((requestCode == ImageSelectorDialog.PICK_IMAGE_REQUEST) && (resultCode == Activity.RESULT_OK
+ ) && (data != null) && (data.data != null)
+ ) {
+ filePath = data.data
+ var bitmap: Bitmap? = null
+ try {
+ bitmap =
+ MediaStore.Images.Media.getBitmap(activity.contentResolver, filePath)
+ } catch (e: IOException) {
+ e.printStackTrace()
+ } finally {
+ if (bitmap != null) {
+ delegate.processFinish(filePath)
+ }
+ }
+ }
+ if (requestCode == ImageSelectorDialog.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
+ //check if we have we have storage rights
+ val permission: Int = 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 {
+ val f: File =
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ val fname: String = "driver" + getDateTimeStamp() + ".jpg"
+ val image: File = File(f, fname)
+ val fileOutputStream: FileOutputStream = FileOutputStream(image)
+ filePath = ImageSelectorDialog.photoURI
+ val bitmap: Bitmap = MediaStore.Images.Media
+ .getBitmap(
+ activity.contentResolver,
+ ImageSelectorDialog.photoURI
+ )
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream)
+ fileOutputStream.flush()
+ fileOutputStream.close()
+ galleryAddPic()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ delegate.processFinish(filePath)
+ }
+ }
+
+ private fun galleryAddPic() {
+ val mediaScanIntent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
+ val f: File = File(ImageSelectorDialog.photoURI!!.path)
+ val contentUri: Uri = Uri.fromFile(f)
+ mediaScanIntent.data = contentUri
+ activity.sendBroadcast(mediaScanIntent)
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 6f92273..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSwiperClass.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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/ImageSwiperClass.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSwiperClass.kt
new file mode 100644
index 0000000..76e9269
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageSwiperClass.kt
@@ -0,0 +1,159 @@
+package h_mal.appttude.com.driver.Global
+
+import android.content.Context
+import android.content.ContextWrapper
+import android.view.View
+import android.widget.ImageView
+import h_mal.appttude.com.driver.R
+
+
+class ImageSwiperClass(
+ private val context: Context?,
+ wholeView: View
+) : ContextWrapper(context) {
+ private var left: ImageView = wholeView.findViewById(R.id.left)
+ private var right: ImageView = wholeView.findViewById(R.id.right)
+
+ var list: List? = null
+
+// fun addLocalString(uris: List) {
+// list = uris
+// }
+//
+// fun addFirebaseStrings(uris: List) {
+// list = uris
+// }
+//
+// private var adapter: SlidingImageViewAdapter? = null
+// lateinit var viewPager: ViewPager
+//
+//
+// fun reinstantiateList(imageStrings: MutableList?) {
+// this.imageStrings = imageStrings
+// adapter = SlidingImageViewAdapter()
+// viewPager.adapter = adapter
+// setArrows()
+// }
+//
+// fun hideDelete() {
+// delete.hide()
+// }
+//
+// private val leftClick: View.OnClickListener = View.OnClickListener {
+// viewPager.currentItem = viewPager.currentItem - 1
+// setArrows()
+// }
+// private val rightClick: View.OnClickListener = View.OnClickListener {
+// viewPager.currentItem = viewPager.currentItem + 1
+// setArrows()
+// }
+//
+// private fun deleteDialog(position: Int) {
+// val builder: AlertDialog.Builder = AlertDialog.Builder(context)
+// builder.setMessage("Are you sure you want to delete?")
+// .setPositiveButton(
+// android.R.string.ok
+// ) { _, _ ->
+// imageStrings!!.removeAt(position)
+// viewPager.adapter = adapter
+// // adapter.notifyDataSetChanged();
+// }
+// .setNegativeButton(android.R.string.cancel, null)
+// .create()
+// .show()
+// }
+//
+// private fun setArrows() {
+// with(list) {
+// when (list) {
+// isNullOrEmpty() -> { }
+// isNotEmpty() -> { }
+//
+// }
+// }
+//
+// if (list?.isNotEmpty()) {
+// //left arrow
+// if (viewPager.currentItem > 0) {
+// setAnimation(left, true)
+// } else {
+// setAnimation(left, false)
+// }
+//
+// //right
+// if (viewPager.currentItem == imageStrings!!.size - 1) {
+// setAnimation(right, false)
+// } else {
+// setAnimation(right, true)
+// }
+// }
+// if (imageStrings == null) {
+// setAnimation(left, false)
+// setAnimation(right, false)
+// }
+// }
+//
+// private fun setAnimation(view: ImageView, up: Boolean) {
+// val start: Float
+// val finish: Float
+// if (up) {
+// start = 0.2f
+// finish = 1.0f
+// } else {
+// start = 1.0f
+// finish = 0.2f
+// }
+// val animation1 = AlphaAnimation(start, finish)
+// animation1.duration = 500
+// animation1.fillAfter = true
+// view.alpha = finish
+// }
+//
+// internal inner class SlidingImageViewAdapter : PagerAdapter() {
+//
+// override fun getCount(): Int = list?.size ?: 0
+//
+// override fun destroyItem(container: ViewGroup, position: Int, item: Any) {
+// container.removeView(item as View?)
+// }
+//
+// override fun isViewFromObject(view: View, o: Any): Boolean = view == o
+//
+// override fun instantiateItem(container: ViewGroup, position: Int): Any {
+// val pagerPic: View =
+// LayoutInflater.from(context).inflate(R.layout.insurance_item, container, false)
+// setArrows()
+// if (imageStrings != null && imageStrings!!.size > 0) {
+// mainImage = pagerPic.rootView.findViewById(R.id.main_image)
+// Picasso.get().load(imageStrings!!.get(position))
+// .placeholder(R.drawable.choice_img)
+// .into(MainActivity.loadImage(mainImage))
+// }
+// container.addView(pagerPic, 0)
+// return pagerPic
+// }
+// }
+//
+//
+// init {
+// left.setOnClickListener(leftClick)
+// right.setOnClickListener(rightClick)
+// viewPager = wholeView.findViewById(R.id.view_pager)
+// delete = wholeView.findViewById(R.id.delete)
+// viewPager.addOnPageChangeListener(object : OnPageChangeListener {
+// override fun onPageScrolled(i: Int, v: Float, i1: Int) {
+// val animation1: AlphaAnimation = AlphaAnimation(0.2f, 1.0f)
+// animation1.duration = 200
+// animation1.fillAfter = true
+// delete.startAnimation(animation1)
+// }
+//
+// override fun onPageSelected(i: Int) {
+// setArrows()
+// delete.setOnClickListener { deleteDialog(i) }
+// }
+//
+// override fun onPageScrollStateChanged(i: Int) {}
+// })
+// }
+}
\ No newline at end of file
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
deleted file mode 100644
index 0dcb4b1..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ImageViewClass.java
+++ /dev/null
@@ -1,121 +0,0 @@
-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/ImageViewClass.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageViewClass.kt
new file mode 100644
index 0000000..cd33774
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/ImageViewClass.kt
@@ -0,0 +1,97 @@
+package h_mal.appttude.com.driver.Global
+
+import android.content.Intent
+import android.graphics.Bitmap
+import android.net.Uri
+import android.os.Bundle
+import android.os.Environment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+import com.github.chrisbanes.photoview.PhotoView
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.utils.DateUtils
+import java.io.File
+import java.io.FileNotFoundException
+import java.io.FileOutputStream
+import java.io.IOException
+
+
+class ImageViewClass {
+ fun open(bitmap: Bitmap?) {
+ Companion.bitmap = bitmap
+// executeFragment(ImageViewerFragment())
+ }
+
+ class ImageViewerFragment : Fragment() {
+ private lateinit var viewer: View
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ viewer = inflater.inflate(R.layout.fragment_image_viewer, container, false)
+ val fab: FloatingActionButton = viewer.findViewById(R.id.download_pic)
+ if (bitmap != null) {
+ val photoView: PhotoView = viewer.findViewById(R.id.photo_view)
+ photoView.setImageBitmap(bitmap)
+ fab.setOnClickListener(object : View.OnClickListener {
+ override fun onClick(v: View) {
+ try {
+ downloadPic()
+ } catch (e: FileNotFoundException) {
+ e.printStackTrace()
+ }
+ }
+ })
+ }
+ return viewer
+ }
+
+ override fun onResume() {
+ super.onResume()
+ (activity as AppCompatActivity?)!!.supportActionBar!!.hide()
+ requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ }
+
+ override fun onStop() {
+ super.onStop()
+ (activity as AppCompatActivity?)!!.supportActionBar!!.show()
+ requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ }
+
+ @Throws(FileNotFoundException::class)
+ private fun downloadPic() {
+ val f: File =
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ val fname: String = "driver" + DateUtils.getDateTimeStamp() + ".jpg"
+ val image: File = File(f, fname)
+ val fileOutputStream: FileOutputStream = FileOutputStream(image)
+ bitmap!!.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream)
+ try {
+ fileOutputStream.flush()
+ fileOutputStream.close()
+ val mediaScanIntent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
+ val contentUri: Uri = Uri.fromFile(image)
+ mediaScanIntent.data = contentUri
+ requireActivity().sendBroadcast(mediaScanIntent)
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+ }
+
+ companion object {
+ val IMAGE_VALUE: String = "image"
+ private var bitmap: Bitmap? = null
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 7a7ae56..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/SetApprovalDialog.java
+++ /dev/null
@@ -1,155 +0,0 @@
-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/SetApprovalDialog.kt b/app/src/main/java/h_mal/appttude/com/driver/Global/SetApprovalDialog.kt
new file mode 100644
index 0000000..611a00b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Global/SetApprovalDialog.kt
@@ -0,0 +1,115 @@
+package h_mal.appttude.com.driver.Global
+
+import android.app.Activity
+import android.app.AlertDialog
+import android.content.DialogInterface
+import android.widget.ImageView
+
+
+class SetApprovalDialog constructor(
+ var statusCode: Int,
+ private val activity: Activity,
+ private val userId: String?,
+ position: Int,
+ private val imageView: ImageView
+) {
+ private val groupNames: Array = arrayOf("Pending", "Denied", "Approved")
+ private val approvalNameString: String
+ fun init() {
+ val checkedItem: Int
+ when (statusCode) {
+ FirebaseClass.APPROVAL_PENDING -> checkedItem = 0
+ FirebaseClass.APPROVAL_DENIED -> checkedItem = 1
+ FirebaseClass.APPROVED -> checkedItem = 2
+ else -> checkedItem = -1
+ }
+ val alertBuilder: AlertDialog.Builder = AlertDialog.Builder(
+ activity
+ )
+ alertBuilder.setSingleChoiceItems(groupNames, checkedItem, singleChoiceListener)
+ // .setPositiveButton(android.R.string.ok, submit);
+ alertBuilder.create().ownerActivity
+ alertBuilder.show()
+ }
+
+ var singleChoiceListener: DialogInterface.OnClickListener =
+ object : DialogInterface.OnClickListener {
+ override fun onClick(dialog: DialogInterface, which: Int) {
+ when (which) {
+ 0 -> {
+ statusCode = FirebaseClass.APPROVAL_PENDING
+ publishStatuscode(statusCode, dialog)
+ return
+ }
+ 1 -> {
+ statusCode = FirebaseClass.APPROVAL_DENIED
+ publishStatuscode(statusCode, dialog)
+ return
+ }
+ 2 -> {
+ statusCode = FirebaseClass.APPROVED
+ publishStatuscode(statusCode, dialog)
+ return
+ }
+ }
+ }
+ }
+
+ private fun publishStatuscode(status: Int, dialog: DialogInterface) {
+
+// if (!(approvalNameString == "")) {
+// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
+// (userId)!!
+// ).child(FirebaseClass.USER_APPROVALS).child(approvalNameString)
+// .setValue(status).addOnCompleteListener { task ->
+// if (task.isSuccessful) {
+// Toast.makeText(activity, "Status change successful", Toast.LENGTH_SHORT)
+// .show()
+// imageView.setImageResource(
+// MainActivity.approvalsClass!!.setImageResource(
+// status
+// )
+// )
+// dialog.dismiss()
+// } else {
+// Toast.makeText(
+// activity,
+// "Status change unsuccessful",
+// Toast.LENGTH_SHORT
+// ).show()
+// }
+//
+// }
+// } else {
+// Toast.makeText(activity, "Could not push status", Toast.LENGTH_SHORT).show()
+// }
+ }
+
+ private fun getElement(i: Int): String {
+ var element: String = ""
+ when (i) {
+ 0 -> element =
+ FirebaseClass.DRIVER_DETAILS_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 1 -> element =
+ FirebaseClass.DRIVERS_LICENSE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 2 -> element =
+ FirebaseClass.PRIVATE_HIRE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 3 -> element =
+ FirebaseClass.VEHICLE_DETAILS_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 4 -> element =
+ FirebaseClass.INSURANCE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 5 -> element =
+ FirebaseClass.MOT_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 6 -> element =
+ FirebaseClass.LOG_BOOK_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
+ 7 -> element =
+ FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE + FirebaseClass.APPROVAL_CONSTANT
+ }
+ return element
+ }
+
+ init {
+ approvalNameString = getElement(position)
+ init()
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 26e1adc..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Global/ViewController.java
+++ /dev/null
@@ -1,32 +0,0 @@
-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/MainActivity.java b/app/src/main/java/h_mal/appttude/com/driver/MainActivity.java
deleted file mode 100644
index 2ffd32d..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/MainActivity.java
+++ /dev/null
@@ -1,397 +0,0 @@
-package h_mal.appttude.com.driver;
-
-import android.Manifest;
-import android.app.Activity;
-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.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.app.AlertDialog;
-import android.util.Log;
-import android.view.View;
-import android.support.design.widget.NavigationView;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-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 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, ViewController.ViewControllerInterface {
-
- private static String TAG = MainActivity.class.getSimpleName();
-
- public static FragmentManager fragmentManager;
- public static FirebaseAuth auth;
- public static FirebaseStorage storage;
- public static StorageReference storageReference;
- public static DatabaseReference mDatabase;
-
- 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 = {
- Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE
- };
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- 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();
-
- 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);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
- this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.addDrawerListener(toggle);
- toggle.syncState();
-
- navigationView = (NavigationView) findViewById(R.id.nav_view);
- navigationView.setNavigationItemSelectedListener(this);
- 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 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 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);
- TextView driverName = header.findViewById(R.id.driver_name);
- ImageView driverImage = header.findViewById(R.id.profileImage);
-
- if (auth != null){
- FirebaseUser user = auth.getCurrentUser();
- if (user.getEmail() != null){
- driverEmail.setText(user.getEmail());
- }
- if (user.getDisplayName() != null){
- driverName.setText(user.getDisplayName());
- }
-
- Picasso.get()
- .load(user.getPhotoUrl())
- .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();
- }
- });
-
- }
-
- @Override
- public void onBackPressed() {
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- if (drawer.isDrawerOpen(GravityCompat.START)) {
- drawer.closeDrawer(GravityCompat.START);
- } else {
- if (fragmentManager.getBackStackEntryCount() > 1) {
- 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)
- .setTitle("Leave?")
- .setMessage("Are you sure you want to exit?")
- .setNegativeButton(android.R.string.no, null)
- .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface arg0, int arg1) {
- finish();
- System.exit(0);
- }
- }).create().show();
- }
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
-
- //noinspection SimplifiableIfStatement
- if (id == R.id.action_settings) {
- return true;
- }
-
- return super.onOptionsItemSelected(item);
- }
-
- @SuppressWarnings("StatementWithEmptyBody")
- @Override
- public boolean onNavigationItemSelected(MenuItem item) {
- // Handle navigation view item clicks here.
- int id = item.getItemId();
-
- if (id == R.id.nav_camera) {
- // Handle the camera action
- executeFragment(new profileFragment());
- } else if (id == R.id.nav_gallery) {
- executeFragment(new DriverOverallFragment());
- } else if (id == R.id.nav_slideshow) {
- executeFragment(new VehicleOverallFragment());
- }
-
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- drawer.closeDrawer(GravityCompat.START);
- return true;
- }
-
- public static void verifyStoragePermissions(Activity activity) {
- // Check if we have write permission
- int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
-
- if (permission != PackageManager.PERMISSION_GRANTED) {
- // We don't have permission so prompt the user
- ActivityCompat.requestPermissions(
- activity,
- PERMISSIONS_STORAGE,
- REQUEST_EXTERNAL_STORAGE
- );
- }
- }
-
- 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/Objects/ApprovalsObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.java
deleted file mode 100644
index 38d5f0e..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.java
+++ /dev/null
@@ -1,59 +0,0 @@
-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/ApprovalsObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.kt
new file mode 100644
index 0000000..3d56389
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/ApprovalsObject.kt
@@ -0,0 +1,35 @@
+package h_mal.appttude.com.driver.Objects
+
+
+
+class ApprovalsObject {
+ var driver_details_approval: Int = 0
+ var driver_license_approval: Int = 0
+ var private_hire_approval: Int = 0
+ var vehicle_details_approval: Int = 0
+ var mot_details_approval: Int = 0
+ var insurance_details_approval: Int = 0
+ var log_book_approval: Int = 0
+ var ph_car_approval: Int = 0
+
+ constructor()
+ constructor(
+ 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: Int
+ ) {
+ 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
+ ph_car_approval = private_hire_vehicle_approval
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 4271a41..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/ArchiveObject.java
+++ /dev/null
@@ -1,56 +0,0 @@
-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/ArchiveObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/ArchiveObject.kt
new file mode 100644
index 0000000..c873651
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/ArchiveObject.kt
@@ -0,0 +1,36 @@
+package h_mal.appttude.com.driver.Objects
+
+import h_mal.appttude.com.driver.model.DriversLicenseObject
+import h_mal.appttude.com.driver.model.MotObject
+import h_mal.appttude.com.driver.model.PrivateHireObject
+import h_mal.appttude.com.driver.model.VehicleProfileObject
+import java.util.*
+
+class ArchiveObject {
+ var driver_license: HashMap? = null
+ var private_hire: HashMap? = null
+ var vehicle_details: HashMap? = null
+ var insurance_details: HashMap? = null
+ var mot_details: HashMap? = null
+ var log_book: HashMap? = null
+ var ph_car: HashMap? = null
+
+ constructor()
+ constructor(
+ driver_license: HashMap?,
+ private_hire: HashMap?,
+ vehicle_details: HashMap?,
+ insurance_details: HashMap?,
+ mot_details: HashMap?,
+ log_book: HashMap?,
+ private_hire_vehicle: HashMap?
+ ) {
+ 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.ph_car = private_hire_vehicle
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/DriverProfileObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/DriverProfileObject.java
deleted file mode 100644
index d2b0b36..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/DriverProfileObject.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package h_mal.appttude.com.driver.Objects;
-
-public class DriverProfileObject {
-
- public String driverPic;
- public String forenames;
- public String address;
- public String postcode;
- public String dob;
- public String ni;
- public String dateFirst;
-
- public DriverProfileObject() {
- }
-
- public DriverProfileObject(String driverPic, String forenames, String address,
- String postcode, String dob, String ni, String dateFirst) {
- this.driverPic = driverPic;
- this.forenames = forenames;
- this.address = address;
- this.postcode = postcode;
- this.dob = dob;
- this.ni = ni;
- this.dateFirst = dateFirst;
- }
-
- public String getDriverPic() {
- return driverPic;
- }
-
- public String getForenames() {
- return forenames;
- }
-
- public String getAddress() {
- return address;
- }
-
- public String getPostcode() {
- return postcode;
- }
-
- public String getDob() {
- return dob;
- }
-
- public String getNi() {
- return ni;
- }
-
- public String getDateFirst() {
- return dateFirst;
- }
-
-}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/Objects/DriversLicenseObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/DriversLicenseObject.java
deleted file mode 100644
index 70478d0..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/DriversLicenseObject.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package h_mal.appttude.com.driver.Objects;
-
-public class DriversLicenseObject {
-
- public String licenseImageString;
- public String licenseNumber;
- public String licenseExpiry;
-
- public DriversLicenseObject() {
- }
-
- public DriversLicenseObject(String licenseImageString, String licenseNumber, String licenseExpiry) {
- this.licenseImageString = licenseImageString;
- this.licenseNumber = licenseNumber;
- this.licenseExpiry = licenseExpiry;
- }
-
- public String getLicenseImageString() {
- return licenseImageString;
- }
-
- public String getLicenseNumber() {
- return licenseNumber;
- }
-
- public String getLicenseExpiry() {
- return licenseExpiry;
- }
-}
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
deleted file mode 100644
index 4fc907a..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package h_mal.appttude.com.driver.Objects;
-
-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/InsuranceObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.kt
new file mode 100644
index 0000000..a62dfac
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/InsuranceObject.kt
@@ -0,0 +1,9 @@
+package h_mal.appttude.com.driver.Objects
+
+
+
+data class InsuranceObject (
+ var photoStrings: MutableList? = null,
+ var insurerName: String? = null,
+ var expiryDate: String? = null
+)
\ No newline at end of file
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
deleted file mode 100644
index 43ac12e..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package h_mal.appttude.com.driver.Objects;
-
-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/LogbookObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.kt
new file mode 100644
index 0000000..c0a9e53
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/LogbookObject.kt
@@ -0,0 +1,15 @@
+package h_mal.appttude.com.driver.Objects
+
+
+
+class LogbookObject {
+ var photoString: String? = null
+ var v5cnumber: String? = null
+
+ constructor(photoString: String?, v5cnumber: String?) {
+ this.photoString = photoString
+ this.v5cnumber = v5cnumber
+ }
+
+ constructor()
+}
\ No newline at end of file
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
deleted file mode 100644
index d895221..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/MotObject.java
+++ /dev/null
@@ -1,23 +0,0 @@
-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/PrivateHireObject.java b/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireObject.java
deleted file mode 100644
index c222ead..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireObject.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package h_mal.appttude.com.driver.Objects;
-
-public class PrivateHireObject {
-
- public String phImageString;
- public String phNumber;
- public String phExpiry;
-
- public PrivateHireObject() {
- }
-
- public PrivateHireObject(String phImageString, String phNumber, String phExpiry) {
- this.phImageString = phImageString;
- this.phNumber = phNumber;
- this.phExpiry = phExpiry;
- }
-
- public String getPhImageString() {
- return phImageString;
- }
-
- public String getPhNumber() {
- return phNumber;
- }
-
- public String getPhExpiry() {
- return phExpiry;
- }
-}
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
deleted file mode 100644
index 5389b90..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireVehicleObject.java
+++ /dev/null
@@ -1,29 +0,0 @@
-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/PrivateHireVehicleObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireVehicleObject.kt
new file mode 100644
index 0000000..c3a754a
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/PrivateHireVehicleObject.kt
@@ -0,0 +1,9 @@
+package h_mal.appttude.com.driver.Objects
+
+
+
+class PrivateHireVehicleObject(
+ var phCarImageString: String? = null,
+ var phCarNumber: String? = null,
+ var phCarExpiry: String? = null
+)
\ No newline at end of file
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
deleted file mode 100644
index 9f77738..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/UserObject.java
+++ /dev/null
@@ -1,29 +0,0 @@
-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/UserObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/UserObject.kt
new file mode 100644
index 0000000..eb33dc3
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/UserObject.kt
@@ -0,0 +1,16 @@
+package h_mal.appttude.com.driver.Objects
+
+
+
+class UserObject {
+ var profileName: String? = null
+ var profileEmail: String? = null
+ var profilePicString: String? = null
+
+ constructor()
+ constructor(profileName: String?, profileEmail: String?, profilePicString: String?) {
+ this.profileName = profileName
+ this.profileEmail = profileEmail
+ this.profilePicString = profilePicString
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 3349076..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/VehicleProfileObject.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package h_mal.appttude.com.driver.Objects;
-
-public class VehicleProfileObject {
-
- public String reg;
- public String make;
- public String model;
- public String colour;
- public String keeperName;
- public String keeperAddress;
- public String keeperPostCode;
- public String startDate;
- public boolean seized;
-
- 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;
- }
-
- public String getMake() {
- return make;
- }
-
- public String getModel() {
- return model;
- }
-
- public String getColour() {
- return colour;
- }
-
- public String getKeeperName() {
- return keeperName;
- }
-
- public String getKeeperAddress() {
- return keeperAddress;
- }
-
- public String getKeeperPostCode() {
- return keeperPostCode;
- }
-
- public String getStartDate() {
- return startDate;
- }
-
- public boolean isSeized() {
- return seized;
- }
-
-}
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
deleted file mode 100644
index 62a776f..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeDriverObject.java
+++ /dev/null
@@ -1,59 +0,0 @@
-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/WholeDriverObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeDriverObject.kt
new file mode 100644
index 0000000..4bfd816
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeDriverObject.kt
@@ -0,0 +1,35 @@
+package h_mal.appttude.com.driver.Objects
+
+import h_mal.appttude.com.driver.Objects.WholeObject.DriverProfile
+import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile
+
+
+class WholeDriverObject {
+ var driver_profile: DriverProfile? = null
+ var role: String? = null
+ var archive: ArchiveObject? = null
+ var user_details: UserObject? = null
+ var vehicle_profile: VehicleProfile? = null
+ var approvalsObject: ApprovalsObject? = null
+ var driver_number: String? = null
+
+ constructor(
+ driver_profile: DriverProfile?,
+ role: String?,
+ archive: ArchiveObject?,
+ user_details: UserObject?,
+ vehicle_profile: VehicleProfile?,
+ approvalsObject: ApprovalsObject?,
+ driver_number: String?
+ ) {
+ 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
+ }
+
+ constructor()
+}
\ No newline at end of file
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
deleted file mode 100644
index 17de05a..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/DriverProfile.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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/DriverProfile.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/DriverProfile.kt
new file mode 100644
index 0000000..94cdadf
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/DriverProfile.kt
@@ -0,0 +1,24 @@
+package h_mal.appttude.com.driver.Objects.WholeObject
+
+import h_mal.appttude.com.driver.model.DriverProfileObject
+import h_mal.appttude.com.driver.model.DriversLicenseObject
+import h_mal.appttude.com.driver.model.PrivateHireObject
+
+
+class DriverProfile {
+ var driver_profile: DriverProfileObject? = null
+ var driver_license: DriversLicenseObject? = null
+ var private_hire: PrivateHireObject? = null
+
+ constructor(
+ driver_profile: DriverProfileObject?,
+ driver_license: DriversLicenseObject?,
+ private_hire: PrivateHireObject?
+ ) {
+ this.driver_profile = driver_profile
+ this.driver_license = driver_license
+ this.private_hire = private_hire
+ }
+
+ constructor()
+}
\ No newline at end of file
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
deleted file mode 100644
index 582abd0..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/MappedObject.java
+++ /dev/null
@@ -1,56 +0,0 @@
-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/MappedObject.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/MappedObject.kt
new file mode 100644
index 0000000..140ad51
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/MappedObject.kt
@@ -0,0 +1,41 @@
+package h_mal.appttude.com.driver.Objects.WholeObject
+
+import android.os.Parcel
+import android.os.Parcelable
+import h_mal.appttude.com.driver.Objects.WholeDriverObject
+
+
+class MappedObject : Parcelable {
+ var userId: String? = null
+ var wholeDriverObject: WholeDriverObject? = null
+
+ constructor(userId: String?, wholeDriverObject: WholeDriverObject?) {
+ this.userId = userId
+ this.wholeDriverObject = wholeDriverObject
+ }
+
+ constructor()
+ protected constructor(`in`: Parcel) {
+ userId = `in`.readString()
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ override fun writeToParcel(dest: Parcel, flags: Int) {
+ dest.writeString(userId)
+ }
+
+ companion object {
+ val CREATOR: Parcelable.Creator = object : Parcelable.Creator {
+ override fun createFromParcel(`in`: Parcel): MappedObject? {
+ return MappedObject(`in`)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index f02023c..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/VehicleProfile.java
+++ /dev/null
@@ -1,55 +0,0 @@
-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/Objects/WholeObject/VehicleProfile.kt b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/VehicleProfile.kt
new file mode 100644
index 0000000..b004b9b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/Objects/WholeObject/VehicleProfile.kt
@@ -0,0 +1,38 @@
+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.PrivateHireVehicleObject
+import h_mal.appttude.com.driver.model.MotObject
+import h_mal.appttude.com.driver.model.VehicleProfileObject
+
+
+class VehicleProfile {
+ var insurance_details: InsuranceObject? = null
+ var log_book: LogbookObject? = null
+ var mot_details: MotObject? = null
+ var vehicle_details: VehicleProfileObject? = null
+ var privateHireVehicleObject: PrivateHireVehicleObject? = null
+
+ constructor()
+
+ // 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;
+ // }
+ constructor(
+ insurance_details: InsuranceObject?,
+ log_book: LogbookObject?,
+ mot_details: MotObject?,
+ vehicle_details: VehicleProfileObject?,
+ private_hire_vehicle: PrivateHireVehicleObject?
+ ) {
+ this.insurance_details = insurance_details
+ this.log_book = log_book
+ this.mot_details = mot_details
+ this.vehicle_details = vehicle_details
+ privateHireVehicleObject = private_hire_vehicle
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index a3ecdb3..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ApprovalListAdapter.java
+++ /dev/null
@@ -1,305 +0,0 @@
-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/ApprovalListAdapter.kt b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ApprovalListAdapter.kt
new file mode 100644
index 0000000..13b8dac
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ApprovalListAdapter.kt
@@ -0,0 +1,205 @@
+package h_mal.appttude.com.driver.SuperUser
+
+import android.app.Activity
+import android.content.Context
+import android.util.DisplayMetrics
+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 androidx.fragment.app.Fragment
+import h_mal.appttude.com.driver.Global.FirebaseClass
+import h_mal.appttude.com.driver.Global.SetApprovalDialog
+import h_mal.appttude.com.driver.ui.driver.MainActivity
+import h_mal.appttude.com.driver.Objects.ArchiveObject
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.ui.driver.vehicleprofile.InsuranceFragment
+import h_mal.appttude.com.driver.ui.driver.driverprofile.DriverLicenseFragment
+import h_mal.appttude.com.driver.ui.driver.driverprofile.DriverProfileFragment
+import h_mal.appttude.com.driver.ui.driver.driverprofile.PrivateHireLicenseFragment
+import h_mal.appttude.com.driver.ui.driver.vehicleprofile.LogbookFragment
+import h_mal.appttude.com.driver.ui.driver.vehicleprofile.MotFragment
+import h_mal.appttude.com.driver.ui.driver.vehicleprofile.PrivateHireVehicleFragment
+import h_mal.appttude.com.driver.ui.driver.vehicleprofile.VehicleProfileFragment
+
+
+class ApprovalListAdapter(
+ val activity: Activity,
+ objects: Array
+): ArrayAdapter(activity, 0, objects) {
+
+ var mappedObject: MappedObject = objects[0]
+
+ var names: Array = arrayOf(
+ "Driver Profile",
+ "Driver License",
+ "Private Hire",
+ "Vehicle Profile",
+ "Insurance",
+ "MOT",
+ "Logbook",
+ "P/H Vehicle"
+ )
+
+
+ var approvalCode: Int = 0
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
+ var listItemView: View? = convertView
+ if (listItemView == null) {
+ listItemView = LayoutInflater.from(activity).inflate(
+ R.layout.approval_list_grid_item, parent, false
+ )
+ }
+// approvalCode = getApprovalStatusCode(position)
+// val textView: TextView = listItemView!!.findViewById(R.id.approval_text)
+// textView.text = names.get(position)
+// val imageView: ImageView = listItemView.findViewById(R.id.approval_iv)
+// imageView.setImageResource(
+// MainActivity.approvalsClass!!.setImageResource(
+// approvalCode
+// )
+// )
+// imageView.setOnClickListener {
+// SetApprovalDialog(
+// approvalCode,
+// activity,
+// mappedObject.userId,
+// position,
+// imageView
+// )
+// }
+// val archiveImage: ImageView = listItemView.findViewById(R.id.archive_icon)
+// mappedObject.wholeDriverObject?.archive?.let {
+//
+//
+// archiveImage.visibility = getArchive(
+// position,
+// it
+// )
+// archiveImage.setOnClickListener {
+// var s: String? = null
+// when (position) {
+// 1 -> s = FirebaseClass.DRIVERS_LICENSE_FIREBASE
+// 2 -> s = FirebaseClass.PRIVATE_HIRE_FIREBASE
+// 3 -> s = FirebaseClass.VEHICLE_DETAILS_FIREBASE
+// 4 -> s = FirebaseClass.INSURANCE_FIREBASE
+// 5 -> s = FirebaseClass.MOT_FIREBASE
+// 6 -> s = FirebaseClass.LOG_BOOK_FIREBASE
+// 7 -> s = FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE
+// }
+//// executeFragment(ArchiveFragment(), mappedObject.userId, s)
+// }
+// }
+// listItemView.setOnClickListener(View.OnClickListener { getFragment(position) })
+// listItemView.minimumHeight = parent.height / 4
+// listItemView.setPadding(
+// convertDpToPixel(9f, context).toInt(),
+// convertDpToPixel(9f, context).toInt(),
+// convertDpToPixel(9f, context).toInt(),
+// convertDpToPixel(9f, context).toInt()
+// )
+ return (listItemView)!!
+ }
+
+// override fun getCount(): Int {
+// return 8
+// }
+//
+// private fun getArchive(i: Int, archiveObject: ArchiveObject?): Int {
+// var o: Any? = null
+// val visible: Int
+// when (i) {
+// 0 -> { }
+// 1 -> o = archiveObject!!.driver_license
+// 2 -> o = archiveObject!!.private_hire
+// 3 -> o = archiveObject!!.vehicle_details
+// 4 -> o = archiveObject!!.insurance_details
+// 5 -> o = archiveObject!!.mot_details
+// 6 -> o = archiveObject!!.log_book
+// 7 -> o = archiveObject!!.ph_car
+// }
+// if (o != null) {
+// visible = View.VISIBLE
+// } else {
+// visible = View.GONE
+// }
+// return visible
+// }
+//
+// private fun getFragment(i: Int) {
+// lateinit var f: Fragment
+// val driverProfile by lazy { mappedObject.wholeDriverObject?.driver_profile }
+// val vehicleProfile by lazy { mappedObject.wholeDriverObject?.vehicle_profile }
+// val o: Any? = when (i) {
+// 0 -> {
+// f = DriverProfileFragment()
+// driverProfile?.driver_profile
+// }
+// 1 -> {
+// f = DriverLicenseFragment()
+// driverProfile?.driver_license
+// }
+// 2 -> {
+// f = PrivateHireLicenseFragment()
+// driverProfile?.private_hire
+// }
+// 3 -> {
+// f = VehicleProfileFragment()
+// vehicleProfile?.vehicle_details
+// }
+// 4 -> {
+// f = InsuranceFragment()
+// vehicleProfile?.insurance_details
+// }
+// 5 -> {
+// f = MotFragment()
+// vehicleProfile?.insurance_details
+// }
+// 6 -> {
+// f = LogbookFragment()
+// vehicleProfile?.log_book
+// }
+// 7 -> {
+// f = PrivateHireVehicleFragment()
+// vehicleProfile?.privateHireVehicleObject
+// }
+// else -> null
+// }
+// if (o == null) {
+//// executeFragment(f, mappedObject.userId)
+// } else {
+// MainActivity.archiveClass.openDialogArchive(
+// context, o, mappedObject.userId, f
+// )
+// }
+// }
+//
+// private fun getApprovalStatusCode(i: Int): Int {
+// val statusCode = mappedObject.wholeDriverObject?.approvalsObject?.let{
+// when (i) {
+// 0 -> it.driver_details_approval
+// 1 -> it.driver_license_approval
+// 2 -> it.private_hire_approval
+// 3 -> it.vehicle_details_approval
+// 4 -> it.insurance_details_approval
+// 5 -> it.mot_details_approval
+// 6 -> it.log_book_approval
+// 7 -> it.ph_car_approval
+// else -> FirebaseClass.NO_DATE_PRESENT
+// }
+// }
+// return statusCode ?: FirebaseClass.NO_DATE_PRESENT
+// }
+//
+// companion object {
+// fun convertDpToPixel(dp: Float, context: Context): Float {
+// return dp * (context.resources
+// .displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
+// }
+// }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/DriverStatusClass.kt b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/DriverStatusClass.kt
new file mode 100644
index 0000000..42994b5
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/DriverStatusClass.kt
@@ -0,0 +1,107 @@
+package h_mal.appttude.com.driver.SuperUser
+
+import android.app.AlertDialog
+import android.content.Context
+import android.view.View
+import androidx.cardview.widget.CardView
+
+
+class DriverStatusClass : View.OnClickListener {
+ var userId: String? = null
+ var cardView: CardView? = null
+ var context: Context? = null
+ var currentSelection: Boolean = false
+ override fun onClick(v: View) {
+ val choices: Array = arrayOf("Active", "Inactive")
+ val alertDialog: AlertDialog.Builder = AlertDialog.Builder(context)
+ var selection: Int = -1
+ if (currentSelection) {
+ selection = 0
+ } else if (!currentSelection) {
+ selection = 1
+ }
+ alertDialog.setSingleChoiceItems(
+ choices,
+ selection
+ ) { dialog, which -> }
+ alertDialog.create().show()
+ }
+
+ private fun SetStatus(status: Boolean) {
+// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE)
+// .child((userId)!!).child(FirebaseClass.DRIVER_STATUS).setValue(status)
+// .addOnCompleteListener { task ->
+// if (task.isSuccessful) {
+// cardView!!.setBackgroundColor(setStatusColour(status))
+// } else {
+// }
+// }
+ }
+
+ private fun setStatusColour(b: Boolean): Int {
+ if (b) {
+ return android.R.color.holo_green_dark
+ } else {
+ return android.R.color.holo_red_dark
+ }
+ } // public int getOverApprovalStatusCode(WholeDriverObject wholeDriverObject){
+ //
+ // if (wholeDriverObject.approvalsObject != null){
+ // ApprovalsObject approvalsObject = wholeDriverObject.approvalsObject;
+ //
+ // int[] ints = new int[]{approvalsObject.getDriver_details_approval(),
+ // approvalsObject.driver_license_approval,
+ // approvalsObject.private_hire_approval,
+ // approvalsObject.vehicle_details_approval,
+ // approvalsObject.insurance_details_approval,
+ // approvalsObject.mot_details_approval,
+ // approvalsObject.log_book_approval,
+ // approvalsObject.ph_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;
+ // }
+}
\ No newline at end of file
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
deleted file mode 100644
index e1255d6..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/ListViewSuperAdapter.java
+++ /dev/null
@@ -1,182 +0,0 @@
-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/RecyclerViewAdapter.kt b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/RecyclerViewAdapter.kt
new file mode 100644
index 0000000..89ed7ba
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/RecyclerViewAdapter.kt
@@ -0,0 +1,103 @@
+package h_mal.appttude.com.driver.SuperUser
+
+import android.app.AlertDialog
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.EditText
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.squareup.picasso.Picasso
+import h_mal.appttude.com.driver.ui.driver.MainActivity
+import h_mal.appttude.com.driver.Objects.UserObject
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
+import h_mal.appttude.com.driver.R
+
+
+class RecyclerViewAdapter constructor(var context: Context?, var objects: List?) :
+ RecyclerView.Adapter() {
+ override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): RecyclerView.ViewHolder {
+ val viewCurrent: View =
+ LayoutInflater.from(context).inflate(R.layout.list_item_layout, viewGroup, false)
+ return ViewHolderMain(viewCurrent)
+ }
+
+ override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, i: Int) {
+ val viewHolderCurrent: ViewHolderMain = viewHolder as ViewHolderMain
+ val mappedObject: MappedObject = objects!!.get(i)
+ val `object`: UserObject? = mappedObject.wholeDriverObject?.user_details
+ if (`object`!!.profilePicString != null) {
+ Picasso.get()
+ .load(`object`.profilePicString)
+ .resize(128, 128)
+ .placeholder(R.drawable.choice_img_round)
+ .into(viewHolderCurrent.profilePicImage)
+ } else {
+ viewHolderCurrent.profilePicImage.setImageResource(R.drawable.choice_img_round)
+ }
+ viewHolderCurrent.userNameTextView.setText(`object`.profileName)
+ viewHolderCurrent.userEmailTextView.setText(`object`.profileEmail)
+ if (mappedObject.wholeDriverObject?.driver_number == null) {
+ viewHolderCurrent.driverNo.text = "0"
+ } else {
+ val s: String = mappedObject.wholeDriverObject?.driver_number.toString()
+ viewHolderCurrent.driverNo.text = s
+ }
+ viewHolderCurrent.driverNo.setOnClickListener {
+ val builder: AlertDialog.Builder = AlertDialog.Builder(
+ context
+ )
+ val input: EditText = EditText(context)
+ val layout: LinearLayout = LinearLayout(context)
+ layout.orientation = LinearLayout.VERTICAL
+ layout.setPadding(28, 0, 56, 0)
+ input.setText(viewHolderCurrent.driverNo.text.toString())
+ input.setSelectAllOnFocus(true)
+ layout.addView(input)
+ builder.setTitle("Change Driver Number")
+ .setView(layout)
+ .setPositiveButton(
+ "Submit"
+ ) { dialog, which ->
+
+ }.create()
+ .show()
+ }
+// viewHolderCurrent.profileApprovalImage.setImageResource(
+// MainActivity.approvalsClass!!.getOverApprovalStatusCode(mappedObject.wholeDriverObject)
+// )
+ viewHolderCurrent.itemView.setOnClickListener {
+ val bundle: Bundle = Bundle()
+ bundle.putParcelable("mapped", mappedObject)
+// executeFragment(UserMainFragment(), bundle)
+ }
+ }
+
+ override fun getItemCount(): Int {
+ return objects!!.size
+ }
+
+ internal inner class ViewHolderMain constructor(listItemView: View) :
+ RecyclerView.ViewHolder(listItemView) {
+ var profilePicImage: ImageView
+ var userNameTextView: TextView
+ var userEmailTextView: TextView
+
+ // CardView statusCard;
+ var profileApprovalImage: ImageView
+ var driverNo: TextView
+
+ init {
+ profilePicImage = listItemView.findViewById(R.id.driverPic)
+ userNameTextView = listItemView.findViewById(R.id.username_text)
+ // statusCard = listItemView.findViewById(R.id.status_icon);
+ userEmailTextView = listItemView.findViewById(R.id.emailaddress_text)
+ profileApprovalImage = listItemView.findViewById(R.id.approval_iv)
+ driverNo = listItemView.findViewById(R.id.driver_no)
+ }
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 826cd81..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/UserMainFragment.java
+++ /dev/null
@@ -1,49 +0,0 @@
-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/UserMainFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/UserMainFragment.kt
new file mode 100644
index 0000000..6d02df9
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/UserMainFragment.kt
@@ -0,0 +1,30 @@
+package h_mal.appttude.com.driver.SuperUser
+
+import android.os.Bundle
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.GridView
+import androidx.fragment.app.Fragment
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
+import h_mal.appttude.com.driver.R
+
+
+class UserMainFragment : Fragment() {
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view: View = inflater.inflate(R.layout.fragment_user_main, container, false)
+ Log.i("UserMain", "onCreateView: height = " + view.height)
+ val mappedObject: MappedObject = requireArguments().getParcelable("mapped")
+ activity?.title = mappedObject.wholeDriverObject?.user_details?.profileName
+
+ val listView: GridView = view.findViewById(R.id.approvals_list)
+ listView.adapter = ApprovalListAdapter(requireActivity(), arrayOf(mappedObject))
+ return view
+ }
+}
\ No newline at end of file
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
deleted file mode 100644
index 61556b6..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/SuperUser/homeSuperUserFragment.java
+++ /dev/null
@@ -1,186 +0,0 @@
-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/SuperUser/homeSuperUserFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/homeSuperUserFragment.kt
new file mode 100644
index 0000000..56b67a5
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/SuperUser/homeSuperUserFragment.kt
@@ -0,0 +1,152 @@
+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.util.Log
+import android.view.*
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+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.ui.driver.MainActivity
+import h_mal.appttude.com.driver.Objects.WholeDriverObject
+import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
+import h_mal.appttude.com.driver.R
+import kotlinx.android.synthetic.main.fragment_home_super_user.*
+import java.io.IOException
+import java.util.*
+
+
+class homeSuperUserFragment : Fragment() {
+ var users: DatabaseReference? = null
+ var mappedObjectList: MutableList? = null
+ private var sharedPreferences: SharedPreferences? = null
+ private var sortOrder: Int = 0
+ private val sortDesc: Boolean = false
+ private var recyclerViewAdapter: RecyclerViewAdapter? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setHasOptionsMenu(true)
+ mappedObjectList = ArrayList()
+ users!!.addValueEventListener(valueEventListener)
+ sharedPreferences = requireActivity().getSharedPreferences("PREFS", 0)
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view: View = inflater.inflate(R.layout.fragment_home_super_user, container, false)
+
+ recycler_view.apply {
+ layoutManager = LinearLayoutManager(context)
+ recyclerViewAdapter = RecyclerViewAdapter(context, mappedObjectList)
+ adapter = recyclerViewAdapter
+ }
+
+ return view
+ }
+
+ var valueEventListener: ValueEventListener = object : ValueEventListener {
+ override fun onDataChange(snapshot: DataSnapshot) {
+ mappedObjectList!!.clear()
+ Log.i("Count ", "" + snapshot.childrenCount)
+ for (postSnapshot: DataSnapshot in snapshot.children) {
+ if ((postSnapshot.child("role").value.toString() == "driver")) {
+ mappedObjectList!!.add(
+ MappedObject(
+ postSnapshot.key, postSnapshot.getValue(
+ WholeDriverObject::class.java
+ )
+ )
+ )
+ }
+ }
+ sortDate(sortOrder, sortDesc)
+
+ }
+
+ override fun onCancelled(databaseError: DatabaseError) {
+
+ }
+ }
+
+ override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
+ inflater.inflate(R.menu.menu_calls_fragment, menu)
+ super.onCreateOptionsMenu(menu, inflater)
+ }
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ if (item.itemId == R.id.archive) {
+ val grpname: Array = arrayOf("Driver Name", "Driver Number", "Approval")
+ sortOrder = sharedPreferences!!.getInt(SORT, 0)
+ val checkedItem: Int = sortOrder
+ var compareInt = 0
+ val click = DialogInterface.OnClickListener { dialog, _ ->
+ sortDate(compareInt, false)
+ dialog.dismiss()
+ }
+ val builder: AlertDialog.Builder = AlertDialog.Builder(context)
+ builder.setTitle("Sort by:")
+ .setSingleChoiceItems(
+ grpname,
+ checkedItem
+ ) { _, pos -> compareInt = pos }
+ .setPositiveButton("Ascending", click)
+ .setNegativeButton("Descending", click)
+ .create().show()
+ }
+ return super.onOptionsItemSelected(item)
+ }
+
+ private fun sortDate(compareInt: Int, reversed: Boolean) {
+ val comparator: Comparator = object : Comparator {
+ override fun compare(o1: MappedObject, o2: MappedObject): Int {
+ when (compareInt) {
+ 0 -> return o1.wholeDriverObject?.user_details?.profileName!!.compareTo(
+ o2.wholeDriverObject?.user_details?.profileName!!
+ )
+ 1 -> {
+ var s1: String? = o1.wholeDriverObject?.driver_number
+ var s2: String? = o2.wholeDriverObject?.driver_number
+ if (o1.wholeDriverObject?.driver_number == null || (o1.wholeDriverObject!!
+ .driver_number == "0")
+ ) {
+ s1 = ";"
+ }
+ if (o2.wholeDriverObject?.driver_number == null || (o2.wholeDriverObject!!
+ .driver_number == "0")
+ ) {
+ s2 = ";"
+ }
+ return s1!!.compareTo((s2)!!)
+ }
+ else -> { throw IOException("dfdfs") }
+// 2 -> return MainActivity.approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
+// MainActivity.approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject)
+// else -> return MainActivity.approvalsClass.getOverApprovalStatusCode(
+// o1.wholeDriverObject
+// ) - MainActivity.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)
+ }
+ recyclerViewAdapter!!.notifyDataSetChanged()
+ }
+
+ companion object {
+ private val SORT: String = "SORT"
+ private val REVERSED: String = "REVERSED"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/User/LoginActivity.java b/app/src/main/java/h_mal/appttude/com/driver/User/LoginActivity.java
deleted file mode 100644
index 734e245..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/User/LoginActivity.java
+++ /dev/null
@@ -1,208 +0,0 @@
-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.support.annotation.NonNull;
-import android.support.v7.app.AppCompatActivity;
-
-import android.os.Build;
-import android.os.Bundle;
-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.Button;
-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.OnFailureListener;
-import com.google.android.gms.tasks.Task;
-import com.google.firebase.auth.AuthResult;
-import com.google.firebase.auth.FirebaseAuth;
-
-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;
-
- // UI references.
- private EditText mEmailView;
- private EditText mPasswordView;
- private View mProgressView;
- private View mLoginView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login);
-
- auth = FirebaseAuth.getInstance();
-
- // Set up the login form.
- mEmailView = findViewById(R.id.email);
-
- mPasswordView = (EditText) findViewById(R.id.password);
- mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
- if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
- attemptLogin();
- return true;
- }
- return false;
- }
- });
-
-
- Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
- mEmailSignInButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- attemptLogin();
- }
- });
-
- mProgressView = findViewById(R.id.login_progress);
- mLoginView = findViewById(R.id.email_login_form);
-
- TextView register = findViewById(R.id.register_button);
- register.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getApplication(),RegisterActivity.class);
- 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
- * errors are presented and no actual login attempt is made.
- */
- private void attemptLogin() {
- if (auth == null) {
- Toast.makeText(this, "Login invalid", Toast.LENGTH_SHORT).show();
- return;
- }
-
- // Reset errors.
- mEmailView.setError(null);
- mPasswordView.setError(null);
-
- // Store values at the time of the login attempt.
- String email = mEmailView.getText().toString();
- String password = mPasswordView.getText().toString();
-
- boolean cancel = false;
- View focusView = null;
-
- // Check for a valid password, if the user entered one.
- if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
- mPasswordView.setError(getString(R.string.error_invalid_password));
- focusView = mPasswordView;
- cancel = true;
- }
-
- // Check for a valid email address.
- if (TextUtils.isEmpty(email)) {
- mEmailView.setError(getString(R.string.error_field_required));
- focusView = mEmailView;
- cancel = true;
- } else if (!isEmailValid(email)) {
- mEmailView.setError(getString(R.string.error_invalid_email));
- focusView = mEmailView;
- cancel = true;
- }
-
- if (cancel) {
- // There was an error; don't attempt login and focus the first
- // form field with an error.
- focusView.requestFocus();
- } else {
- // Show a progress spinner, and kick off a background task to
- // perform the user login attempt.
-
- showProgress(true);
- auth.signInWithEmailAndPassword(email,password)
- .addOnCompleteListener(new OnCompleteListener() {
- @Override
- public void onComplete(@NonNull Task task) {
- showProgress(false);
- 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();
- }
-
- }
- }
- );
- }
- }
-
- private boolean isEmailValid(String email) {
- //TODO: Replace this with your own logic
- return email.contains("@");
- }
-
- private boolean isPasswordValid(String password) {
- //TODO: Replace this with your own logic
- return password.length() > 6;
- }
-
- /**
- * Shows the progress UI and hides the login form.
- */
- @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
- private void showProgress(final boolean show) {
- // 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.
-
- int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
-
- mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
- mLoginView.animate().setDuration(shortAnimTime).alpha(
- show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
- }
- });
-
- mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
- mProgressView.animate().setDuration(shortAnimTime).alpha(
- show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
- }
- });
- }
-
-
-}
-
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
deleted file mode 100644
index 5cabe1e..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/User/RegisterActivity.java
+++ /dev/null
@@ -1,161 +0,0 @@
-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
deleted file mode 100644
index 5b63689..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/User/forgotPasswordActivity.java
+++ /dev/null
@@ -1,59 +0,0 @@
-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
deleted file mode 100644
index a7d4374..0000000
--- a/app/src/main/java/h_mal/appttude/com/driver/User/profileFragment.java
+++ /dev/null
@@ -1,251 +0,0 @@
-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/application/ApplicationViewModelFactory.kt b/app/src/main/java/h_mal/appttude/com/driver/application/ApplicationViewModelFactory.kt
new file mode 100644
index 0000000..77d4103
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/application/ApplicationViewModelFactory.kt
@@ -0,0 +1,36 @@
+package h_mal.appttude.com.driver.application
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import h_mal.appttude.com.driver.data.FirebaseAuthSource
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.viewmodels.*
+
+class ApplicationViewModelFactory(
+ private val auth: FirebaseAuthSource,
+ private val database: FirebaseDatabaseSource,
+ private val storage: FirebaseStorageSource
+) : ViewModelProvider.Factory {
+
+ @Suppress("UNCHECKED_CAST")
+ override fun create(modelClass: Class): T {
+ with(modelClass){
+ return when{
+ isAssignableFrom(UserViewModel::class.java) -> UserViewModel(auth)
+ isAssignableFrom(MainViewModel::class.java) -> MainViewModel(auth, database)
+ isAssignableFrom(UpdateUserViewModel::class.java) -> UpdateUserViewModel(auth, storage)
+ isAssignableFrom(DriverLicenseViewModel::class.java) -> DriverLicenseViewModel(auth, database, storage)
+ isAssignableFrom(DriverProfileViewModel::class.java) -> DriverProfileViewModel(auth, database, storage)
+ isAssignableFrom(PrivateHireLicenseViewModel::class.java) -> PrivateHireLicenseViewModel(auth, database, storage)
+ isAssignableFrom(VehicleProfileViewModel::class.java) -> VehicleProfileViewModel(auth, database, storage)
+ isAssignableFrom(InsuranceViewModel::class.java) -> InsuranceViewModel(auth, database, storage)
+ isAssignableFrom(MotViewModel::class.java) -> MotViewModel(auth, database, storage)
+ isAssignableFrom(LogbookViewModel::class.java) -> LogbookViewModel(auth, database, storage)
+ isAssignableFrom(PrivateHireVehicleViewModel::class.java) -> PrivateHireVehicleViewModel(auth, database, storage)
+ else -> throw IllegalArgumentException("Unknown ViewModel class")
+ } as T
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/application/DriverApplication.kt b/app/src/main/java/h_mal/appttude/com/driver/application/DriverApplication.kt
new file mode 100644
index 0000000..0b6e77f
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/application/DriverApplication.kt
@@ -0,0 +1,25 @@
+package h_mal.appttude.com.driver.application
+
+import android.app.Application
+import h_mal.appttude.com.driver.data.FirebaseAuthSource
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import org.kodein.di.Kodein
+import org.kodein.di.KodeinAware
+import org.kodein.di.android.x.androidXModule
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.instance
+import org.kodein.di.generic.provider
+import org.kodein.di.generic.singleton
+
+class DriverApplication : Application(), KodeinAware{
+
+ // Kodein aware to initialise the classes used for DI
+ override val kodein = Kodein.lazy {
+ import(androidXModule(this@DriverApplication))
+ bind() from singleton { FirebaseAuthSource() }
+ bind() from singleton { FirebaseDatabaseSource() }
+ bind() from singleton { FirebaseStorageSource() }
+ bind() from provider { ApplicationViewModelFactory(instance(), instance(), instance()) }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt b/app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt
new file mode 100644
index 0000000..0f59ad4
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt
@@ -0,0 +1,123 @@
+package h_mal.appttude.com.driver.base
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams
+import android.view.ViewGroup.LayoutParams.*
+import androidx.activity.viewModels
+import androidx.appcompat.app.AppCompatActivity
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
+import h_mal.appttude.com.driver.data.ViewState
+import h_mal.appttude.com.driver.utils.displayToast
+import h_mal.appttude.com.driver.utils.hide
+import h_mal.appttude.com.driver.utils.show
+import h_mal.appttude.com.driver.utils.triggerAnimation
+import org.kodein.di.KodeinAware
+import org.kodein.di.android.kodein
+import org.kodein.di.generic.instance
+
+
+abstract class BaseActivity : AppCompatActivity(), KodeinAware {
+
+ private lateinit var loadingView: View
+
+ abstract fun getViewModel(): V?
+ abstract val layoutId: Int
+
+ override val kodein by kodein()
+ val factory by instance()
+
+ inline fun createLazyViewModel(): Lazy = viewModels { factory }
+ inline fun createViewModel(): VM =
+ ViewModelProvider(viewModelStore, factory).get(VM::class.java)
+
+
+ private var loading: Boolean = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configureObserver()
+ setContentView(layoutId)
+ }
+
+ /**
+ * Creates a loading view which to be shown during async operations
+ *
+ * #setOnClickListener(null) is an ugly work around to prevent under being clicked during
+ * loading
+ */
+ private fun instantiateLoadingView(){
+ loadingView = layoutInflater.inflate(R.layout.progress_layout, null)
+ loadingView.setOnClickListener(null)
+ addContentView(loadingView, LayoutParams(MATCH_PARENT, MATCH_PARENT))
+
+ loadingView.hide()
+ }
+
+ override fun onStart() {
+ super.onStart()
+ instantiateLoadingView()
+ }
+
+ fun startActivity(activity: Class) {
+ val intent = Intent(this, activity)
+ startActivity(intent)
+ }
+
+ /**
+ * Called in case of success or some data emitted from the liveData in viewModel
+ */
+ open fun onStarted() {
+ loadingView.fadeIn()
+ loading = true
+ }
+
+ /**
+ * Called in case of success or some data emitted from the liveData in viewModel
+ */
+ open fun onSuccess(data: Any?) {
+ loadingView.fadeOut()
+ loading = false
+ }
+
+ /**
+ * Called in case of failure or some error emitted from the liveData in viewModel
+ */
+ open fun onFailure(error: String?) {
+ error?.let { displayToast(it) }
+ loadingView.fadeOut()
+ loading = false
+ }
+
+ private fun configureObserver() {
+ getViewModel()?.uiState?.observe(this, Observer {
+ when (it) {
+ is ViewState.HasStarted -> onStarted()
+ is ViewState.HasData<*> -> onSuccess(it.data.getContentIfNotHandled())
+ is ViewState.HasError -> onFailure(it.error.getContentIfNotHandled())
+ }
+ })
+ }
+
+ private fun View.fadeIn() = apply {
+ show()
+ triggerAnimation(R.anim.nav_default_enter_anim) {}
+ }
+
+ private fun View.fadeOut() = apply {
+ hide()
+ triggerAnimation(R.anim.nav_default_exit_anim) {}
+ }
+
+
+ override fun onBackPressed() {
+ if (!loading) super.onBackPressed()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt
new file mode 100644
index 0000000..c8cade6
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt
@@ -0,0 +1,145 @@
+package h_mal.appttude.com.driver.base
+
+import android.app.Activity
+import android.content.ClipData
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.viewModels
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModel
+import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
+import h_mal.appttude.com.driver.data.ViewState
+import h_mal.appttude.com.driver.utils.PermissionsUtils
+import org.kodein.di.KodeinAware
+import org.kodein.di.android.x.kodein
+import org.kodein.di.generic.instance
+
+const val IMAGE_SELECT_REQUEST_CODE = 401
+abstract class BaseFragment : Fragment(), KodeinAware {
+
+ var mActivity: BaseActivity? = null
+ abstract fun getViewModel(): V
+ abstract fun getLayoutId(): Int
+
+ private var multipleImage: Boolean = false
+
+ fun setImageSelectionAsMultiple(){
+ multipleImage = true
+ }
+
+ override val kodein by kodein()
+ val factory by instance()
+
+ inline fun getFragmentViewModel(): Lazy = viewModels { factory }
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? = inflater.inflate(getLayoutId(), container, false)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+ mActivity = activity as BaseActivity
+ configureObserver()
+ }
+
+ /**
+ * Called in case of starting operation liveData in viewModel
+ */
+ open fun onStarted() {
+ mActivity?.onStarted()
+ }
+
+ /**
+ * Called in case of success or some data emitted from the liveData in viewModel
+ */
+ open fun onSuccess(data: Any?) {
+ mActivity?.onSuccess(data)
+ }
+
+ /**
+ * Called in case of failure or some error emitted from the liveData in viewModel
+ */
+ open fun onFailure(error: String?) {
+ mActivity?.onFailure(error)
+ }
+
+ private fun configureObserver() {
+ getViewModel().uiState.observe(viewLifecycleOwner, Observer {
+ when (it) {
+ is ViewState.HasStarted -> onStarted()
+ is ViewState.HasData<*> -> onSuccess(it.data.getContentIfNotHandled())
+ is ViewState.HasError -> onFailure(it.error.getContentIfNotHandled())
+ }
+ })
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK){
+ when(requestCode){
+ IMAGE_SELECT_REQUEST_CODE -> {
+ data?.clipData?.convertToList()?.let { clip ->
+ val list = clip.takeIf { it.size > 10 }?.let{
+ clip.subList(0, 9)
+ } ?: clip
+ onImageGalleryResult(list)
+ return
+ }
+ onImageGalleryResult(data?.data)
+ }
+ }
+
+ }
+ }
+
+ private fun ClipData.convertToList(): List {
+ val list = mutableListOf()
+ for (i in 0 until itemCount) {
+ val item: ClipData.Item = getItemAt(i)
+ val uri = item.uri
+ list.add(uri)
+ }
+ return list.toList()
+ }
+
+ /**
+ * Pair with {@link #Fragment.onRequestPermissionsResult}
+ * @param ourRequestCode
+ * @param requestCode
+ * checks that ourRequestCode was granted
+ * sends callback with
+ * @param permissionGranted
+ */
+ fun onPermissionRequest(
+ requestCode: Int, ourRequestCode: Int, grantResults: IntArray,
+ permissionGranted: () -> Unit
+ ){
+ when (requestCode) {
+ ourRequestCode -> {
+ if (PermissionsUtils.isGranted(grantResults)) {
+ permissionGranted.invoke()
+ }
+ return
+ }
+ }
+ }
+
+ open fun onImageGalleryResult(imageUri: Uri?){ }
+ open fun onImageGalleryResult(imageUris: List?){ }
+
+ fun openGalleryForImage() {
+ val intent = Intent(Intent.ACTION_PICK)
+ intent.type = "image/*"
+ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multipleImage);
+ startActivityForResult(intent, IMAGE_SELECT_REQUEST_CODE)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/base/BaseViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/base/BaseViewModel.kt
new file mode 100644
index 0000000..01e5a38
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/base/BaseViewModel.kt
@@ -0,0 +1,42 @@
+package h_mal.appttude.com.driver.base
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import h_mal.appttude.com.driver.data.ViewState
+import h_mal.appttude.com.driver.utils.Event
+
+abstract class BaseViewModel: ViewModel(){
+ open val uiState: MutableLiveData = MutableLiveData()
+
+ fun onStart() {
+ uiState.postValue(ViewState.HasStarted)
+ }
+
+ fun onSuccess(result: T) {
+ uiState.postValue(ViewState.HasData(Event(result)))
+ }
+
+ protected fun onError(error: String) {
+ uiState.postValue(ViewState.HasError(Event(error)))
+ }
+
+ suspend fun doTryOperation(
+ defaultErrorMessage: String?,
+ operation: suspend () -> Unit
+ ){
+ try {
+ onStart()
+ operation()
+ }catch (e: Exception){
+ e.printStackTrace()
+ e.message?.let {
+ onError(it)
+ return
+ }
+ defaultErrorMessage?.let {
+ onError(it)
+ return
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/base/DataSubmissionBaseFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/base/DataSubmissionBaseFragment.kt
new file mode 100644
index 0000000..d605eb8
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/base/DataSubmissionBaseFragment.kt
@@ -0,0 +1,78 @@
+package h_mal.appttude.com.driver.base
+
+import android.Manifest
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import android.widget.EditText
+import androidx.core.widget.doAfterTextChanged
+import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEditText
+
+private const val IMAGE_PERMISSION_RESULT = 402
+abstract class DataSubmissionBaseFragment, T: Any> : BaseFragment(){
+
+ var picUri: Uri? = null
+
+ abstract override fun getViewModel(): V
+ abstract var model: T
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ getViewModel().getDataFromDatabase()
+ }
+
+
+ @Suppress("UNCHECKED_CAST")
+ override fun onSuccess(data: Any?) {
+ super.onSuccess(data)
+
+ data?.let {
+ if (it::class.java == model::class.java)
+ setFields(data as T)
+ }
+ }
+
+ open fun setFields(data: T){
+ model = data
+ }
+
+ open fun submit(){
+
+ }
+
+ fun openGalleryWithPermissionRequest(){
+ if (askForPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, IMAGE_PERMISSION_RESULT)) {
+ openGalleryForImage()
+ }
+ }
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int,
+ permissions: Array,
+ grantResults: IntArray
+ ) = onPermissionRequest(requestCode, IMAGE_PERMISSION_RESULT, grantResults) {
+ openGalleryForImage()
+ }
+
+ fun validateEditTexts(vararg editTexts: EditText): Boolean{
+ editTexts.forEach {
+ if (it.text.isNullOrBlank()){
+ it.validateEditText()
+ return false
+ }
+ }
+ return true
+ }
+
+ fun EditText.setTextOnChange(output: (m: String) -> Unit){
+ doAfterTextChanged {
+ output(text.toString())
+ }
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?){
+ super.onImageGalleryResult(imageUri)
+ picUri = imageUri
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/base/DataSubmissionBaseViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/base/DataSubmissionBaseViewModel.kt
new file mode 100644
index 0000000..bd37522
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/base/DataSubmissionBaseViewModel.kt
@@ -0,0 +1,86 @@
+package h_mal.appttude.com.driver.base
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.data.FirebaseCompletion
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.utils.Coroutines.io
+import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
+import h_mal.appttude.com.driver.utils.getDataFromDatabaseRef
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
+import java.io.IOException
+
+abstract class DataSubmissionBaseViewModel(
+ private val database: FirebaseDatabaseSource,
+ private val storage: FirebaseStorageSource?
+) : BaseViewModel() {
+
+ abstract val databaseRef: DatabaseReference
+ abstract val storageRef: StorageReference?
+ abstract val objectName: String
+
+ abstract fun getDataFromDatabase(): Job
+ open fun setDataInDatabase(data: T, localImageUri: Uri?): Job = Job()
+ open fun setDataInDatabase(data: T, localImageUris: List?): Job = Job()
+ open fun setDataInDatabase(data: T) { }
+
+ inline fun getDataClass() = io {
+ doTryOperation("Failed to retrieve $objectName") {
+ val data = databaseRef.getDataFromDatabaseRef()
+ onSuccess(data ?: FirebaseCompletion.Default)
+ }
+ }
+
+ suspend fun postDataToDatabase(data: T) {
+ val driversLicense = database.postToDatabaseRed(databaseRef, data)
+ onSuccess(driversLicense)
+ }
+
+ private suspend fun uploadImage(localImageUri: Uri?): String? {
+ val imageString = StringBuilder()
+ .append(getDateTimeStamp())
+ .append("_")
+ .append(objectName.replace(" ", "_"))
+ .toString()
+
+ return localImageUri?.let { uri ->
+ storageRef?.let {
+ val image = storage?.uploadImage(uri, it, imageString)
+ image.toString()
+ }
+ }
+ }
+
+ suspend fun getImageUrl(localImageUri: Uri?, imageUrl: String?): String {
+ if (localImageUri == null && imageUrl.isNullOrBlank()){
+ throw IOException("No image is selected")
+ }
+
+ return uploadImage(localImageUri) ?: imageUrl!!
+ }
+
+ suspend fun getImageUrls(localImageUris: List?): List {
+ if (localImageUris.isNullOrEmpty()){
+ throw IOException("No images is selected")
+ }
+ val listOfUrls = mutableListOf()
+ localImageUris.forEach { uri ->
+ uploadImage(uri)?.let {
+ listOfUrls.add(it)
+ }
+ }
+
+ return listOfUrls
+ }
+
+ suspend fun Iterable.mapSuspend(transform: suspend (T) -> R): List =
+ coroutineScope { map { t: T -> async { transform(t) } }.map { it.await() } }
+
+
+ suspend fun Iterable.mapIndexSuspend(transform: suspend (index: Int, T) -> R) =
+ coroutineScope { mapIndexed { index: Int, t: T -> async { transform(index, t) } }.map { it.await() } }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/DataFieldState.kt b/app/src/main/java/h_mal/appttude/com/driver/data/DataFieldState.kt
new file mode 100644
index 0000000..81342da
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/DataFieldState.kt
@@ -0,0 +1,7 @@
+package h_mal.appttude.com.driver.data
+
+sealed class DataFieldState {
+ object DefaultState : DataFieldState()
+ object NonUserStateUpdated: DataFieldState()
+ object UserUpdateState: DataFieldState()
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/EventResponse.kt b/app/src/main/java/h_mal/appttude/com/driver/data/EventResponse.kt
new file mode 100644
index 0000000..c96c91e
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/EventResponse.kt
@@ -0,0 +1,9 @@
+package h_mal.appttude.com.driver.data
+
+import com.google.firebase.database.DataSnapshot
+import com.google.firebase.database.DatabaseError
+
+sealed class EventResponse {
+ data class Changed(val snapshot: DataSnapshot): EventResponse()
+ data class Cancelled(val error: DatabaseError): EventResponse()
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseAuthSource.kt b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseAuthSource.kt
new file mode 100644
index 0000000..8d68a30
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseAuthSource.kt
@@ -0,0 +1,48 @@
+package h_mal.appttude.com.driver.data
+
+import android.net.Uri
+import com.google.android.gms.tasks.Task
+import com.google.firebase.auth.*
+
+class FirebaseAuthSource: FirebaseAuthentication{
+ private val auth = FirebaseAuth.getInstance()
+
+ override fun getUid(): String? = auth.uid
+
+ override fun getUser(): FirebaseUser? = auth.currentUser
+
+ override fun signIn(email: String, password: String): Task =
+ auth.signInWithEmailAndPassword(email, password)
+
+ override fun registerUser(email: String, password: String): Task =
+ auth.createUserWithEmailAndPassword(email, password)
+
+ override fun logOut() = auth.signOut()
+
+ override fun forgotPassword(email: String): Task = auth.sendPasswordResetEmail(email)
+
+ override fun updateProfile(
+ name: String?,
+ profilePic: Uri?
+ ): Task? {
+ val profileUpdates = UserProfileChangeRequest.Builder().apply {
+ name?.let { setDisplayName(it) }
+ profilePic?.let { setPhotoUri(it) }
+ }.build()
+
+ return getUser()?.updateProfile(profileUpdates)
+ }
+
+ override fun reauthenticate(
+ email: String,
+ password: String
+ ): Task? {
+ val credential = EmailAuthProvider.getCredential(email, password)
+
+ return getUser()?.reauthenticate(credential)
+ }
+
+ override fun updateEmail(email: String): Task? = getUser()?.updateEmail(email)
+ override fun updatePassword(password: String): Task? = getUser()?.updatePassword(password)
+ override fun deleteProfile() = getUser()?.delete()
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseAuthentication.kt b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseAuthentication.kt
new file mode 100644
index 0000000..8c038ff
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseAuthentication.kt
@@ -0,0 +1,26 @@
+package h_mal.appttude.com.driver.data
+
+import android.net.Uri
+import com.google.android.gms.tasks.Task
+import com.google.firebase.auth.AuthResult
+import com.google.firebase.auth.FirebaseUser
+
+interface FirebaseAuthentication{
+ fun getUid(): String?
+ fun getUser(): FirebaseUser?
+ fun signIn(email: String, password: String): Task
+ fun registerUser(email: String, password: String): Task
+ fun logOut()
+ fun forgotPassword(email: String): Task
+ fun updateProfile(
+ name: String?,
+ profilePic: Uri?
+ ): Task?
+ fun reauthenticate(
+ email: String,
+ password: String
+ ): Task?
+ fun updateEmail(email: String): Task?
+ fun updatePassword(password: String): Task?
+ fun deleteProfile(): Task?
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseCompletion.kt b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseCompletion.kt
new file mode 100644
index 0000000..bcf9187
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseCompletion.kt
@@ -0,0 +1,7 @@
+package h_mal.appttude.com.driver.data
+
+sealed class FirebaseCompletion{
+ object Default: FirebaseCompletion()
+ data class Changed(val message: String): FirebaseCompletion()
+ data class ProfileDeleted(val message: String): FirebaseCompletion()
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseDatabaseSource.kt b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseDatabaseSource.kt
new file mode 100644
index 0000000..113da92
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseDatabaseSource.kt
@@ -0,0 +1,57 @@
+package h_mal.appttude.com.driver.data
+
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.database.FirebaseDatabase
+import kotlinx.coroutines.tasks.await
+
+const val USER_CONST = "user"
+const val PROFILE_ROLE ="role"
+const val DRIVER_NUMBER = "driver_number"
+const val USER_DETAILS = "user_details"
+const val VEHICLE_PROFILE = "vehicle_profile"
+const val DRIVER_PROFILE = "driver_profile"
+const val APPROVALS = "approvalsObject"
+const val DRIVER_DETAILS = "driver_details"
+const val DRIVER_LICENSE = "driver_license"
+const val PRIVATE_HIRE = "private_hire"
+const val INSURANCE_DETAILS = "insurance_details"
+const val LOG_BOOK = "log_book"
+const val MOT = "mot_details"
+const val PRIVATE_HIRE_VEHICLE = "private_hire_vehicle"
+const val VEHICLE_DETAILS = "vehicle_details"
+const val ARCHIVE = "archive"
+class FirebaseDatabaseSource {
+ private val database = FirebaseDatabase.getInstance()
+
+ suspend fun postToDatabaseRed(ref: DatabaseReference, data: T) : T{
+ ref.setValue(data).await()
+ return data
+ }
+
+ fun getUserRef(uid: String) = database.getReference(USER_CONST).child(uid)
+ fun getUserDetailsRef(uid: String) = getUserRef(uid).child(USER_DETAILS)
+ fun getVehicleRef(uid: String) = getUserRef(uid).child(VEHICLE_PROFILE)
+ fun getDriverRef(uid: String) = getUserRef(uid).child(DRIVER_PROFILE)
+ fun getApprovalsRef(uid: String) = getUserRef(uid).child(APPROVALS)
+ fun getArchiveRef(uid: String) = getUserRef(uid).child(ARCHIVE)
+ fun getUserRoleRef(uid: String) = getUserRef(uid).child(PROFILE_ROLE)
+ fun getDriverNumberRef(uid: String) = getUserRef(uid).child(DRIVER_NUMBER)
+
+ fun getDriverDetailsRef(uid: String) = getDriverRef(uid).child(DRIVER_DETAILS)
+ fun getDriverLicenseRef(uid: String) = getDriverRef(uid).child(DRIVER_LICENSE)
+ fun getPrivateHireRef(uid: String) = getDriverRef(uid).child(PRIVATE_HIRE)
+
+ fun getInsuranceDetailsRef(uid: String) = getVehicleRef(uid).child(INSURANCE_DETAILS)
+ fun getLogbookRef(uid: String) = getVehicleRef(uid).child(LOG_BOOK)
+ fun getMotDetailsRef(uid: String) = getVehicleRef(uid).child(MOT)
+ fun getPrivateHireVehicleRef(uid: String) = getVehicleRef(uid).child(PRIVATE_HIRE_VEHICLE)
+ fun getVehicleDetailsRef(uid: String) = getVehicleRef(uid).child(VEHICLE_DETAILS)
+
+ fun getDriverLicenseArchiveRef(uid: String) = getArchiveRef(uid).child(DRIVER_LICENSE)
+ fun getArchiveInsuranceDetailsRef(uid: String) = getArchiveRef(uid).child(INSURANCE_DETAILS)
+ fun getArchiveLogbookRef(uid: String) = getArchiveRef(uid).child(LOG_BOOK)
+ fun getArchiveMotDetailsRef(uid: String) = getArchiveRef(uid).child(MOT)
+ fun getArchivePrivateHireLicenseRef(uid: String) = getArchiveRef(uid).child(PRIVATE_HIRE)
+ fun getArchivePrivateHireVehicleRef(uid: String) = getArchiveRef(uid).child(PRIVATE_HIRE_VEHICLE)
+ fun getArchiveVehicleDetailsRef(uid: String) = getArchiveRef(uid).child(VEHICLE_DETAILS)
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseStorageSource.kt b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseStorageSource.kt
new file mode 100644
index 0000000..d3c5961
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/FirebaseStorageSource.kt
@@ -0,0 +1,35 @@
+package h_mal.appttude.com.driver.data
+
+import android.net.Uri
+import com.google.firebase.storage.FirebaseStorage
+import com.google.firebase.storage.StorageReference
+import kotlinx.coroutines.tasks.await
+
+private const val IMAGE_CONST = "images"
+const val PROFILE_SREF = "user_profile"
+const val DRIVERS_LICENSE_SREF = "drivers_license"
+const val INSURANCE_SREF = "insurance_details"
+const val LOG_BOOK_SREF = "log_book"
+const val MOT_SREF = "mot_Details"
+const val PRIVATE_HIRE_SREF = "private_hire"
+const val PRIVATE_HIRE_VEHICLE_SREF = "private_hire_vehicle"
+class FirebaseStorageSource {
+ private val storage = FirebaseStorage.getInstance()
+ private val storageRef: StorageReference by lazy { storage.reference }
+
+ suspend fun uploadImage(localFilePath: Uri, path: StorageReference, filename: String): Uri {
+ val ref = path.child("$filename.jpg")
+ return ref.putFile(localFilePath)
+ .continueWithTask { ref.downloadUrl }
+ .await()
+ }
+
+ private fun usersImagesStorageRef(uid: String) = storageRef.child(IMAGE_CONST).child(uid)
+ fun profileImageStorageRef(uid: String) = usersImagesStorageRef(uid).child(PROFILE_SREF)
+ fun driversLicenseStorageRef(uid: String) = usersImagesStorageRef(uid).child(DRIVERS_LICENSE_SREF)
+ fun insuranceStorageRef(uid: String) = usersImagesStorageRef(uid).child(INSURANCE_SREF)
+ fun logBookStorageRef(uid: String) = usersImagesStorageRef(uid).child(LOG_BOOK_SREF)
+ fun motStorageRef(uid: String) = usersImagesStorageRef(uid).child(MOT_SREF)
+ fun privateHireStorageRef(uid: String) = usersImagesStorageRef(uid).child(PRIVATE_HIRE_SREF)
+ fun privateHireVehicleStorageRef(uid: String) = usersImagesStorageRef(uid).child(PRIVATE_HIRE_VEHICLE_SREF)
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/Roles.kt b/app/src/main/java/h_mal/appttude/com/driver/data/Roles.kt
new file mode 100644
index 0000000..2f319d8
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/Roles.kt
@@ -0,0 +1,6 @@
+package h_mal.appttude.com.driver.data
+
+enum class Roles(name: String) {
+ Driver("driver"),
+ SuperUser("super_user")
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/data/ViewState.kt b/app/src/main/java/h_mal/appttude/com/driver/data/ViewState.kt
new file mode 100644
index 0000000..56f22a5
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/data/ViewState.kt
@@ -0,0 +1,10 @@
+package h_mal.appttude.com.driver.data
+
+import h_mal.appttude.com.driver.utils.Event
+
+
+sealed class ViewState {
+ object HasStarted : ViewState()
+ class HasData(val data: Event) : ViewState()
+ class HasError(val error: Event) : ViewState()
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/dialogs/ExitDialog.kt b/app/src/main/java/h_mal/appttude/com/driver/dialogs/ExitDialog.kt
new file mode 100644
index 0000000..2012112
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/dialogs/ExitDialog.kt
@@ -0,0 +1,24 @@
+package h_mal.appttude.com.driver.dialogs
+
+import android.app.Activity
+import android.app.AlertDialog
+import androidx.fragment.app.Fragment
+import kotlin.system.exitProcess
+
+object ExitDialog{
+
+ fun Activity.displayExitDialog() = AlertDialog.Builder(this)
+ .setTitle("Leave?")
+ .setMessage("Are you sure you want to exit?")
+ .setNegativeButton(android.R.string.no, null)
+ .setPositiveButton(
+ android.R.string.yes
+ ) { _, _ ->
+ this.finish()
+ exitProcess(0)
+ }
+ .create()
+ .show()
+
+ fun Fragment.displayExitDialog() = requireActivity().displayExitDialog()
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/model/DriverProfileObject.kt b/app/src/main/java/h_mal/appttude/com/driver/model/DriverProfileObject.kt
new file mode 100644
index 0000000..46cecff
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/model/DriverProfileObject.kt
@@ -0,0 +1,13 @@
+package h_mal.appttude.com.driver.model
+
+
+
+data class DriverProfileObject(
+ var driverPic: String? = null,
+ var forenames: String? = null,
+ var address: String? = null,
+ var postcode: String? = null,
+ var dob: String? = null,
+ var ni: String? = null,
+ var dateFirst: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/model/DriversLicenseObject.kt b/app/src/main/java/h_mal/appttude/com/driver/model/DriversLicenseObject.kt
new file mode 100644
index 0000000..9b6a7e5
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/model/DriversLicenseObject.kt
@@ -0,0 +1,8 @@
+package h_mal.appttude.com.driver.model
+
+
+data class DriversLicenseObject(
+ var licenseImageString: String? = null,
+ var licenseNumber: String? = null,
+ var licenseExpiry: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/model/MotObject.kt b/app/src/main/java/h_mal/appttude/com/driver/model/MotObject.kt
new file mode 100644
index 0000000..0cfd606
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/model/MotObject.kt
@@ -0,0 +1,8 @@
+package h_mal.appttude.com.driver.model
+
+
+
+data class MotObject(
+ var motImageString: String? = null,
+ var motExpiry: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/model/PrivateHireObject.kt b/app/src/main/java/h_mal/appttude/com/driver/model/PrivateHireObject.kt
new file mode 100644
index 0000000..66e707c
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/model/PrivateHireObject.kt
@@ -0,0 +1,9 @@
+package h_mal.appttude.com.driver.model
+
+
+
+data class PrivateHireObject (
+ var phImageString: String? = null,
+ var phNumber: String? = null,
+ var phExpiry: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/model/VehicleProfileObject.kt b/app/src/main/java/h_mal/appttude/com/driver/model/VehicleProfileObject.kt
new file mode 100644
index 0000000..d82fd7d
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/model/VehicleProfileObject.kt
@@ -0,0 +1,15 @@
+package h_mal.appttude.com.driver.model
+
+
+
+data class VehicleProfileObject(
+ var reg: String? = null,
+ var make: String? = null,
+ var model: String? = null,
+ var colour: String? = null,
+ var keeperName: String? = null,
+ var keeperAddress: String? = null,
+ var keeperPostCode: String? = null,
+ var startDate: String? = null,
+ var isSeized: Boolean = false
+)
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/DriverOverallFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/DriverOverallFragment.kt
new file mode 100644
index 0000000..ceb8dad
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/DriverOverallFragment.kt
@@ -0,0 +1,31 @@
+package h_mal.appttude.com.driver.ui.driver
+
+import android.os.Bundle
+import android.view.View
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.navigateTo
+import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
+
+import kotlinx.android.synthetic.main.fragment_driver_overall.*
+
+class DriverOverallFragment : BaseFragment() {
+
+ private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
+ override fun getViewModel(): DriverLicenseViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_driver_overall
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ driver_prof.setOnClickListener {
+ it.navigateTo(R.id.to_driverProfileFragment)
+ }
+ private_hire.setOnClickListener {
+ it.navigateTo(R.id.to_privateHireLicenseFragment2)
+ }
+ drivers_license.setOnClickListener {
+ it.navigateTo(R.id.to_driverLicenseFragment)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/HomeFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/HomeFragment.kt
new file mode 100644
index 0000000..57b22f7
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/HomeFragment.kt
@@ -0,0 +1,31 @@
+package h_mal.appttude.com.driver.ui.driver
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.utils.navigateTo
+
+import kotlinx.android.synthetic.main.fragment_home_driver.*
+
+
+class HomeFragment : Fragment() {
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? = inflater.inflate(R.layout.fragment_home_driver, container, false)
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ driver.setOnClickListener {
+ view.navigateTo(R.id.to_driverOverallFragment)
+ }
+ car.setOnClickListener {
+ view.navigateTo(R.id.to_vehicleOverallFragment)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/MainActivity.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/MainActivity.kt
new file mode 100644
index 0000000..9682bcc
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/MainActivity.kt
@@ -0,0 +1,112 @@
+package h_mal.appttude.com.driver.ui.driver
+
+import android.Manifest
+import android.graphics.Bitmap
+import android.graphics.drawable.Drawable
+import android.os.Bundle
+import android.view.MenuItem
+import android.view.View
+import android.widget.ImageView
+import androidx.core.view.GravityCompat
+import androidx.navigation.NavController
+import androidx.navigation.findNavController
+import androidx.navigation.ui.AppBarConfiguration
+import androidx.navigation.ui.navigateUp
+import androidx.navigation.ui.setupActionBarWithNavController
+import androidx.navigation.ui.setupWithNavController
+import com.google.android.material.navigation.NavigationView
+import com.google.firebase.auth.FirebaseUser
+import com.squareup.picasso.Picasso.LoadedFrom
+import com.squareup.picasso.Target
+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.R
+import h_mal.appttude.com.driver.base.BaseActivity
+import h_mal.appttude.com.driver.dialogs.ExitDialog.displayExitDialog
+import h_mal.appttude.com.driver.ui.user.LoginActivity
+import h_mal.appttude.com.driver.utils.ActivityIntentBuilder.createIntent
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.MainViewModel
+import kotlinx.android.synthetic.main.activity_main.*
+import kotlinx.android.synthetic.main.app_bar_main.*
+import kotlinx.android.synthetic.main.nav_header_main.view.*
+
+
+class MainActivity : BaseActivity(),
+ NavigationView.OnNavigationItemSelectedListener {
+
+ private val vm by createLazyViewModel()
+ override fun getViewModel(): MainViewModel = vm
+ override val layoutId: Int = R.layout.activity_main
+
+ lateinit var navController: NavController
+ lateinit var appBarConfiguration: AppBarConfiguration
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ setSupportActionBar(toolbar)
+ navController = findNavController(R.id.container)
+
+ appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
+ nav_view.setupWithNavController(navController)
+ setupActionBarWithNavController(navController, appBarConfiguration)
+
+ getViewModel().getUserDetails()
+ setupLogoutInDrawer()
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
+ }
+
+ override fun setTitle(title: CharSequence) {
+ toolbar.title = title
+ }
+
+ override fun onBackPressed() {
+ if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
+ drawer_layout.closeDrawer(GravityCompat.START)
+ } else {
+ val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
+ navHostFragment?.childFragmentManager?.backStackEntryCount?.takeIf { it > 1 }?.let {
+ return super.onBackPressed()
+ }
+ displayExitDialog()
+ }
+ }
+
+ override fun onSuccess(data: Any?) {
+ super.onSuccess(data)
+ when(data){
+ is FirebaseUser -> {
+ setupDrawer(data)
+ }
+ }
+ }
+
+ private fun setupDrawer(user: FirebaseUser) {
+ val header: View = nav_view.getHeaderView(0)
+ header.driver_email.text = user.email
+ header.driver_name.text = user.displayName
+ header.profileImage.setPicassoImage(user.photoUrl)
+ }
+
+ private fun setupLogoutInDrawer(){
+ logout.setOnClickListener {
+ getViewModel().logOut()
+ startActivity(createIntent())
+ finish()
+ }
+ }
+
+ override fun onNavigationItemSelected(item: MenuItem): Boolean {
+ // Handle navigation view item clicks here.
+ when (item.itemId) {
+ R.id.nav_user_settings -> { }
+ }
+ drawer_layout.closeDrawer(GravityCompat.START)
+ return true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/VehicleOverallFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/VehicleOverallFragment.kt
new file mode 100644
index 0000000..56e614c
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/VehicleOverallFragment.kt
@@ -0,0 +1,28 @@
+package h_mal.appttude.com.driver.ui.driver
+
+import android.os.Bundle
+import android.view.View
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.navigateTo
+import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
+import kotlinx.android.synthetic.main.fragment_vehicle_overall.*
+
+
+class VehicleOverallFragment : BaseFragment() {
+
+ private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
+ override fun getViewModel(): DriverLicenseViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_vehicle_overall
+
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ vehicle_prof.setOnClickListener { it.navigateTo(R.id.to_vehicleSetupFragment) }
+ insurance.setOnClickListener { it.navigateTo(R.id.to_insuranceFragment) }
+ mot.setOnClickListener { it.navigateTo(R.id.to_motFragment) }
+ logbook.setOnClickListener { it.navigateTo(R.id.to_logbookFragment) }
+ private_hire_vehicle_license.setOnClickListener { it.navigateTo(R.id.to_privateHireVehicleFragment) }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/DriverLicenseFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/DriverLicenseFragment.kt
new file mode 100644
index 0000000..8e16981
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/DriverLicenseFragment.kt
@@ -0,0 +1,57 @@
+package h_mal.appttude.com.driver.ui.driver.driverprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.model.DriversLicenseObject
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
+import kotlinx.android.synthetic.main.fragment_driver_license.*
+
+class DriverLicenseFragment : DataSubmissionBaseFragment() {
+
+ private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
+ override fun getViewModel(): DriverLicenseViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_driver_license
+ override var model = DriversLicenseObject()
+
+ private var imageUri: Uri? = null
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ lic_expiry.apply {
+ setTextOnChange{ model.licenseExpiry = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+ lic_no.setTextOnChange{ model.licenseNumber = it }
+
+ upload_lic.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit.setOnClickListener{ submit() }
+ }
+
+ override fun submit(){
+ validateEditTexts(lic_expiry,lic_no).takeIf { !it }?.let { return }
+
+ viewmodel.setDataInDatabase(model, imageUri)
+ }
+
+ override fun setFields(data: DriversLicenseObject) {
+ super.setFields(data)
+ driversli_img.setPicassoImage(data.licenseImageString)
+ lic_no.setText(data.licenseNumber)
+ lic_expiry.setText(data.licenseExpiry)
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+ this.imageUri = imageUri
+ driversli_img.setPicassoImage(imageUri)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/DriverProfileFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/DriverProfileFragment.kt
new file mode 100644
index 0000000..9bacc86
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/DriverProfileFragment.kt
@@ -0,0 +1,73 @@
+package h_mal.appttude.com.driver.ui.driver.driverprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.model.DriverProfileObject
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.DriverProfileViewModel
+import kotlinx.android.synthetic.main.fragment_driver_profile.*
+
+
+class DriverProfileFragment: DataSubmissionBaseFragment() {
+
+ var localUri: Uri? = null
+
+ private val viewmodel by getFragmentViewModel()
+ override fun getViewModel(): DriverProfileViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_driver_profile
+ override var model = DriverProfileObject()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ names_input.setTextOnChange{ model.forenames = it }
+ address_input.setTextOnChange{ model.address = it }
+ postcode_input.setTextOnChange{ model.postcode = it }
+ dob_input.apply {
+ setTextOnChange{ model.dob = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+ ni_number.setTextOnChange{ model.ni = it }
+ date_first.apply {
+ setTextOnChange{ model.dateFirst = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+ add_driver_pic.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit_driver.setOnClickListener{ submit() }
+ }
+
+ override fun submit(){
+ validateEditTexts(names_input, address_input, postcode_input,
+ dob_input, ni_number, date_first)
+ .takeIf { !it }
+ ?.let { return }
+
+ viewmodel.setDataInDatabase(model, localUri)
+ }
+
+ override fun setFields(data: DriverProfileObject) {
+ super.setFields(data)
+ driver_pic.setPicassoImage(data.driverPic)
+ names_input.setText(data.forenames)
+ address_input.setText(data.address)
+ postcode_input.setText(data.postcode)
+ dob_input.setText(data.dob)
+ ni_number.setText(data.ni)
+ date_first.setText(data.dateFirst)
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+ localUri = imageUri
+ driver_pic.setPicassoImage(imageUri)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/PrivateHireLicenseFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/PrivateHireLicenseFragment.kt
new file mode 100644
index 0000000..9473c6b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/driverprofile/PrivateHireLicenseFragment.kt
@@ -0,0 +1,55 @@
+package h_mal.appttude.com.driver.ui.driver.driverprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.model.PrivateHireObject
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.PrivateHireLicenseViewModel
+import kotlinx.android.synthetic.main.fragment_private_hire_license.*
+
+
+class PrivateHireLicenseFragment : DataSubmissionBaseFragment() {
+
+ val viewmodel by getFragmentViewModel()
+ override fun getViewModel(): PrivateHireLicenseViewModel = viewmodel
+ override var model = PrivateHireObject()
+ override fun getLayoutId(): Int = R.layout.fragment_private_hire_license
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ ph_no.setTextOnChange{ model.phNumber = it }
+ ph_expiry.apply {
+ setTextOnChange{ model.phExpiry = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+
+ uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit.setOnClickListener{ submit() }
+ }
+
+ override fun submit(){
+ validateEditTexts(ph_no,ph_expiry).takeIf { !it }?.let { return }
+
+ viewmodel.setDataInDatabase(model, picUri)
+ }
+
+ override fun setFields(data: PrivateHireObject) {
+ super.setFields(data)
+ imageView2.setPicassoImage(data.phImageString)
+ ph_no.setText(data.phNumber)
+ ph_expiry.setText(data.phExpiry)
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+ imageView2.setPicassoImage(imageUri)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/InsuranceFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/InsuranceFragment.kt
new file mode 100644
index 0000000..0a46064
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/InsuranceFragment.kt
@@ -0,0 +1,70 @@
+package h_mal.appttude.com.driver.ui.driver.vehicleprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import android.widget.ImageView
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.Objects.InsuranceObject
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.InsuranceViewModel
+import kotlinx.android.synthetic.main.fragment_insurance.*
+
+
+class InsuranceFragment : DataSubmissionBaseFragment() {
+
+ private var selectedImages: List? = listOf()
+
+ private val viewmodel: InsuranceViewModel by getFragmentViewModel()
+ override fun getViewModel(): InsuranceViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_insurance
+ override var model = InsuranceObject()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ setImageSelectionAsMultiple()
+
+ insurer.setTextOnChange { model.insurerName = it }
+ insurance_exp.apply {
+ setOnClickListener { DateDialog(this) }
+ setTextOnChange { model.expiryDate = it }
+ }
+
+ uploadInsurance.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit_ins.setOnClickListener { submit() }
+ }
+
+ private fun updateImageCarousal(list: List) {
+ carouselView.setImageClickListener(null)
+ carouselView.setImageListener { i: Int, imageView: ImageView ->
+ when (list[i]) {
+ is Uri -> { imageView.setPicassoImage(list[i] as Uri) }
+ is String -> imageView.setPicassoImage(list[i] as String)
+ }
+ }
+ carouselView.pageCount = list.size
+
+ }
+
+ override fun submit() {
+ super.submit()
+ validateEditTexts(insurer, insurance_exp).takeIf { !it }?.let { return }
+ viewmodel.setDataInDatabase(model, selectedImages)
+ }
+
+ override fun setFields(data: InsuranceObject) {
+ super.setFields(data)
+
+ insurer.setText(model.insurerName)
+ insurance_exp.setText(model.expiryDate)
+ model.photoStrings?.let { updateImageCarousal(it) }
+ }
+
+ override fun onImageGalleryResult(imageUris: List?) {
+ selectedImages = imageUris
+ selectedImages?.let { updateImageCarousal(it) }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/LogbookFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/LogbookFragment.kt
new file mode 100644
index 0000000..c0c026c
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/LogbookFragment.kt
@@ -0,0 +1,51 @@
+package h_mal.appttude.com.driver.ui.driver.vehicleprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import h_mal.appttude.com.driver.Objects.LogbookObject
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.LogbookViewModel
+import kotlinx.android.synthetic.main.fragment_logbook.*
+
+
+class LogbookFragment : DataSubmissionBaseFragment() {
+
+ private val viewmodel by getFragmentViewModel()
+ override fun getViewModel(): LogbookViewModel = viewmodel
+ override var model = LogbookObject()
+ override fun getLayoutId(): Int = R.layout.fragment_logbook
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ v5c_no.setTextOnChange{ model.v5cnumber = it }
+ upload_lb.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit_lb.setOnClickListener { submit() }
+ }
+
+ override fun submit() {
+ super.submit()
+ validateEditTexts(v5c_no)
+ .takeIf { !it }
+ ?.let { return }
+
+ viewmodel.setDataInDatabase(model, picUri)
+ }
+
+ override fun setFields(data: LogbookObject) {
+ super.setFields(data)
+
+ log_book_img.setPicassoImage(data.photoString)
+ v5c_no.setText(data.v5cnumber)
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+
+ picUri = imageUri
+ log_book_img.setPicassoImage(picUri)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/MotFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/MotFragment.kt
new file mode 100644
index 0000000..925ed12
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/MotFragment.kt
@@ -0,0 +1,53 @@
+package h_mal.appttude.com.driver.ui.driver.vehicleprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.model.MotObject
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.MotViewModel
+import kotlinx.android.synthetic.main.fragment_mot.*
+
+
+class MotFragment: DataSubmissionBaseFragment(){
+
+ private val viewmodel by getFragmentViewModel()
+ override fun getViewModel(): MotViewModel = viewmodel
+ override var model = MotObject()
+ override fun getLayoutId(): Int = R.layout.fragment_mot
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ mot_expiry.apply {
+ setTextOnChange{ model.motExpiry = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+
+ uploadmot.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit_mot.setOnClickListener { submit() }
+ }
+
+ override fun submit() {
+ super.submit()
+ validateEditTexts(mot_expiry).takeIf { !it }?.let { return }
+ viewmodel.setDataInDatabase(model, picUri)
+ }
+
+ override fun setFields(data: MotObject) {
+ super.setFields(data)
+ mot_img.setPicassoImage(data.motImageString)
+ mot_expiry.setText(data.motExpiry)
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+ mot_img.setPicassoImage(imageUri)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/PrivateHireVehicleFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/PrivateHireVehicleFragment.kt
new file mode 100644
index 0000000..bc555b0
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/PrivateHireVehicleFragment.kt
@@ -0,0 +1,55 @@
+package h_mal.appttude.com.driver.ui.driver.vehicleprofile
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.PrivateHireVehicleViewModel
+import kotlinx.android.synthetic.main.fragment_private_hire_vehicle.*
+
+
+class PrivateHireVehicleFragment: DataSubmissionBaseFragment(){
+
+ private val viewmodel by getFragmentViewModel()
+ override fun getViewModel(): PrivateHireVehicleViewModel = viewmodel
+ override var model = PrivateHireVehicleObject()
+ override fun getLayoutId(): Int = R.layout.fragment_private_hire_vehicle
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ ph_no.setTextOnChange{ model.phCarNumber = it }
+ ph_expiry.apply {
+ setTextOnChange{ model.phCarExpiry = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+
+ uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
+ submit.setOnClickListener { submit() }
+ }
+
+ override fun submit() {
+ super.submit()
+ validateEditTexts(ph_no, ph_expiry).takeIf { !it }?.let { return }
+ viewmodel.setDataInDatabase(model, picUri)
+ }
+
+ override fun setFields(data: PrivateHireVehicleObject) {
+ super.setFields(data)
+ imageView2.setPicassoImage(data.phCarImageString)
+ ph_no.setText(data.phCarNumber)
+ ph_expiry.setText(data.phCarExpiry)
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+ imageView2.setPicassoImage(imageUri)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/VehicleProfileFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/VehicleProfileFragment.kt
new file mode 100644
index 0000000..288a097
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/driver/vehicleprofile/VehicleProfileFragment.kt
@@ -0,0 +1,62 @@
+package h_mal.appttude.com.driver.ui.driver.vehicleprofile
+
+import android.os.Bundle
+import android.view.View
+
+import h_mal.appttude.com.driver.Global.DateDialog
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
+import h_mal.appttude.com.driver.model.VehicleProfileObject
+import h_mal.appttude.com.driver.viewmodels.VehicleProfileViewModel
+import kotlinx.android.synthetic.main.fragment_vehicle_setup.*
+
+
+class VehicleProfileFragment: DataSubmissionBaseFragment(){
+
+ private val viewmodel by getFragmentViewModel()
+ override fun getViewModel(): VehicleProfileViewModel = viewmodel
+ override var model = VehicleProfileObject()
+ override fun getLayoutId(): Int = R.layout.fragment_vehicle_setup
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ reg.setTextOnChange { model.reg = it }
+ make.setTextOnChange { model.make = it }
+ car_model.setTextOnChange { model.model = it }
+ colour.setTextOnChange { model.colour = it }
+ keeper_name.setTextOnChange { model.keeperName = it }
+ address.setTextOnChange { model.keeperAddress = it }
+ postcode.setTextOnChange { model.keeperPostCode = it }
+ start_date.apply {
+ setTextOnChange{ model.startDate = it }
+ setOnClickListener {
+ DateDialog(this)
+ }
+ }
+ seized_checkbox.setOnCheckedChangeListener { _, res -> model.isSeized = res}
+
+ submit_vehicle.setOnClickListener { submit() }
+ }
+
+ override fun submit() {
+ validateEditTexts(reg, make, car_model, colour, keeper_name, address, postcode, start_date)
+ .takeIf { !it }
+ ?.let { return }
+
+ viewmodel.setDataInDatabase(model)
+ }
+
+ override fun setFields(data: VehicleProfileObject) {
+ super.setFields(data)
+ reg.setText(data.reg)
+ make.setText(data.make)
+ car_model.setText(data.model)
+ colour.setText(data.colour)
+ keeper_name.setText(data.keeperName)
+ address.setText(data.keeperAddress)
+ postcode.setText(data.keeperPostCode)
+ start_date.setText(data.startDate)
+ seized_checkbox.isChecked = data.isSeized
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/update/DeleteProfileFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/update/DeleteProfileFragment.kt
new file mode 100644
index 0000000..87fddb7
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/update/DeleteProfileFragment.kt
@@ -0,0 +1,34 @@
+package h_mal.appttude.com.driver.update
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
+import h_mal.appttude.com.driver.utils.setEnterPressedListener
+import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
+import kotlinx.android.synthetic.main.fragment_update_email.*
+
+
+class DeleteProfileFragment : BaseFragment() {
+
+ private val viewmodel: UpdateUserViewModel by activityViewModels()
+ override fun getViewModel(): UpdateUserViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_delete_profile
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ password_top.setEnterPressedListener { deleteUser() }
+ submission_button_label.setOnClickListener { deleteUser() }
+ }
+
+ private fun deleteUser(){
+ val emailString = email_update.validatePasswordEditText() ?: return
+ val passwordText = password_top.validatePasswordEditText() ?: return
+
+ getViewModel().deleteProfile(emailString, passwordText)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateActivity.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateActivity.kt
new file mode 100644
index 0000000..588eb19
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateActivity.kt
@@ -0,0 +1,17 @@
+package h_mal.appttude.com.driver.update
+
+import android.os.Bundle
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseActivity
+import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
+
+class UpdateActivity : BaseActivity() {
+
+ override val layoutId: Int = R.layout.update_activity
+ override fun getViewModel(): UpdateUserViewModel? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ createViewModel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateEmailFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateEmailFragment.kt
new file mode 100644
index 0000000..4f04946
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateEmailFragment.kt
@@ -0,0 +1,37 @@
+package h_mal.appttude.com.driver.update
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
+import h_mal.appttude.com.driver.utils.setEnterPressedListener
+import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
+import kotlinx.android.synthetic.main.fragment_update_email.*
+
+
+class UpdateEmailFragment : BaseFragment() {
+
+ private val viewmodel: UpdateUserViewModel by activityViewModels()
+ override fun getViewModel(): UpdateUserViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_update_email
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ new_email.setEnterPressedListener { registerUser() }
+ submission_button_label.setOnClickListener { registerUser() }
+ }
+
+ private fun registerUser(){
+ val emailString = email_update.validatePasswordEditText() ?: return
+ val passwordText = password_top.validatePasswordEditText() ?: return
+ val newEmail = new_email.validateEmailEditText() ?: return
+
+ getViewModel().updateEmail(emailString, passwordText, newEmail)
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateOverviewFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateOverviewFragment.kt
new file mode 100644
index 0000000..bc23a51
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateOverviewFragment.kt
@@ -0,0 +1,40 @@
+package h_mal.appttude.com.driver.update
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.navigateTo
+import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
+import kotlinx.android.synthetic.main.update_overview_fragment.*
+
+class UpdateOverviewFragment : BaseFragment(), View.OnClickListener {
+
+ private val vm by activityViewModels()
+ override fun getViewModel(): UpdateUserViewModel = vm
+ override fun getLayoutId(): Int = R.layout.update_overview_fragment
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ update_email_button.setOnClickListener(this)
+ update_password_button.setOnClickListener(this)
+ update_profile_button.setOnClickListener(this)
+ }
+
+ private fun View.submit(){
+ when(id){
+ R.id.update_email_button -> navigateTo(R.id.to_updateEmailFragment)
+ R.id.update_password_button -> navigateTo(R.id.to_updatePasswordFragment)
+ R.id.update_profile_button -> navigateTo(R.id.to_updateProfileFragment)
+ R.id.delete_profile -> navigateTo(R.id.to_deleteProfileFragment)
+ }
+ }
+
+ override fun onClick(v: View?){
+ v?.submit()
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdatePasswordFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdatePasswordFragment.kt
new file mode 100644
index 0000000..125e628
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdatePasswordFragment.kt
@@ -0,0 +1,37 @@
+package h_mal.appttude.com.driver.update
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
+import h_mal.appttude.com.driver.utils.setEnterPressedListener
+import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
+import kotlinx.android.synthetic.main.fragment_update_password.*
+
+
+class UpdatePasswordFragment : BaseFragment() {
+
+ private val viewmodel: UpdateUserViewModel by activityViewModels()
+ override fun getViewModel(): UpdateUserViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_update_password
+
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ email_update.setEnterPressedListener { registerUser() }
+ email_sign_up.setOnClickListener { registerUser() }
+ }
+
+ private fun registerUser(){
+ val emailString = email_update.validatePasswordEditText() ?: return
+ val passwordText = password_top.validatePasswordEditText() ?: return
+ val newPassword = password_bottom.validateEmailEditText() ?: return
+
+ getViewModel().updatePassword(emailString, passwordText, newPassword)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateProfileFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateProfileFragment.kt
new file mode 100644
index 0000000..0633bc7
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/update/UpdateProfileFragment.kt
@@ -0,0 +1,92 @@
+package h_mal.appttude.com.driver.update
+
+import android.Manifest.permission.READ_EXTERNAL_STORAGE
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import androidx.core.widget.doAfterTextChanged
+import androidx.fragment.app.activityViewModels
+import com.google.firebase.auth.FirebaseUser
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
+import h_mal.appttude.com.driver.utils.setEnterPressedListener
+import h_mal.appttude.com.driver.utils.setPicassoImage
+import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
+import kotlinx.android.synthetic.main.fragment_update_profile.*
+
+const val TAG_CONST = "non-user"
+private const val IMAGE_PERMISSION_RESULT = 402
+class UpdateProfileFragment : BaseFragment() {
+
+ private val viewmodel: UpdateUserViewModel by activityViewModels()
+ override fun getViewModel(): UpdateUserViewModel = viewmodel
+ override fun getLayoutId(): Int = R.layout.fragment_update_profile
+
+ private var imageChangeListener: Boolean = false
+ private var nameChangeListener: Boolean = false
+
+ private var imageUri: Uri? = null
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ viewmodel.getUser()
+
+ update_name.apply {
+ doAfterTextChanged {
+ if (tag == TAG_CONST) {
+ tag = null
+ return@doAfterTextChanged
+ }
+ nameChangeListener = true
+ }
+ setEnterPressedListener { submitProfileUpdate() }
+ }
+
+ profile_img.setOnClickListener {
+ if (askForPermissions(READ_EXTERNAL_STORAGE, IMAGE_PERMISSION_RESULT)) {
+ openGalleryForImage()
+ }
+ }
+
+ submit_update_profile.setOnClickListener { submitProfileUpdate() }
+ }
+
+ private fun submitProfileUpdate() {
+ val name: String? = takeIf { nameChangeListener }?.update_name?.text?.toString()
+ val imgUri = takeIf { imageChangeListener }?.let { imageUri }
+
+ viewmodel.updateProfile(name, imgUri)
+ }
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int,
+ permissions: Array,
+ grantResults: IntArray
+ ) = onPermissionRequest(requestCode, IMAGE_PERMISSION_RESULT, grantResults) {
+ openGalleryForImage()
+ }
+
+
+ override fun onSuccess(data: Any?) {
+ super.onSuccess(data)
+ if (data is FirebaseUser) setFields(data)
+ }
+
+ private fun setFields(firebaseUser: FirebaseUser) {
+ profile_img.setPicassoImage(firebaseUser.photoUrl)
+ update_name.apply {
+ setText(firebaseUser.displayName)
+ tag = TAG_CONST
+ }
+ }
+
+ override fun onImageGalleryResult(imageUri: Uri?) {
+ super.onImageGalleryResult(imageUri)
+ this.imageUri = imageUri
+ profile_img.setPicassoImage(imageUri)
+ imageChangeListener = true
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/user/ForgotPasswordFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/user/ForgotPasswordFragment.kt
new file mode 100644
index 0000000..7f8015e
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/user/ForgotPasswordFragment.kt
@@ -0,0 +1,29 @@
+package h_mal.appttude.com.driver.user
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
+import h_mal.appttude.com.driver.viewmodels.UserViewModel
+import kotlinx.android.synthetic.main.fragment_forgot_password.*
+
+
+class ForgotPasswordFragment : BaseFragment() {
+
+ private val userViewModel: UserViewModel by activityViewModels()
+
+ override fun getViewModel(): UserViewModel = userViewModel
+ override fun getLayoutId(): Int = R.layout.fragment_forgot_password
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ submission_button.setOnClickListener {
+ val emailString = submission_et.validateEmailEditText() ?: return@setOnClickListener
+ userViewModel.forgotPassword(emailString)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/user/LoginActivity.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/user/LoginActivity.kt
new file mode 100644
index 0000000..bfcaf95
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/user/LoginActivity.kt
@@ -0,0 +1,37 @@
+package h_mal.appttude.com.driver.ui.user
+
+
+import android.content.Intent
+import android.os.Bundle
+import com.google.firebase.auth.AuthResult
+import com.google.firebase.auth.FirebaseUser
+import h_mal.appttude.com.driver.ui.driver.MainActivity
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseActivity
+import h_mal.appttude.com.driver.viewmodels.UserViewModel
+
+
+/**
+ * A login screen that offers login via email/password.
+ */
+class LoginActivity : BaseActivity() {
+
+ override fun getViewModel(): UserViewModel? = null
+ override val layoutId: Int = R.layout.activity_login
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ createViewModel()
+ }
+
+ override fun onSuccess(data: Any?) {
+ super.onSuccess(data)
+ if (data is AuthResult || data is FirebaseUser) {
+ val intent = Intent(this, MainActivity::class.java)
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
+ startActivity(intent)
+ finish()
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/user/LoginFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/user/LoginFragment.kt
new file mode 100644
index 0000000..0d0efe4
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/user/LoginFragment.kt
@@ -0,0 +1,40 @@
+package h_mal.appttude.com.driver.ui.user
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
+import h_mal.appttude.com.driver.utils.navigateTo
+import h_mal.appttude.com.driver.utils.setEnterPressedListener
+import h_mal.appttude.com.driver.viewmodels.UserViewModel
+import kotlinx.android.synthetic.main.fragment_login.*
+
+class LoginFragment : BaseFragment() {
+
+ private val userViewModel: UserViewModel by activityViewModels()
+ override fun getViewModel(): UserViewModel = userViewModel
+ override fun getLayoutId(): Int = R.layout.fragment_login
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ password.setEnterPressedListener { attemptLogin() }
+
+ email_sign_in_button.setOnClickListener { attemptLogin() }
+ register_button.setOnClickListener { it.navigateTo(R.id.to_register) }
+ forgot.setOnClickListener { it.navigateTo(R.id.to_forgotPassword) }
+ }
+
+ private fun attemptLogin(){
+ // Store values at the time of the login attempt.
+ val emailString = email.validateEmailEditText() ?: return
+ val passwordString = password.validatePasswordEditText() ?: return
+
+ // attempt to login user
+ getViewModel().signInUser(emailString, passwordString)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/user/RegisterFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/user/RegisterFragment.kt
new file mode 100644
index 0000000..fe83477
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/user/RegisterFragment.kt
@@ -0,0 +1,43 @@
+package h_mal.appttude.com.driver.ui.user
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
+import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
+import h_mal.appttude.com.driver.utils.setEnterPressedListener
+import h_mal.appttude.com.driver.viewmodels.UserViewModel
+import kotlinx.android.synthetic.main.fragment_register.*
+
+class RegisterFragment : BaseFragment() {
+
+ override fun getLayoutId(): Int = R.layout.fragment_register
+ override fun getViewModel(): UserViewModel {
+ val userViewModel: UserViewModel by activityViewModels()
+ return userViewModel
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ password_bottom.setEnterPressedListener { registerUser() }
+ email_sign_up.setOnClickListener { registerUser() }
+ }
+
+ private fun registerUser(){
+ val nameString = name_register.validatePasswordEditText() ?: return
+ val emailText = email_register.validateEmailEditText() ?: return
+ val passwordText = password_top.validatePasswordEditText() ?: return
+ val passwordTextBottom = password_bottom.validatePasswordEditText() ?: return
+
+ if ((passwordText != passwordTextBottom)) {
+ password_bottom.error = getString(R.string.no_match_password)
+ password_bottom.requestFocus()
+ return
+ }
+
+ getViewModel().registerUser(nameString, emailText, passwordText)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/ui/user/SplashScreenFragment.kt b/app/src/main/java/h_mal/appttude/com/driver/ui/user/SplashScreenFragment.kt
new file mode 100644
index 0000000..12147cd
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/ui/user/SplashScreenFragment.kt
@@ -0,0 +1,35 @@
+package h_mal.appttude.com.driver.ui.user
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.activityViewModels
+import com.google.firebase.auth.FirebaseUser
+import h_mal.appttude.com.driver.R
+import h_mal.appttude.com.driver.base.BaseFragment
+import h_mal.appttude.com.driver.data.FirebaseCompletion
+import h_mal.appttude.com.driver.utils.Coroutines.main
+import h_mal.appttude.com.driver.utils.navigateTo
+import h_mal.appttude.com.driver.viewmodels.UserViewModel
+import kotlinx.coroutines.delay
+
+
+class SplashScreenFragment : BaseFragment() {
+
+ private val userViewModel by activityViewModels()
+ override fun getViewModel(): UserViewModel = userViewModel
+ override fun getLayoutId(): Int = R.layout.fragment_splash_screen
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ userViewModel.splashscreenCheckUserIsLoggedIn()
+ }
+
+ override fun onSuccess(data: Any?) {
+ super.onSuccess(data)
+ when(data){
+ is FirebaseCompletion.Default -> view?.navigateTo(R.id.to_loginFragment)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/ActivityIntentBuilder.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/ActivityIntentBuilder.kt
new file mode 100644
index 0000000..0da57af
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/ActivityIntentBuilder.kt
@@ -0,0 +1,16 @@
+package h_mal.appttude.com.driver.utils
+
+import android.content.Context
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+
+object ActivityIntentBuilder {
+
+ inline fun Context.createIntent(): Intent =
+ Intent(this, T::class.java)
+
+ inline fun Fragment.createIntent() =
+ requireContext().createIntent()
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/AnimationUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/AnimationUtils.kt
new file mode 100644
index 0000000..0968518
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/AnimationUtils.kt
@@ -0,0 +1,16 @@
+package h_mal.appttude.com.driver.utils
+
+import android.view.View
+import android.view.animation.Animation
+import android.view.animation.AnimationUtils
+import androidx.annotation.AnimRes
+
+fun View.triggerAnimation(@AnimRes id:Int, complete:(View) -> Unit){
+ val animation = AnimationUtils.loadAnimation(context, id)
+ animation.setAnimationListener(object : Animation.AnimationListener {
+ override fun onAnimationEnd(animation: Animation?) = complete(this@triggerAnimation)
+ override fun onAnimationStart(a: Animation?) {}
+ override fun onAnimationRepeat(a: Animation?) {}
+ })
+ startAnimation(animation)
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/Coroutines.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/Coroutines.kt
new file mode 100644
index 0000000..dfed4d5
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/Coroutines.kt
@@ -0,0 +1,12 @@
+package h_mal.appttude.com.driver.utils
+
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+
+object Coroutines{
+
+ fun io(work: suspend () -> Unit) = CoroutineScope(Dispatchers.IO).launch { work() }
+ fun main(work: suspend () -> Unit) = CoroutineScope(Dispatchers.Main).launch { work() }
+ fun default(work: suspend () -> Unit) = CoroutineScope(Dispatchers.Default).launch { work() }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/DateUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/DateUtils.kt
new file mode 100644
index 0000000..89cd3f4
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/DateUtils.kt
@@ -0,0 +1,56 @@
+package h_mal.appttude.com.driver.utils
+
+import android.icu.util.Calendar
+import java.text.ParseException
+import java.text.SimpleDateFormat
+import java.util.*
+
+object DateUtils {
+ fun getDateStamp(): String {
+ val sdf: SimpleDateFormat = getSimpleDateFormat("yyyyMMdd_HHmm")
+ return sdf.format(Date())
+ }
+
+ fun getDateTimeStamp(): String{
+ val sdf: SimpleDateFormat = getSimpleDateFormat("yyyyMMdd_HHmmss")
+ return sdf.format(Date())
+ }
+
+ @Throws(ParseException::class)
+ fun String.convertDateStringDatePattern(formatIn: String, formatOut: String): String {
+ return try {
+ val sdfIn = getSimpleDateFormat(formatIn)
+ val sdfOut = getSimpleDateFormat(formatOut)
+ val newDate: Date = sdfIn.parse(this)
+ sdfOut.format(newDate)
+ }catch (e: Exception){
+ e.printStackTrace()
+ this
+ }
+ }
+
+ private fun getSimpleDateFormat(format: String) = SimpleDateFormat(format, Locale.getDefault())
+
+ fun parseDateStringIntoCalender(dateString: String, format: String): Calendar? {
+ val dateFormat = getSimpleDateFormat(format)
+ val calendar = Calendar.getInstance()
+ return try {
+ calendar.time = dateFormat.parse(dateString)
+ calendar
+ } catch (e: Exception) {
+ null
+ }
+ }
+
+ fun parseCalenderIntoDateString(calendar: Calendar, format: String): String? {
+ val date = calendar.time
+ val dateFormat = getSimpleDateFormat(format)
+
+ return try {
+ dateFormat.format(date)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ null
+ }
+ }
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/FirebaseUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/FirebaseUtils.kt
new file mode 100644
index 0000000..35fd6f9
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/FirebaseUtils.kt
@@ -0,0 +1,35 @@
+package h_mal.appttude.com.driver.utils
+
+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.data.EventResponse
+import kotlin.coroutines.resume
+import kotlin.coroutines.suspendCoroutine
+
+
+
+suspend fun DatabaseReference.singleValueEvent(): EventResponse = suspendCoroutine { continuation ->
+ val valueEventListener = object: ValueEventListener {
+ override fun onCancelled(error: DatabaseError) {
+ continuation.resume(EventResponse.Cancelled(error))
+ }
+
+ override fun onDataChange(snapshot: DataSnapshot) {
+ continuation.resume(EventResponse.Changed(snapshot))
+ }
+ }
+ addListenerForSingleValueEvent(valueEventListener)
+}
+
+suspend inline fun DatabaseReference.getDataFromDatabaseRef(): T?{
+ return when (val response: EventResponse = singleValueEvent()) {
+ is EventResponse.Changed -> {
+ response.snapshot.getValue(T::class.java)
+ }
+ is EventResponse.Cancelled -> {
+ throw response.error.toException()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/LiveDataUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/LiveDataUtils.kt
new file mode 100644
index 0000000..eeb7640
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/LiveDataUtils.kt
@@ -0,0 +1,25 @@
+package h_mal.appttude.com.driver.utils
+
+
+open class Event(private val content: T) {
+
+ var hasBeenHandled = false
+ private set // Allow external read but not write
+
+ /**
+ * Returns the content and prevents its use again.
+ */
+ fun getContentIfNotHandled(): T? {
+ return if (hasBeenHandled) {
+ null
+ } else {
+ hasBeenHandled = true
+ content
+ }
+ }
+
+ /**
+ * Returns the content, even if it's already been handled.
+ */
+ fun peekContent(): T = content
+}
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/NavigationUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/NavigationUtils.kt
new file mode 100644
index 0000000..75b4bff
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/NavigationUtils.kt
@@ -0,0 +1,28 @@
+package h_mal.appttude.com.driver.utils
+
+import android.content.Context
+import android.content.Intent
+import android.view.View
+import androidx.annotation.IdRes
+import androidx.navigation.Navigation
+
+const val UPLOAD_NEW = "upload_new"
+
+fun navigateToActivity(context: Context, navigationActivity: Navigations) {
+ try {
+ val ourClass: Class<*> =
+ Class.forName("h_mal.appttude.com.driver." + navigationActivity.value)
+ val intent = Intent(context, ourClass)
+ context.startActivity(intent)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+}
+
+fun View.navigateTo(@IdRes navId: Int){
+ Navigation
+ .findNavController(this)
+ .navigate(navId)
+}
+
+
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/Navigations.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/Navigations.kt
new file mode 100644
index 0000000..6f1335f
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/Navigations.kt
@@ -0,0 +1,6 @@
+package h_mal.appttude.com.driver.utils
+
+enum class Navigations(val value: String) {
+ Main("MainActivity");
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/PermissionsUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/PermissionsUtils.kt
new file mode 100644
index 0000000..136b8bf
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/PermissionsUtils.kt
@@ -0,0 +1,65 @@
+package h_mal.appttude.com.driver.utils
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.provider.Settings
+import androidx.appcompat.app.AlertDialog
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
+import androidx.fragment.app.Fragment
+
+
+object PermissionsUtils {
+ /**
+ * Check if you have been granted a particular permission.
+ *
+ * @param permission The name of the permission being checked.
+ *
+ * @return boolean if you have the permission, or if not.
+ */
+ fun Context.isPermissionsAllowed(permission: String): Boolean {
+ return ContextCompat.checkSelfPermission(
+ this, permission
+ ) == PackageManager.PERMISSION_GRANTED
+ }
+
+
+ fun Activity.askForPermissions(permission: String, requestCode: Int): Boolean {
+ if (!isPermissionsAllowed(permission)) {
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
+ showPermissionDeniedDialog()
+ } else {
+ ActivityCompat.requestPermissions(this, arrayOf(permission), requestCode)
+ }
+ return false
+ }
+ return true
+ }
+
+ fun Fragment.askForPermissions(permission: String, requestCode: Int): Boolean =
+ requireActivity().askForPermissions(permission, requestCode)
+
+ fun isGranted(grantResults: IntArray): Boolean =
+ grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED
+
+
+ private fun Context.showPermissionDeniedDialog() {
+ AlertDialog.Builder(this)
+ .setTitle("Permission Denied")
+ .setMessage("Permission is denied, Please allow permissions from App Settings.")
+ .setPositiveButton("App Settings") { _, _ ->
+ // send to app settings if permission is denied permanently
+ val intent = Intent()
+ intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
+ val uri = Uri.fromParts("package", packageName, null)
+ intent.data = uri
+ startActivity(intent)
+ }
+ .setNegativeButton("Cancel", null)
+ .show()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/TextValidationUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/TextValidationUtils.kt
new file mode 100644
index 0000000..db97e0b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/TextValidationUtils.kt
@@ -0,0 +1,70 @@
+package h_mal.appttude.com.driver.utils
+
+import android.widget.EditText
+import h_mal.appttude.com.driver.R
+
+
+object TextValidationUtils {
+ /**
+ * Validate input of EditText containing email
+ * @return email retrieved if valid
+ */
+ fun EditText.validateEmailEditText(): String? {
+ val input = text.toString().trim()
+ if (input.isEmpty()) {
+ error = context.getString(R.string.error_field_required)
+ requestFocus()
+ return null
+ }
+ if (!isEmailValid(input)) {
+ error = context.getString(R.string.error_invalid_email)
+ requestFocus()
+ return null
+ }
+ return input
+ }
+
+ /**
+ * Validate input of EditText containing password
+ * @return password retrieved if valid
+ */
+ fun EditText.validatePasswordEditText(): String? {
+ val input = text.toString().trim()
+ if (input.isEmpty()) {
+ error = context.getString(R.string.error_field_required)
+ requestFocus()
+ return null
+ }
+ if (!isPasswordValid(input)) {
+ error = context.getString(R.string.error_invalid_password)
+ requestFocus()
+ return null
+ }
+ return input
+ }
+
+ /**
+ * Validate input of EditText containing text
+ * @return email retrieved if valid
+ */
+ fun EditText.validateEditText(): String? {
+ val input = text.toString().trim()
+ if (input.isEmpty()) {
+ error = context.getString(R.string.error_field_required)
+ requestFocus()
+ return null
+ }
+ return input
+ }
+
+ private fun isEmailValid(email: String?): Boolean {
+ email?.let {
+ return android.util.Patterns.EMAIL_ADDRESS.matcher(it).matches()
+ }
+ return false
+ }
+
+ private fun isPasswordValid(password: String?): Boolean {
+ return (password?.length ?: 0) > 6
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/utils/ViewUtils.kt b/app/src/main/java/h_mal/appttude/com/driver/utils/ViewUtils.kt
new file mode 100644
index 0000000..87c1852
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/utils/ViewUtils.kt
@@ -0,0 +1,104 @@
+package h_mal.appttude.com.driver.utils
+
+import android.app.Activity
+import android.content.Context
+import android.content.res.Resources
+import android.net.Uri
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.inputmethod.EditorInfo
+import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
+import android.widget.ImageView
+import android.widget.TextView
+import android.widget.Toast
+import androidx.annotation.DrawableRes
+import androidx.appcompat.widget.SearchView
+import androidx.fragment.app.Fragment
+import com.squareup.picasso.Picasso
+import h_mal.appttude.com.driver.R
+
+fun View.show() {
+ this.visibility = View.VISIBLE
+}
+
+fun View.hide() {
+ this.visibility = View.GONE
+}
+
+fun Context.displayToast(message: String) {
+ Toast.makeText(this, message, Toast.LENGTH_LONG).show()
+}
+
+fun Fragment.displayToast(message: String) {
+ requireContext().displayToast(message)
+}
+
+fun EditText.setEnterPressedListener(action: () -> Unit) {
+ setOnEditorActionListener(TextView.OnEditorActionListener { _, id, _ ->
+ if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
+ action()
+ return@OnEditorActionListener true
+ }
+ false
+ })
+}
+
+fun ImageView.setPicassoImage(
+ url: String?,
+ @DrawableRes placeholderRes: Int = R.drawable.choice_img_round
+) {
+
+ val creator = Picasso.get()
+ .load(url)
+ viewTreeObserver.addOnPreDrawListener {
+ creator.resize(width, height)
+ true
+ }
+ creator
+ .placeholder(placeholderRes)
+ .into(this)
+}
+
+fun ImageView.setPicassoImage(
+ url: Uri?,
+ @DrawableRes placeholderRes: Int = R.drawable.choice_img_round
+) {
+ val creator = Picasso.get()
+ .load(url)
+ viewTreeObserver.addOnPreDrawListener {
+ creator.resize(width, height)
+ true
+ }
+ creator
+ .placeholder(placeholderRes)
+ .into(this)
+}
+
+fun ViewGroup.generateView(layoutId: Int): View = LayoutInflater
+ .from(context)
+ .inflate(layoutId, this, false)
+
+fun Int.dpToPx(): Int = (this * Resources.getSystem().displayMetrics.density).toInt()
+
+fun SearchView.onSubmitListener(searchSubmit: (String) -> Unit) {
+ this.setOnQueryTextListener(object :
+ SearchView.OnQueryTextListener {
+ override fun onQueryTextSubmit(s: String): Boolean {
+ searchSubmit.invoke(s)
+ return true
+ }
+
+ override fun onQueryTextChange(s: String): Boolean {
+ return true
+ }
+ })
+}
+
+fun Fragment.hideKeyboard() {
+ val imm = context?.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
+ imm?.hideSoftInputFromWindow(view?.windowToken, 0)
+}
+
+fun EditText.extractString(): String = text.toString().trim()
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/DriverLicenseViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/DriverLicenseViewModel.kt
new file mode 100644
index 0000000..3959b61
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/DriverLicenseViewModel.kt
@@ -0,0 +1,34 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.model.DriversLicenseObject
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class DriverLicenseViewModel(
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getDriverLicenseRef(uid)
+ override val storageRef: StorageReference = storage.driversLicenseStorageRef(uid)
+ override val objectName: String = "drivers license"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: DriversLicenseObject, localImageUri: Uri?) = io {
+ doTryOperation("Failed to upload $objectName"){
+ val imageUrl = getImageUrl(localImageUri, data.licenseImageString)
+ data.licenseImageString = imageUrl
+ postDataToDatabase(data)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/DriverProfileViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/DriverProfileViewModel.kt
new file mode 100644
index 0000000..cd1e112
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/DriverProfileViewModel.kt
@@ -0,0 +1,36 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.model.DriverProfileObject
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class DriverProfileViewModel(
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getDriverDetailsRef(uid)
+ override val storageRef: StorageReference = storage.profileImageStorageRef(uid)
+ override val objectName: String = "drivers profile"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: DriverProfileObject, localImageUri: Uri?) = io {
+ doTryOperation("Failed to upload $objectName"){
+
+ val imageUrl = getImageUrl(localImageUri, data.driverPic)
+ data.driverPic = imageUrl
+
+ postDataToDatabase(data)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/InsuranceViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/InsuranceViewModel.kt
new file mode 100644
index 0000000..e99934b
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/InsuranceViewModel.kt
@@ -0,0 +1,42 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.Objects.InsuranceObject
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class InsuranceViewModel (
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getInsuranceDetailsRef(uid)
+ override val storageRef: StorageReference? = storage.insuranceStorageRef(uid)
+ override val objectName: String = "insurance"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: InsuranceObject, localImageUris: List?) = io {
+ doTryOperation("Failed to upload $objectName") {
+ val imageUrls = if (!localImageUris.isNullOrEmpty()){
+ getImageUrls(localImageUris).toMutableList()
+ }else{
+ data.photoStrings
+ }
+ if (imageUrls.isNullOrEmpty()){
+ onError("no images selected")
+ return@doTryOperation
+ }
+
+ data.photoStrings = imageUrls
+ postDataToDatabase(data)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/LogbookViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/LogbookViewModel.kt
new file mode 100644
index 0000000..616e04c
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/LogbookViewModel.kt
@@ -0,0 +1,33 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.Objects.LogbookObject
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class LogbookViewModel (
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+ override val databaseRef: DatabaseReference = database.getLogbookRef(uid)
+ override val storageRef: StorageReference = storage.logBookStorageRef(uid)
+ override val objectName: String = "Log book"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: LogbookObject, localImageUri: Uri?) = io {
+ doTryOperation("Failed to upload $objectName") {
+ val imageUrl = getImageUrl(localImageUri, data.photoString)
+ data.photoString = imageUrl
+ postDataToDatabase(data)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/MainViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/MainViewModel.kt
new file mode 100644
index 0000000..69bbbe4
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/MainViewModel.kt
@@ -0,0 +1,35 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import h_mal.appttude.com.driver.base.BaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.utils.Coroutines.io
+import h_mal.appttude.com.driver.utils.getDataFromDatabaseRef
+
+class MainViewModel(
+ private val firebaseAuth: FirebaseAuthentication,
+ private val firebaseDatabase: FirebaseDatabaseSource
+) : BaseViewModel(){
+
+ val uid = firebaseAuth.getUid()!!
+
+ fun getRole() = io {
+ doTryOperation("failed to retrieve data") {
+ val ref = firebaseDatabase.getUserRoleRef(uid)
+ val role = ref.getDataFromDatabaseRef()
+ role?.apply { onSuccess(this) } ?: onError("No role found")
+//
+ }
+ }
+
+
+ fun getUserDetails(){
+ firebaseAuth.getUser()?.let {
+ onSuccess(it)
+ }
+ }
+
+ fun logOut(){
+ firebaseAuth.logOut()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/MotViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/MotViewModel.kt
new file mode 100644
index 0000000..cc38fa1
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/MotViewModel.kt
@@ -0,0 +1,34 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.model.MotObject
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class MotViewModel (
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getMotDetailsRef(uid)
+ override val storageRef: StorageReference? = storage.motStorageRef(uid)
+ override val objectName: String = "vehicle profile"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: MotObject, localImageUri: Uri?) = io {
+ doTryOperation("Failed to upload $objectName"){
+ val imageUrl = getImageUrl(localImageUri, data.motImageString)
+ data.motImageString = imageUrl
+ postDataToDatabase(data)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/PrivateHireLicenseViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/PrivateHireLicenseViewModel.kt
new file mode 100644
index 0000000..1ebd506
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/PrivateHireLicenseViewModel.kt
@@ -0,0 +1,39 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.model.PrivateHireObject
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class PrivateHireLicenseViewModel(
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getPrivateHireRef(uid)
+ override val storageRef: StorageReference = storage.privateHireStorageRef(uid)
+ override val objectName: String = "private hire license"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: PrivateHireObject, localImageUri: Uri?) = io {
+ doTryOperation("Failed to upload private hire license"){
+ val imageUrl = getImageUrl(localImageUri, data.phImageString)
+ val driverLicense = PrivateHireObject(
+ phExpiry = data.phExpiry,
+ phNumber = data.phNumber,
+ phImageString = imageUrl
+ )
+
+ postDataToDatabase(driverLicense)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/PrivateHireVehicleViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/PrivateHireVehicleViewModel.kt
new file mode 100644
index 0000000..6ed3790
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/PrivateHireVehicleViewModel.kt
@@ -0,0 +1,33 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class PrivateHireVehicleViewModel (
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getPrivateHireVehicleRef(uid)
+ override val storageRef: StorageReference? = storage.privateHireVehicleStorageRef(uid)
+ override val objectName: String = "private hire vehicle license"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: PrivateHireVehicleObject, localImageUri: Uri?) = io {
+ doTryOperation("Failed to upload $objectName") {
+ val imageUrl = getImageUrl(localImageUri, data.phCarImageString)
+ data.phCarImageString = imageUrl
+ postDataToDatabase(data)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/UpdateUserViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/UpdateUserViewModel.kt
new file mode 100644
index 0000000..bf77f3d
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/UpdateUserViewModel.kt
@@ -0,0 +1,75 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import android.net.Uri
+import h_mal.appttude.com.driver.base.BaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseCompletion
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.utils.Coroutines.io
+import kotlinx.coroutines.tasks.await
+import java.io.IOException
+
+class UpdateUserViewModel(
+ private val auth: FirebaseAuthentication,
+ private val storage: FirebaseStorageSource
+) : BaseViewModel() {
+
+ fun updateEmail(oldEmail: String, password: String, newEmail: String) = io {
+ doTryOperation("Failed to update email"){
+ auth.reauthenticate(oldEmail, password)?.await()
+ val complete = auth.updateEmail(newEmail)?.await()
+ complete?.postResult("Email address")
+ }
+ }
+
+ fun updatePassword(oldEmail: String, password: String, newPassword: String) = io {
+ doTryOperation("Failed to update password"){
+ auth.reauthenticate(oldEmail, password)?.await()
+ val complete = auth.updatePassword(newPassword)?.await()
+ complete?.postResult("Password")
+ }
+ }
+
+ fun updateProfile(name: String?, localImageUri: Uri?) = io {
+ if (name.isNullOrBlank() && localImageUri == null) return@io
+ doTryOperation("Failed to update User"){
+
+ val profilePicUrl = localImageUri?.let {
+ val storageRef = storage.profileImageStorageRef(auth.getUid()!!)
+ storage.uploadImage(it, storageRef, "profile_pic")
+ }
+
+ val complete = auth.updateProfile(name, profilePicUrl)?.await()
+ complete.postResult("Profile updated")
+ }
+ }
+
+ fun deleteProfile(oldEmail: String, password: String) = io {
+ doTryOperation("Failed to delete profile"){
+ auth.reauthenticate(oldEmail, password)?.await()
+ val complete = auth.deleteProfile()?.await()
+ complete?.let {
+ onSuccess(FirebaseCompletion.ProfileDeleted("Profile deleted"))
+ return@doTryOperation
+ }
+ throw IOException("Failed to complete")
+
+ }
+ }
+
+
+ fun getUser(): Boolean {
+ return auth.getUser()?.let {
+ onSuccess(it)
+ true
+ } ?: false
+ }
+
+ private fun Void?.postResult(section: String){
+ this?.let {
+ onSuccess(FirebaseCompletion.Changed("$section has been updated"))
+ return
+ }
+ throw IOException("Failed to complete")
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/UserViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/UserViewModel.kt
new file mode 100644
index 0000000..cde9d3e
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/UserViewModel.kt
@@ -0,0 +1,47 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import com.google.firebase.auth.AuthResult
+import h_mal.appttude.com.driver.base.BaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseCompletion
+import h_mal.appttude.com.driver.utils.Coroutines.io
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.tasks.await
+
+class UserViewModel(
+ val auth: FirebaseAuthentication
+) : BaseViewModel() {
+
+ fun signInUser(email: String?, password: String?) = io {
+ doTryOperation("Failed to sign in") {
+ val user: AuthResult = auth.signIn(email!!, password!!).await()
+ onSuccess(user)
+ }
+ }
+
+
+ fun registerUser(name: String?, email: String?, password: String?) = io {
+ doTryOperation("Failed to register user") {
+ val user: AuthResult = auth.registerUser(email!!, password!!).await()
+ auth.updateProfile(name, null)
+ onSuccess(user)
+ }
+ }
+
+
+ fun forgotPassword(email: String?) = io {
+ doTryOperation("Failed to reset password") {
+ val result = auth.forgotPassword(email!!).await()
+ onSuccess(result)
+ }
+ }
+
+ fun splashscreenCheckUserIsLoggedIn() = io {
+ delay(1000)
+ auth.getUser()?.let {
+ onSuccess(it)
+ }
+ onSuccess(FirebaseCompletion.Default)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/h_mal/appttude/com/driver/viewmodels/VehicleProfileViewModel.kt b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/VehicleProfileViewModel.kt
new file mode 100644
index 0000000..58f9132
--- /dev/null
+++ b/app/src/main/java/h_mal/appttude/com/driver/viewmodels/VehicleProfileViewModel.kt
@@ -0,0 +1,34 @@
+package h_mal.appttude.com.driver.viewmodels
+
+import com.google.firebase.database.DatabaseReference
+import com.google.firebase.storage.StorageReference
+import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
+import h_mal.appttude.com.driver.data.FirebaseAuthentication
+import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
+import h_mal.appttude.com.driver.data.FirebaseStorageSource
+import h_mal.appttude.com.driver.model.VehicleProfileObject
+import h_mal.appttude.com.driver.utils.Coroutines.io
+
+class VehicleProfileViewModel (
+ auth: FirebaseAuthentication,
+ database: FirebaseDatabaseSource,
+ storage: FirebaseStorageSource
+) : DataSubmissionBaseViewModel(database, storage) {
+ val uid = auth.getUid()!!
+
+ override val databaseRef: DatabaseReference = database.getVehicleDetailsRef(uid)
+ override val storageRef: StorageReference? = null
+ override val objectName: String = "vehicle profile"
+
+ override fun getDataFromDatabase() = getDataClass()
+
+ override fun setDataInDatabase(data: VehicleProfileObject) {
+ io {
+ doTryOperation("Failed to upload $objectName"){
+ postDataToDatabase(data)
+ }
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v21/gradient_colour.xml b/app/src/main/res/drawable-v21/gradient_colour.xml
deleted file mode 100644
index 6037c6c..0000000
--- a/app/src/main/res/drawable-v21/gradient_colour.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v21/ic_menu_camera.xml b/app/src/main/res/drawable-v21/ic_menu_camera.xml
deleted file mode 100644
index 634fe92..0000000
--- a/app/src/main/res/drawable-v21/ic_menu_camera.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable-v21/ic_menu_gallery.xml b/app/src/main/res/drawable-v21/ic_menu_gallery.xml
deleted file mode 100644
index 03c7709..0000000
--- a/app/src/main/res/drawable-v21/ic_menu_gallery.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable-v21/ic_menu_manage.xml b/app/src/main/res/drawable-v21/ic_menu_manage.xml
deleted file mode 100644
index aeb047d..0000000
--- a/app/src/main/res/drawable-v21/ic_menu_manage.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v21/ic_menu_send.xml b/app/src/main/res/drawable-v21/ic_menu_send.xml
deleted file mode 100644
index fdf1c90..0000000
--- a/app/src/main/res/drawable-v21/ic_menu_send.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable-v21/ic_menu_share.xml b/app/src/main/res/drawable-v21/ic_menu_share.xml
deleted file mode 100644
index 338d95a..0000000
--- a/app/src/main/res/drawable-v21/ic_menu_share.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable-v21/ic_menu_slideshow.xml b/app/src/main/res/drawable-v21/ic_menu_slideshow.xml
deleted file mode 100644
index 5e9e163..0000000
--- a/app/src/main/res/drawable-v21/ic_menu_slideshow.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 1f6bb29..0000000
--- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-