mirror of
https://github.com/hmalik144/Driver.git
synced 2026-03-18 07:26:03 +00:00
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,8 +3,10 @@
|
|||||||
/local.properties
|
/local.properties
|
||||||
/.idea/caches/build_file_checksums.ser
|
/.idea/caches/build_file_checksums.ser
|
||||||
/.idea/libraries
|
/.idea/libraries
|
||||||
|
/.idea/dictionaries
|
||||||
/.idea/modules.xml
|
/.idea/modules.xml
|
||||||
/.idea/workspace.xml
|
/.idea/workspace.xml
|
||||||
|
/.idea/navEditor.xml
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/build
|
/build
|
||||||
/captures
|
/captures
|
||||||
|
|||||||
159
.idea/codeStyles/Project.xml
generated
159
.idea/codeStyles/Project.xml
generated
@@ -1,29 +1,138 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
<code_scheme name="Project" version="173">
|
<code_scheme name="Project" version="173">
|
||||||
<Objective-C-extensions>
|
<JetCodeStyleSettings>
|
||||||
<file>
|
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
<value>
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
<package name="java.util" alias="false" withSubpackages="false" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
<package name="io.ktor" alias="false" withSubpackages="true" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
</value>
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
</option>
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
<option name="PACKAGES_IMPORT_LAYOUT">
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
<value>
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
<package name="" alias="false" withSubpackages="true" />
|
||||||
</file>
|
<package name="java" alias="false" withSubpackages="true" />
|
||||||
<class>
|
<package name="javax" alias="false" withSubpackages="true" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
<package name="kotlin" alias="false" withSubpackages="true" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
<package name="" alias="true" withSubpackages="true" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
</value>
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
</option>
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
</JetCodeStyleSettings>
|
||||||
</class>
|
<codeStyleSettings language="XML">
|
||||||
<extensions>
|
<indentOptions>
|
||||||
<pair source="cpp" header="h" fileNamingConvention="NONE" />
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
<pair source="c" header="h" fileNamingConvention="NONE" />
|
</indentOptions>
|
||||||
</extensions>
|
<arrangement>
|
||||||
</Objective-C-extensions>
|
<rules>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:android</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:id</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>style</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
</rules>
|
||||||
|
</arrangement>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="kotlin">
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</codeStyleSettings>
|
||||||
</code_scheme>
|
</code_scheme>
|
||||||
</component>
|
</component>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
@@ -1,8 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
|
<option name="testRunner" value="PLATFORM" />
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
|
|||||||
50
.idea/jarRepositories.xml
generated
Normal file
50
.idea/jarRepositories.xml
generated
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RemoteRepositoriesConfiguration">
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Maven Central repository" />
|
||||||
|
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="jboss.community" />
|
||||||
|
<option name="name" value="JBoss Community repository" />
|
||||||
|
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="BintrayJCenter" />
|
||||||
|
<option name="name" value="BintrayJCenter" />
|
||||||
|
<option name="url" value="https://jcenter.bintray.com/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven" />
|
||||||
|
<option name="name" value="maven" />
|
||||||
|
<option name="url" value="https://jitpack.io" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="Google" />
|
||||||
|
<option name="name" value="Google" />
|
||||||
|
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="MavenRepo" />
|
||||||
|
<option name="name" value="MavenRepo" />
|
||||||
|
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\android\m2repository" />
|
||||||
|
<option name="name" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\android\m2repository" />
|
||||||
|
<option name="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\google\m2repository" />
|
||||||
|
<option name="name" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\google\m2repository" />
|
||||||
|
<option name="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/extras/google/m2repository/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\m2repository" />
|
||||||
|
<option name="name" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\m2repository" />
|
||||||
|
<option name="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/extras/m2repository/" />
|
||||||
|
</remote-repository>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
16
.idea/misc.xml
generated
16
.idea/misc.xml
generated
@@ -5,7 +5,7 @@
|
|||||||
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
|
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
|
||||||
<option name="myNullables">
|
<option name="myNullables">
|
||||||
<value>
|
<value>
|
||||||
<list size="7">
|
<list size="12">
|
||||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
||||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||||
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
|
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
|
||||||
@@ -13,23 +13,33 @@
|
|||||||
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
|
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
|
||||||
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
|
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
|
||||||
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
|
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
|
||||||
|
<item index="7" class="java.lang.String" itemvalue="android.annotation.Nullable" />
|
||||||
|
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
|
||||||
|
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
|
||||||
|
<item index="10" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
|
||||||
|
<item index="11" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
|
||||||
</list>
|
</list>
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
<option name="myNotNulls">
|
<option name="myNotNulls">
|
||||||
<value>
|
<value>
|
||||||
<list size="6">
|
<list size="11">
|
||||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
||||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
||||||
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
|
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
|
||||||
<item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
|
<item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
|
||||||
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
|
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
|
||||||
|
<item index="6" class="java.lang.String" itemvalue="android.annotation.NonNull" />
|
||||||
|
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
|
||||||
|
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
|
||||||
|
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
|
||||||
|
<item index="10" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
|
||||||
</list>
|
</list>
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|||||||
2
app/.gitignore
vendored
2
app/.gitignore
vendored
@@ -1 +1,3 @@
|
|||||||
/build
|
/build
|
||||||
|
/release
|
||||||
|
google-services.json
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
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 {
|
android {
|
||||||
compileSdkVersion 28
|
compileSdkVersion 28
|
||||||
@@ -7,9 +19,9 @@ android {
|
|||||||
applicationId "h_mal.appttude.com.driver"
|
applicationId "h_mal.appttude.com.driver"
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 5
|
versionCode 6
|
||||||
versionName "1.5"
|
versionName "1.6"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
@@ -17,30 +29,64 @@ android {
|
|||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "1.8"
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation 'com.android.support:appcompat-v7:28.0.0'
|
implementation "androidx.appcompat:appcompat:1.0.0"
|
||||||
implementation 'com.android.support:design:28.0.0'
|
implementation "com.google.android.material:material:1.0.0"
|
||||||
implementation 'com.android.support:cardview-v7:28.0.0'
|
implementation "androidx.cardview:cardview:1.0.0"
|
||||||
implementation 'com.android.support:support-v4:28.0.0'
|
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||||
implementation 'com.android.support:exifinterface:28.0.0'
|
implementation "androidx.exifinterface:exifinterface:1.0.0"
|
||||||
implementation 'com.google.android.gms:play-services-auth:15.0.1'
|
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
|
||||||
implementation 'com.google.firebase:firebase-core:16.0.1'
|
implementation "androidx.fragment:fragment-ktx:1.2.5"
|
||||||
implementation 'com.google.firebase:firebase-auth:16.0.1'
|
implementation "androidx.activity:activity-ktx:1.2.0"
|
||||||
implementation 'com.google.firebase:firebase-storage:16.0.1'
|
implementation "androidx.recyclerview:recyclerview:1.1.0"
|
||||||
implementation 'com.google.firebase:firebase-database:16.0.1'
|
implementation "androidx.navigation:navigation-fragment-ktx:2.3.3"
|
||||||
implementation 'com.github.chrisbanes:PhotoView:2.1.0'
|
implementation "androidx.navigation:navigation-ui-ktx:2.3.3"
|
||||||
implementation 'com.squareup.picasso:picasso:2.71828'
|
implementation "androidx.drawerlayout:drawerlayout:1.1.1"
|
||||||
implementation 'com.google.code.gson:gson:2.3.1'
|
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
||||||
testImplementation 'junit:junit:4.12'
|
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0"
|
||||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
implementation 'androidx.viewpager:viewpager:1.0.0'
|
||||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
testImplementation "junit:junit:4.12"
|
||||||
androidTestImplementation 'com.android.support.test:rules:1.0.2'
|
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'
|
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||||
repositories {
|
// Google play services
|
||||||
mavenCentral()
|
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'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,11 @@ package h_mal.appttude.com.driver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
||||||
import android.support.test.runner.AndroidJUnit4;
|
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.Test;
|
||||||
import org.junit.runner.RunWith;
|
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.
|
* Instrumented test, which will execute on an Android device.
|
||||||
|
|||||||
@@ -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<MainActivity> activityActivityTestRule = new ActivityTestRule<MainActivity>(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package h_mal.appttude.com.driver.base
|
||||||
|
|
||||||
|
import org.junit.Assert.*
|
||||||
|
|
||||||
|
class BaseActivityTest{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<LoginActivity> 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<View> childAtPosition(
|
||||||
|
final Matcher<View> parentMatcher, final int position) {
|
||||||
|
|
||||||
|
return new TypeSafeMatcher<View>() {
|
||||||
|
@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));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<LoginActivity> 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.<View>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<View> childAtPosition(
|
||||||
|
final Matcher<View> parentMatcher, final int position) {
|
||||||
|
|
||||||
|
return new TypeSafeMatcher<View>() {
|
||||||
|
@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));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="h_mal.appttude.com.driver">
|
package="h_mal.appttude.com.driver">
|
||||||
|
|
||||||
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
<uses-permission android:name="android.permission.READ_PROFILE" />
|
<uses-permission android:name="android.permission.READ_PROFILE" />
|
||||||
@@ -12,35 +11,33 @@
|
|||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
android:name=".application.DriverApplication"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme">
|
android:theme="@style/AppTheme">
|
||||||
|
<activity android:name=".update.UpdateActivity" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".User.LoginActivity"
|
android:name=".ui.user.LoginActivity"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/Theme.Design.NoActionBar">
|
android:theme="@style/Theme.Design.NoActionBar">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".ui.driver.MainActivity"
|
||||||
android:configChanges="orientation|screenSize"
|
android:configChanges="orientation|screenSize"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/AppTheme.NoActionBar">
|
android:theme="@style/AppTheme.NoActionBar" />
|
||||||
|
|
||||||
</activity>
|
|
||||||
<activity android:name=".User.RegisterActivity">
|
|
||||||
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="android.support.v4.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
android:authorities="h_mal.appttude.com.driver"
|
android:authorities="h_mal.appttude.com.driver"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:grantUriPermissions="true">
|
android:grantUriPermissions="true">
|
||||||
@@ -48,8 +45,6 @@
|
|||||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
android:resource="@xml/file_paths" />
|
android:resource="@xml/file_paths" />
|
||||||
</provider>
|
</provider>
|
||||||
|
|
||||||
<activity android:name=".User.forgotPasswordActivity"></activity>
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -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) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String>
|
||||||
|
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<View>(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<String,*>?){
|
||||||
|
size = map?.size ?: 0
|
||||||
|
map?.keys?.toTypedArray()?.let{
|
||||||
|
mKeys = it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> task) {
|
|
||||||
if (task.isSuccessful()){
|
|
||||||
approvalsClass.setStatusCode(UID,DRIVER_DETAILS_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
|
|
||||||
}
|
|
||||||
viewController.progress(View.GONE);
|
|
||||||
fragmentManager.popBackStack();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String> 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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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");}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<UploadTask.TaskSnapshot>() {
|
|
||||||
@Override
|
|
||||||
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
|
|
||||||
double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
|
|
||||||
.getTotalByteCount());
|
|
||||||
progressDialog.setMessage("Uploaded "+(int)progress+"%");
|
|
||||||
}
|
|
||||||
}).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
|
|
||||||
@Override
|
|
||||||
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
|
|
||||||
if (!task.isSuccessful()) {
|
|
||||||
throw task.getException();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Continue with the task to get the download URL
|
|
||||||
return ref.getDownloadUrl();
|
|
||||||
}
|
|
||||||
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Uri> 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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<String> 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<String> 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<String> 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Any>? = null
|
||||||
|
|
||||||
|
// fun addLocalString(uris: List<Uri>) {
|
||||||
|
// list = uris
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// fun addFirebaseStrings(uris: List<String>) {
|
||||||
|
// list = uris
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private var adapter: SlidingImageViewAdapter? = null
|
||||||
|
// lateinit var viewPager: ViewPager
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// fun reinstantiateList(imageStrings: MutableList<String?>?) {
|
||||||
|
// 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) {}
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String> = 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()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
package h_mal.appttude.com.driver.Objects;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ArchiveObject {
|
|
||||||
|
|
||||||
public HashMap<String,DriversLicenseObject> driver_license;
|
|
||||||
public HashMap<String,PrivateHireObject> private_hire;
|
|
||||||
public HashMap<String,VehicleProfileObject> vehicle_details;
|
|
||||||
public HashMap<String,InsuranceObject> insurance_details;
|
|
||||||
public HashMap<String,MotObject> mot_details;
|
|
||||||
public HashMap<String,LogbookObject> log_book;
|
|
||||||
public HashMap<String,PrivateHireVehicleObject> private_hire_vehicle;
|
|
||||||
|
|
||||||
public ArchiveObject() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArchiveObject(HashMap<String, DriversLicenseObject> driver_license, HashMap<String, PrivateHireObject> private_hire, HashMap<String, VehicleProfileObject> vehicle_details, HashMap<String, InsuranceObject> insurance_details, HashMap<String, MotObject> mot_details, HashMap<String, LogbookObject> log_book, HashMap<String, PrivateHireVehicleObject> 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<String, PrivateHireVehicleObject> getPh_car() {
|
|
||||||
return private_hire_vehicle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, DriversLicenseObject> getDriver_license() {
|
|
||||||
return driver_license;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, PrivateHireObject> getPrivate_hire() {
|
|
||||||
return private_hire;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, VehicleProfileObject> getVehicle_details() {
|
|
||||||
return vehicle_details;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, InsuranceObject> getInsurance_details() {
|
|
||||||
return insurance_details;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, MotObject> getMot_details() {
|
|
||||||
return mot_details;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, LogbookObject> getLog_book() {
|
|
||||||
return log_book;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String, DriversLicenseObject>? = null
|
||||||
|
var private_hire: HashMap<String, PrivateHireObject>? = null
|
||||||
|
var vehicle_details: HashMap<String, VehicleProfileObject>? = null
|
||||||
|
var insurance_details: HashMap<String, InsuranceObject>? = null
|
||||||
|
var mot_details: HashMap<String, MotObject>? = null
|
||||||
|
var log_book: HashMap<String, LogbookObject>? = null
|
||||||
|
var ph_car: HashMap<String, PrivateHireVehicleObject>? = null
|
||||||
|
|
||||||
|
constructor()
|
||||||
|
constructor(
|
||||||
|
driver_license: HashMap<String, DriversLicenseObject>?,
|
||||||
|
private_hire: HashMap<String, PrivateHireObject>?,
|
||||||
|
vehicle_details: HashMap<String, VehicleProfileObject>?,
|
||||||
|
insurance_details: HashMap<String, InsuranceObject>?,
|
||||||
|
mot_details: HashMap<String, MotObject>?,
|
||||||
|
log_book: HashMap<String, LogbookObject>?,
|
||||||
|
private_hire_vehicle: HashMap<String, PrivateHireVehicleObject>?
|
||||||
|
) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
package h_mal.appttude.com.driver.Objects;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class InsuranceObject {
|
|
||||||
|
|
||||||
public List<String> photoStrings;
|
|
||||||
public String insurerName;
|
|
||||||
public String expiryDate;
|
|
||||||
|
|
||||||
public InsuranceObject() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public InsuranceObject(List<String> photoStrings, String insurerName, String expiryDate) {
|
|
||||||
this.photoStrings = photoStrings;
|
|
||||||
this.insurerName = insurerName;
|
|
||||||
this.expiryDate = expiryDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getPhotoStrings() {
|
|
||||||
return photoStrings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getInsurerName() {
|
|
||||||
return insurerName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getExpiryDate() {
|
|
||||||
return expiryDate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package h_mal.appttude.com.driver.Objects
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data class InsuranceObject (
|
||||||
|
var photoStrings: MutableList<String?>? = null,
|
||||||
|
var insurerName: String? = null,
|
||||||
|
var expiryDate: String? = 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
)
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -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<MappedObject> CREATOR = new Creator<MappedObject>() {
|
|
||||||
@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);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<MappedObject?> = object : Parcelable.Creator<MappedObject?> {
|
||||||
|
override fun createFromParcel(`in`: Parcel): MappedObject? {
|
||||||
|
return MappedObject(`in`)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newArray(size: Int): Array<MappedObject?> {
|
||||||
|
return arrayOfNulls(size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<MappedObject> {
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<MappedObject>
|
||||||
|
): ArrayAdapter<MappedObject?>(activity, 0, objects) {
|
||||||
|
|
||||||
|
var mappedObject: MappedObject = objects[0]
|
||||||
|
|
||||||
|
var names: Array<String> = 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)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<String> = 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<Void>() {
|
||||||
|
// @Override
|
||||||
|
// public void onComplete(@NonNull Task<Void> 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;
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -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<MappedObject> {
|
|
||||||
|
|
||||||
public ListViewSuperAdapter(@NonNull Context context, @NonNull List<MappedObject> 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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<MappedObject>?) :
|
||||||
|
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<MappedObject>("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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<MappedObject> 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<MappedObject> comparator = new Comparator<MappedObject>() {
|
|
||||||
@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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<MappedObject>? = 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<String> = 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<MappedObject> = object : Comparator<MappedObject> {
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<AuthResult>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<AuthResult> 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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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<AuthResult>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<AuthResult> 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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> task) {
|
|
||||||
Log.d(TAG, "User re-authenticated.");
|
|
||||||
|
|
||||||
user = FirebaseAuth.getInstance().getCurrentUser();
|
|
||||||
if (selector.equals(EMAIL_CONSTANT)){
|
|
||||||
user.updateEmail(changeText)
|
|
||||||
.addOnCompleteListener(new OnCompleteListener<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(@NonNull Task<Void> 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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 <T : ViewModel> create(modelClass: Class<T>): 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
123
app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt
Normal file
123
app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt
Normal file
@@ -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<V : BaseViewModel> : AppCompatActivity(), KodeinAware {
|
||||||
|
|
||||||
|
private lateinit var loadingView: View
|
||||||
|
|
||||||
|
abstract fun getViewModel(): V?
|
||||||
|
abstract val layoutId: Int
|
||||||
|
|
||||||
|
override val kodein by kodein()
|
||||||
|
val factory by instance<ApplicationViewModelFactory>()
|
||||||
|
|
||||||
|
inline fun <reified VM : ViewModel> createLazyViewModel(): Lazy<VM> = viewModels { factory }
|
||||||
|
inline fun <reified VM : ViewModel> 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 <A : AppCompatActivity> startActivity(activity: Class<A>) {
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
145
app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt
Normal file
145
app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt
Normal file
@@ -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<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||||
|
|
||||||
|
var mActivity: BaseActivity<V>? = 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<ApplicationViewModelFactory>()
|
||||||
|
|
||||||
|
inline fun <reified VM : ViewModel> getFragmentViewModel(): Lazy<VM> = 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<V>
|
||||||
|
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<Uri> {
|
||||||
|
val list = mutableListOf<Uri>()
|
||||||
|
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<Uri>?){ }
|
||||||
|
|
||||||
|
fun openGalleryForImage() {
|
||||||
|
val intent = Intent(Intent.ACTION_PICK)
|
||||||
|
intent.type = "image/*"
|
||||||
|
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multipleImage);
|
||||||
|
startActivityForResult(intent, IMAGE_SELECT_REQUEST_CODE)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<ViewState> = MutableLiveData()
|
||||||
|
|
||||||
|
fun onStart() {
|
||||||
|
uiState.postValue(ViewState.HasStarted)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T : Any> 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<V : DataSubmissionBaseViewModel<T>, T: Any> : BaseFragment<BaseViewModel>(){
|
||||||
|
|
||||||
|
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<String>,
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<T : Any>(
|
||||||
|
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<Uri?>?): Job = Job()
|
||||||
|
open fun setDataInDatabase(data: T) { }
|
||||||
|
|
||||||
|
inline fun <reified T : Any> getDataClass() = io {
|
||||||
|
doTryOperation("Failed to retrieve $objectName") {
|
||||||
|
val data = databaseRef.getDataFromDatabaseRef<T>()
|
||||||
|
onSuccess(data ?: FirebaseCompletion.Default)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun <T : Any> 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<Uri?>?): List<String?> {
|
||||||
|
if (localImageUris.isNullOrEmpty()){
|
||||||
|
throw IOException("No images is selected")
|
||||||
|
}
|
||||||
|
val listOfUrls = mutableListOf<String>()
|
||||||
|
localImageUris.forEach { uri ->
|
||||||
|
uploadImage(uri)?.let {
|
||||||
|
listOfUrls.add(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return listOfUrls
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun <T, R> Iterable<T>.mapSuspend(transform: suspend (T) -> R): List<R> =
|
||||||
|
coroutineScope { map { t: T -> async { transform(t) } }.map { it.await() } }
|
||||||
|
|
||||||
|
|
||||||
|
suspend fun <T, R> Iterable<T>.mapIndexSuspend(transform: suspend (index: Int, T) -> R) =
|
||||||
|
coroutineScope { mapIndexed { index: Int, t: T -> async { transform(index, t) } }.map { it.await() } }
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package h_mal.appttude.com.driver.data
|
||||||
|
|
||||||
|
sealed class DataFieldState {
|
||||||
|
object DefaultState : DataFieldState()
|
||||||
|
object NonUserStateUpdated: DataFieldState()
|
||||||
|
object UserUpdateState: DataFieldState()
|
||||||
|
}
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -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<AuthResult> =
|
||||||
|
auth.signInWithEmailAndPassword(email, password)
|
||||||
|
|
||||||
|
override fun registerUser(email: String, password: String): Task<AuthResult> =
|
||||||
|
auth.createUserWithEmailAndPassword(email, password)
|
||||||
|
|
||||||
|
override fun logOut() = auth.signOut()
|
||||||
|
|
||||||
|
override fun forgotPassword(email: String): Task<Void> = auth.sendPasswordResetEmail(email)
|
||||||
|
|
||||||
|
override fun updateProfile(
|
||||||
|
name: String?,
|
||||||
|
profilePic: Uri?
|
||||||
|
): Task<Void>? {
|
||||||
|
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<Void>? {
|
||||||
|
val credential = EmailAuthProvider.getCredential(email, password)
|
||||||
|
|
||||||
|
return getUser()?.reauthenticate(credential)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun updateEmail(email: String): Task<Void>? = getUser()?.updateEmail(email)
|
||||||
|
override fun updatePassword(password: String): Task<Void>? = getUser()?.updatePassword(password)
|
||||||
|
override fun deleteProfile() = getUser()?.delete()
|
||||||
|
}
|
||||||
@@ -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<AuthResult>
|
||||||
|
fun registerUser(email: String, password: String): Task<AuthResult>
|
||||||
|
fun logOut()
|
||||||
|
fun forgotPassword(email: String): Task<Void>
|
||||||
|
fun updateProfile(
|
||||||
|
name: String?,
|
||||||
|
profilePic: Uri?
|
||||||
|
): Task<Void>?
|
||||||
|
fun reauthenticate(
|
||||||
|
email: String,
|
||||||
|
password: String
|
||||||
|
): Task<Void>?
|
||||||
|
fun updateEmail(email: String): Task<Void>?
|
||||||
|
fun updatePassword(password: String): Task<Void>?
|
||||||
|
fun deleteProfile(): Task<Void>?
|
||||||
|
}
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -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 <T: Any> 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)
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user