initial
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/.idea/workspace.xml
|
||||
/.idea/libraries
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
@@ -0,0 +1 @@
|
||||
/build
|
||||
@@ -0,0 +1,94 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'realm-android'
|
||||
|
||||
android {
|
||||
namespace "id.ontime.driver"
|
||||
signingConfigs {
|
||||
debug {
|
||||
// Use default debug keystore on this machine
|
||||
}
|
||||
}
|
||||
compileSdk 33
|
||||
|
||||
defaultConfig {
|
||||
applicationId "id.ontime.driver"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionCode 10
|
||||
versionName '1.1.0'
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
multiDexEnabled true
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
}
|
||||
productFlavors {
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.debug
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
debug {
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
abortOnError false
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
implementation('com.mikepenz:fastadapter:2.0.0@aar') {
|
||||
transitive = true
|
||||
}
|
||||
|
||||
//noinspection GradleCompatible
|
||||
implementation 'com.google.android.gms:play-services-location:19.0.1'
|
||||
implementation 'com.google.android.libraries.places:places:2.5.0'
|
||||
implementation 'com.google.android.gms:play-services-maps:18.0.2'
|
||||
implementation 'com.google.android.gms:play-services-auth:20.1.0'
|
||||
implementation 'com.google.firebase:firebase-database:20.0.3'
|
||||
implementation 'com.google.firebase:firebase-storage:20.0.0'
|
||||
implementation 'com.google.firebase:firebase-core:20.1.0'
|
||||
implementation 'com.google.firebase:firebase-messaging:20.2.0'
|
||||
implementation 'com.google.firebase:firebase-auth:19.3.1'
|
||||
implementation 'androidx.appcompat:appcompat:1.4.1'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
||||
implementation 'com.google.android.material:material:1.5.0'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation 'com.facebook.shimmer:shimmer:0.1.0@aar'
|
||||
implementation 'com.google.guava:guava:25.0-android'
|
||||
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
|
||||
implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
|
||||
implementation 'me.relex:circleindicator:1.2.1@aar'
|
||||
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2'
|
||||
implementation 'com.facebook.shimmer:shimmer:0.1.0@aar'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2'
|
||||
implementation 'com.mobsandgeeks:android-saripaar:2.0.3'
|
||||
implementation 'net.the4thdimension:audio-wife:1.0.3'
|
||||
implementation 'org.greenrobot:eventbus:3.0.0'
|
||||
implementation 'com.makeramen:roundedimageview:2.2.1'
|
||||
implementation 'com.squareup.picasso:picasso:2.5.2'
|
||||
implementation 'com.github.siyamed:android-shape-imageview:0.9.3'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'de.hdodenhof:circleimageview:3.1.0'
|
||||
implementation 'com.github.yesterselga:country-picker-android:1.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
|
||||
implementation 'com.wdullaer:materialdatetimepicker:3.2.0'
|
||||
implementation 'org.jsoup:jsoup:1.11.3'
|
||||
implementation "androidx.exifinterface:exifinterface:1.3.3"
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
@@ -0,0 +1,10 @@
|
||||
# ButterKnife config start
|
||||
# Retain generated class which implement Unbinder.
|
||||
-keep public class * implements butterknife.Unbinder { public <init>(...); }
|
||||
|
||||
# Prevent obfuscation of types which use ButterKnife annotations since the simple name
|
||||
# is used to reflectively look up the generated ViewBinding.
|
||||
-keep class butterknife.*
|
||||
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
|
||||
-keepclasseswithmembernames class * { @butterknife.* <fields>; }
|
||||
# ButterKnife config end
|
||||
@@ -0,0 +1,31 @@
|
||||
# Configuration for Guava 18.0
|
||||
#
|
||||
# disagrees with instructions provided by Guava project: https://code.google.com/p/guava-libraries/wiki/UsingProGuardWithGuava
|
||||
|
||||
-keep class com.google.common.io.Resources {
|
||||
public static <methods>;
|
||||
}
|
||||
-keep class com.google.common.collect.Lists {
|
||||
public static ** reverse(**);
|
||||
}
|
||||
-keep class com.google.common.base.Charsets {
|
||||
public static <fields>;
|
||||
}
|
||||
|
||||
-keep class com.google.common.base.Joiner {
|
||||
public static com.google.common.base.Joiner on(java.lang.String);
|
||||
public ** join(...);
|
||||
}
|
||||
|
||||
-keep class com.google.common.collect.MapMakerInternalMap$ReferenceEntry
|
||||
-keep class com.google.common.cache.LocalCache$ReferenceEntry
|
||||
|
||||
# http://stackoverflow.com/questions/9120338/proguard-configuration-for-guava-with-obfuscation-and-optimization
|
||||
-dontwarn javax.annotation.**
|
||||
-dontwarn javax.inject.**
|
||||
-dontwarn sun.misc.Unsafe
|
||||
|
||||
# Guava 19.0
|
||||
-dontwarn java.lang.ClassValue
|
||||
-dontwarn com.google.j2objc.annotations.Weak
|
||||
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
||||
@@ -0,0 +1,7 @@
|
||||
# OkHttp
|
||||
-keepattributes Signature
|
||||
-keepattributes *Annotation*
|
||||
-keep class okhttp3.** { *; }
|
||||
-keep interface okhttp3.** { *; }
|
||||
-dontwarn okhttp3.**
|
||||
-dontwarn okio.**
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in D:\bradhawk\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
#-dontwarn ourdevelopsgoeks.**
|
||||
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-verbose
|
||||
|
||||
#-dontwarn retrofit2.**
|
||||
#-keep class retrofit2.** { *; }
|
||||
#-keepattributes Signature
|
||||
#-keepattributes Exceptions
|
||||
#
|
||||
-dontwarn com.squareup.picasso.**
|
||||
#-keep class co.squareup.picasso.** { *; }
|
||||
#
|
||||
#-dontwarn co.google.common.**
|
||||
#-keep class co.google.common.** { *; }
|
||||
#
|
||||
#-dontwarn okio.**
|
||||
#-keep class okio.** { *; }
|
||||
#
|
||||
#-dontwarn android.**
|
||||
#-keep class android.** { *; }
|
||||
#
|
||||
#-dontwarn android.content.**
|
||||
#-keep class android.content.** { *; }
|
||||
##
|
||||
#-dontwarn android.graphics.**
|
||||
#-keep class android.graphics.** { *; }
|
||||
##
|
||||
#-dontwarn android.util.**
|
||||
#-keep class android.util.** { *; }
|
||||
##
|
||||
#-dontwarn android.view.**
|
||||
#-keep class android.view.** { *; }
|
||||
#
|
||||
-dontwarn com.balqisstuido.goeks.**
|
||||
-keep class ourdevelops.goeks.** { *; }
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
## Optimization is turned off by default. Dex does not like code run
|
||||
## through the ProGuard optimize and preverify steps (and performs some
|
||||
## of these optimizations on its own).
|
||||
##-dontoptimize
|
||||
##-dontpreverify
|
||||
#
|
||||
## If you want to enable optimization, you should include the
|
||||
## following:
|
||||
#-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||||
#-optimizationpasses 5
|
||||
#-allowaccessmodification
|
||||
##
|
||||
## Note that you cannot just include these flags in your own
|
||||
## configuration file; if you are including this file, optimization
|
||||
## will be turned off. You'll need to either edit this file, or
|
||||
## duplicate the contents of this file and remove the include of this
|
||||
## file from your project's proguard.config path property.
|
||||
#
|
||||
#-keep public class * extends android.app.Activity
|
||||
#-keep public class * extends android.app.Application
|
||||
#-keep public class * extends android.app.Service
|
||||
#-keep public class * extends android.content.BroadcastReceiver
|
||||
#-keep public class * extends android.content.ContentProvider
|
||||
#-keep public class * extends android.app.backup.BackupAgent
|
||||
#-keep public class * extends android.preference.Preference
|
||||
#-keep public class * extends android.support.v4.app.Fragment
|
||||
#-keep public class * extends android.support.v4.app.DialogFragment
|
||||
#-keep public class * extends co.actionbarsherlock.app.SherlockListFragment
|
||||
#-keep public class * extends co.actionbarsherlock.app.SherlockFragment
|
||||
#-keep public class * extends co.actionbarsherlock.app.SherlockFragmentActivity
|
||||
#-keep public class * extends android.app.Fragment
|
||||
#-keep public class co.android.vending.licensing.ILicensingService
|
||||
#
|
||||
## For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
||||
#-keepclasseswithmembernames class * {
|
||||
# native <methods>;
|
||||
#}
|
||||
#
|
||||
#-keep public class * extends android.view.View {
|
||||
# public <init>(android.content.Context);
|
||||
# public <init>(android.content.Context, android.util.AttributeSet);
|
||||
# public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
# public void set*(...);
|
||||
#}
|
||||
#
|
||||
#-keepclasseswithmembers class * {
|
||||
# public <init>(android.content.Context, android.util.AttributeSet);
|
||||
#}
|
||||
#
|
||||
#-keepclasseswithmembers class * {
|
||||
# public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
#}
|
||||
#
|
||||
#-keepclassmembers class * extends android.app.Activity {
|
||||
# public void *(android.view.View);
|
||||
#}
|
||||
#
|
||||
## For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
||||
#-keepclassmembers enum * {
|
||||
# public static **[] values();
|
||||
# public static ** valueOf(java.lang.String);
|
||||
#}
|
||||
#
|
||||
#-keep class * implements android.os.Parcelable {
|
||||
# public static final android.os.Parcelable$Creator *;
|
||||
#}
|
||||
#
|
||||
#-keepclassmembers class **.R$* {
|
||||
# public static <fields>;
|
||||
#}
|
||||
#
|
||||
#-keep class android.support.v4.app.** { *; }
|
||||
#-keep interface android.support.v4.app.** { *; }
|
||||
#-keep class co.actionbarsherlock.** { *; }
|
||||
#-keep interface co.actionbarsherlock.** { *; }
|
||||
## The support library contains references to newer platform versions.
|
||||
## Don't warn about those in case this app is linking against an older
|
||||
## platform version. We know about them, and they are safe.
|
||||
#-dontwarn android.support.**
|
||||
#-dontwarn co.google.ads.**
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "APK",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "id.ontime.driver",
|
||||
"variantName": "release",
|
||||
"elements": [
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 10,
|
||||
"versionName": "1.1.0",
|
||||
"outputFile": "app-release.apk"
|
||||
}
|
||||
],
|
||||
"elementType": "File"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Platform calls Class.forName on types which do not exist on Android to determine platform.
|
||||
-dontnote retrofit2.Platform
|
||||
# Platform used when running on RoboVM on iOS. Will not be used at runtime.
|
||||
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
|
||||
# Platform used when running on Java 8 VMs. Will not be used at runtime.
|
||||
-dontwarn retrofit2.Platform$Java8
|
||||
# Retain generic type information for use by reflection by converters and adapters.
|
||||
-keepattributes Signature
|
||||
# Retain declared checked exceptions for use by a Proxy instance.
|
||||
-keepattributes Exceptions
|
||||
@@ -0,0 +1,2 @@
|
||||
-keep class com.mobsandgeeks.saripaar.** {*;}
|
||||
-keep @com.mobsandgeeks.saripaar.annotation.ValidateUsing class * {*;}
|
||||
@@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="id.ontime.driver"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
tools:ignore="ScopedStorage" />
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||
<uses-permission android:name="android.permission.GET_TASKS" />
|
||||
|
||||
<uses-feature android:name="android.hardware.camera" />
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" />
|
||||
|
||||
<application
|
||||
android:name="id.ontime.driver.constants.BaseApp"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:largeHeap="true"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:supportsRtl="false"
|
||||
android:theme="@style/AppTheme"
|
||||
tools:replace="android:supportsRtl"
|
||||
tools:targetApi="n">
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.ConfirmWAActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.NewOrderActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Login_phone"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
|
||||
|
||||
<receiver android:name="id.ontime.driver.utils.MyLocationService" />
|
||||
|
||||
<service android:name="id.ontime.driver.utils.api.service.MessagingService"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.WalletActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/noActionBar"/>
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.ChatActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/noActionBar"/>
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.WithdrawActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Login_phone"
|
||||
android:exported="false"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.SplashActivity"
|
||||
android:exported="true"
|
||||
android:noHistory="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.IntroActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.TopupSaldoActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.PrivacyActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/noActionBar" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.RegisterActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/noActionBar" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.OrderDetailActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/noActionBar" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.EditKendaraanActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Login_phone" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.ChangepassActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Login_phone" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.EditProfileActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/noActionBar" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.LoginActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Login_phone"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.LupapassActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Login_phone"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
|
||||
<activity
|
||||
android:name="id.ontime.driver.activity.MainActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="true"
|
||||
android:launchMode="singleInstance"
|
||||
android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
tools:replace="android:launchMode" />
|
||||
|
||||
<service android:name="com.google.firebase.components.ComponentDiscoveryService"
|
||||
android:exported="false"/>
|
||||
|
||||
<meta-data
|
||||
android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
|
||||
android:value="com.google.firebase.components.ComponentRegistrar" />
|
||||
<meta-data
|
||||
android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
|
||||
android:value="com.google.firebase.components.ComponentRegistrar" />
|
||||
<meta-data
|
||||
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
|
||||
android:value="com.google.firebase.components.ComponentRegistrar" />
|
||||
<meta-data
|
||||
android:name="com.google.android.geo.API_KEY"
|
||||
android:value="@string/google_maps_key" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.fileprovider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider>
|
||||
|
||||
<uses-library
|
||||
android:name="org.apache.http.legacy"
|
||||
android:required="false" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
+169
@@ -0,0 +1,169 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import
|
||||
android.content.Context;
|
||||
import
|
||||
android.graphics.Typeface;
|
||||
import
|
||||
android.util.AttributeSet;
|
||||
|
||||
public
|
||||
class
|
||||
AutoCompleteTextViewSFProDisplayRegular
|
||||
extends
|
||||
androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
AutoCompleteTextViewSFProDisplayRegular(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs,
|
||||
int
|
||||
defStyle)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs,
|
||||
defStyle);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
AutoCompleteTextViewSFProDisplayRegular(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
AutoCompleteTextViewSFProDisplayRegular(Context
|
||||
context)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private
|
||||
void
|
||||
init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if
|
||||
(!isInEditMode())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(),
|
||||
"fonts/Montserrat_SemiBold.ttf"));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import
|
||||
android.content.Context;
|
||||
import
|
||||
android.graphics.Typeface;
|
||||
import
|
||||
android.util.AttributeSet;
|
||||
|
||||
public
|
||||
class
|
||||
Button_SF_Pro_Display_Medium
|
||||
extends
|
||||
androidx.appcompat.widget.AppCompatButton
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
Button_SF_Pro_Display_Medium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs,
|
||||
int
|
||||
defStyle)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs,
|
||||
defStyle);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
Button_SF_Pro_Display_Medium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
Button_SF_Pro_Display_Medium(Context
|
||||
context)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private
|
||||
void
|
||||
init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if
|
||||
(!isInEditMode())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(),
|
||||
"fonts/Montserrat_Bold.ttf"));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import
|
||||
android.content.Context;
|
||||
import
|
||||
android.graphics.Typeface;
|
||||
import
|
||||
android.util.AttributeSet;
|
||||
|
||||
public
|
||||
class
|
||||
EditTextSFProDisplayMedium
|
||||
extends
|
||||
androidx.appcompat.widget.AppCompatEditText
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
EditTextSFProDisplayMedium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs,
|
||||
int
|
||||
defStyle)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs,
|
||||
defStyle);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
EditTextSFProDisplayMedium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
EditTextSFProDisplayMedium(Context
|
||||
context)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private
|
||||
void
|
||||
init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if
|
||||
(!isInEditMode())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(),
|
||||
"fonts/Montserrat_Bold.ttf"));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import
|
||||
android.content.Context;
|
||||
import
|
||||
android.graphics.Typeface;
|
||||
import
|
||||
android.util.AttributeSet;
|
||||
|
||||
public
|
||||
class
|
||||
EditTextSFProDisplayRegular
|
||||
extends
|
||||
androidx.appcompat.widget.AppCompatEditText
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
EditTextSFProDisplayRegular(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs,
|
||||
int
|
||||
defStyle)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs,
|
||||
defStyle);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
EditTextSFProDisplayRegular(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
EditTextSFProDisplayRegular(Context
|
||||
context)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private
|
||||
void
|
||||
init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if
|
||||
(!isInEditMode())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(),
|
||||
"fonts/Montserrat_SemiBold.ttf"));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import
|
||||
android.annotation.SuppressLint;
|
||||
import
|
||||
android.content.Context;
|
||||
import
|
||||
android.graphics.Typeface;
|
||||
import
|
||||
android.util.AttributeSet;
|
||||
import
|
||||
android.widget.RadioButton;
|
||||
|
||||
@SuppressLint("AppCompatCustomView")
|
||||
public
|
||||
class
|
||||
RadioButton_SF_Pro_Display_Medium
|
||||
extends
|
||||
RadioButton
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
RadioButton_SF_Pro_Display_Medium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs,
|
||||
int
|
||||
defStyle)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs,
|
||||
defStyle);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
RadioButton_SF_Pro_Display_Medium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
RadioButton_SF_Pro_Display_Medium(Context
|
||||
context)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private
|
||||
void
|
||||
init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if
|
||||
(!isInEditMode())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(),
|
||||
"fonts/Montserrat_Bold.ttf"));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import
|
||||
android.content.Context;
|
||||
import
|
||||
android.graphics.Typeface;
|
||||
import
|
||||
android.util.AttributeSet;
|
||||
|
||||
public
|
||||
class
|
||||
TextViewSFProDisplayMedium
|
||||
extends
|
||||
androidx.appcompat.widget.AppCompatTextView
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
TextViewSFProDisplayMedium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs,
|
||||
int
|
||||
defStyle)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs,
|
||||
defStyle);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
TextViewSFProDisplayMedium(Context
|
||||
context,
|
||||
AttributeSet
|
||||
attrs)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context,
|
||||
attrs);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public
|
||||
TextViewSFProDisplayMedium(Context
|
||||
context)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
super(context);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private
|
||||
void
|
||||
init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if
|
||||
(!isInEditMode())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(),
|
||||
"fonts/Montserrat_Bold.ttf"));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package
|
||||
customfonts;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
public class TextViewSFProDisplayRegular extends androidx.appcompat.widget.AppCompatTextView {
|
||||
|
||||
public TextViewSFProDisplayRegular(Context context, AttributeSet attrs, int defStyle) {
|
||||
|
||||
super(context, attrs, defStyle);
|
||||
init();
|
||||
}
|
||||
public TextViewSFProDisplayRegular(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
}
|
||||
public TextViewSFProDisplayRegular(Context context) {
|
||||
super(context);
|
||||
init();
|
||||
}
|
||||
private void init() {
|
||||
if (!isInEditMode()) {
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/Montserrat_SemiBold.ttf"));
|
||||
}
|
||||
}
|
||||
}
|
||||
+168
@@ -0,0 +1,168 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.json.ChangePassRequestJson;
|
||||
import id.ontime.driver.json.LoginResponseJson;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.models.FirebaseToken;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import io.realm.Realm;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class ChangepassActivity extends AppCompatActivity {
|
||||
|
||||
ImageView backbtn;
|
||||
Button submit;
|
||||
EditText pass, passbaru;
|
||||
TextView notiftext;
|
||||
RelativeLayout rlnotif, rlprogress;
|
||||
String disableback;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_changepassword);
|
||||
|
||||
backbtn = findViewById(R.id.back_btn_verify);
|
||||
submit = findViewById(R.id.buttonconfirm);
|
||||
pass = findViewById(R.id.password);
|
||||
passbaru = findViewById(R.id.newpassword);
|
||||
notiftext = findViewById(R.id.textnotif2);
|
||||
rlnotif = findViewById(R.id.rlnotif2);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
|
||||
disableback = "false";
|
||||
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
submit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (pass.getText().toString().isEmpty()) {
|
||||
notif("old password cant be empty!");
|
||||
} else if (passbaru.getText().toString().isEmpty()) {
|
||||
notif("please input your new password!");
|
||||
} else {
|
||||
get();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void get() {
|
||||
progressshow();
|
||||
ChangePassRequestJson request = new ChangePassRequestJson();
|
||||
User loginuser = BaseApp.getInstance(ChangepassActivity.this).getLoginUser();
|
||||
request.setNotelepon(loginuser.getNoTelepon());
|
||||
request.setPassword(pass.getText().toString());
|
||||
request.setNewPassword(passbaru.getText().toString());
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, request.getNotelepon(), request.getPassword());
|
||||
service.changepass(request).enqueue(new Callback<LoginResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<LoginResponseJson> call,@NonNull Response<LoginResponseJson> response) {
|
||||
progresshide();
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("found")) {
|
||||
|
||||
User user = response.body().getData().get(0);
|
||||
saveUser(user);
|
||||
finish();
|
||||
|
||||
|
||||
} else {
|
||||
notif(response.body().getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<LoginResponseJson> call,@NonNull Throwable t) {
|
||||
progresshide();
|
||||
t.printStackTrace();
|
||||
notif("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
notiftext.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
private void saveUser(User user) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.copyToRealm(user);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(ChangepassActivity.this).setLoginUser(user);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
|
||||
public void onMessageEvent(FirebaseToken response) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(FirebaseToken.class);
|
||||
realm.copyToRealm(response);
|
||||
realm.commitTransaction();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
|
||||
public class ConfirmWAActivity extends AppCompatActivity {
|
||||
|
||||
EditText nominaltopup, namabank, norekening, nama, nohp;
|
||||
Button submit;
|
||||
TextView notif;
|
||||
ImageView backbtn, images;
|
||||
RelativeLayout rlnotif, rlprogress;
|
||||
String disableback;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_confirm_wa);
|
||||
disableback = "false";
|
||||
nominaltopup = findViewById(R.id.nominaltopup);
|
||||
namabank = findViewById(R.id.namabank);
|
||||
norekening = findViewById(R.id.norekening);
|
||||
nama = findViewById(R.id.nama);
|
||||
nohp = findViewById(R.id.nohp);
|
||||
backbtn = findViewById(R.id.back_btn);
|
||||
submit = findViewById(R.id.submit);
|
||||
rlnotif = findViewById(R.id.rlnotif);
|
||||
notif = findViewById(R.id.textnotif);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
images = findViewById(R.id.imagebackground);
|
||||
|
||||
submit.setOnClickListener(v -> {
|
||||
String isinominal = nominaltopup.getText().toString();
|
||||
String isinamabank = namabank.getText().toString();
|
||||
String isinorekening = norekening.getText().toString();
|
||||
String isinama = nama.getText().toString();
|
||||
String isinohp = nohp.getText().toString();
|
||||
|
||||
// boolean installed = appInstalledOrNot("co.whatsapp");
|
||||
// if (installed) {
|
||||
SettingPreference sp = new SettingPreference(v.getContext());
|
||||
String phoneNumber = sp.getSetting()[7];
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse("https://api.whatsapp.com/send?phone=" + "+62" + phoneNumber + "&text=Hai admin, Saya mau Konfirmasi TOPUP saldo Driver %0A%0AJumlah Topup : " + isinominal + "%0ANama Bank : " + isinamabank +"%0ANo. Rekening saya: " + isinorekening + " %0AAtas Nama : " + isinama + " %0ANo. HP terdaftar : " +isinohp));
|
||||
startActivity(intent);
|
||||
// }else{
|
||||
// Toast.makeText( ConfirmWAActivity.this, "install whatsapp agar bisa menghubungi team Admin", Toast.LENGTH_SHORT).show();
|
||||
// }
|
||||
|
||||
});
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
/* private boolean appInstalledOrNot(String url) {
|
||||
PackageManager packageManager = getPackageManager();
|
||||
boolean app_installed;
|
||||
try {
|
||||
packageManager.getPackageInfo(url, packageManager.GET_ACTIVITIES);
|
||||
app_installed = true;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
app_installed = false;
|
||||
}
|
||||
return app_installed;
|
||||
} */
|
||||
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
}
|
||||
+167
@@ -0,0 +1,167 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.json.LoginResponseJson;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.EditKendaraanRequestJson;
|
||||
import id.ontime.driver.models.FirebaseToken;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import io.realm.Realm;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class EditKendaraanActivity extends AppCompatActivity {
|
||||
|
||||
ImageView backbtn;
|
||||
|
||||
EditText brand, type, platnomor, warna;
|
||||
TextView notiftext;
|
||||
RelativeLayout rlnotif, rlprogress;
|
||||
String disableback;
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_editkendaraan);
|
||||
User driver = BaseApp.getInstance(this).getLoginUser();
|
||||
backbtn = findViewById(R.id.back_btn_verify);
|
||||
|
||||
brand = findViewById(R.id.brand);
|
||||
type = findViewById(R.id.type);
|
||||
platnomor = findViewById(R.id.platnomor);
|
||||
warna = findViewById(R.id.color);
|
||||
notiftext = findViewById(R.id.textnotif2);
|
||||
rlnotif = findViewById(R.id.rlnotif2);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
|
||||
disableback = "false";
|
||||
brand.setText(driver.getMerek());
|
||||
type.setText(driver.getTipe());
|
||||
platnomor.setText(driver.getNomorkendaraan());
|
||||
warna.setText(driver.getWarna());
|
||||
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void get() {
|
||||
progressshow();
|
||||
EditKendaraanRequestJson request = new EditKendaraanRequestJson();
|
||||
User loginuser = BaseApp.getInstance(EditKendaraanActivity.this).getLoginUser();
|
||||
request.setNoTelepon(loginuser.getNoTelepon());
|
||||
request.setId(loginuser.getId());
|
||||
request.setId_kendaraan(loginuser.getIdk());
|
||||
request.setMerek(brand.getText().toString());
|
||||
request.setTipe(type.getText().toString());
|
||||
request.setNo_kendaraan(platnomor.getText().toString());
|
||||
request.setWarna(warna.getText().toString());
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, request.getNoTelepon(), loginuser.getPassword());
|
||||
service.editKendaraan(request).enqueue(new Callback<LoginResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<LoginResponseJson> call, @NonNull Response<LoginResponseJson> response) {
|
||||
progresshide();
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
|
||||
User user = response.body().getData().get(0);
|
||||
saveUser(user);
|
||||
finish();
|
||||
|
||||
|
||||
} else {
|
||||
notif(response.body().getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<LoginResponseJson> call, @NonNull Throwable t) {
|
||||
progresshide();
|
||||
t.printStackTrace();
|
||||
notif("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
notiftext.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
private void saveUser(User user) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.copyToRealm(user);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(EditKendaraanActivity.this).setLoginUser(user);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
|
||||
public void onMessageEvent(FirebaseToken response) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(FirebaseToken.class);
|
||||
realm.copyToRealm(response);
|
||||
realm.commitTransaction();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+503
@@ -0,0 +1,503 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Matrix;
|
||||
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.provider.MediaStore;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.json.LoginResponseJson;
|
||||
import id.ontime.driver.json.EditprofileRequestJson;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
||||
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
|
||||
import com.ybs.countrypicker.CountryPicker;
|
||||
import com.ybs.countrypicker.CountryPickerListener;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.exifinterface.media.ExifInterface;
|
||||
|
||||
import io.realm.Realm;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class EditProfileActivity extends AppCompatActivity {
|
||||
|
||||
ImageView foto, gantifoto, backbtn, backButtonverify;
|
||||
EditText phone, nama, email;
|
||||
TextView tanggal, countryCode, textnotif;
|
||||
Button submit;
|
||||
RelativeLayout rlnotif;
|
||||
private SimpleDateFormat dateFormatter, dateFormatterview;
|
||||
byte[] imageByteArray;
|
||||
Bitmap decoded;
|
||||
String dateview, disableback, onsubmit;
|
||||
private final int GALLERY = 7;
|
||||
private final int CAMERA = 8;
|
||||
private BottomSheetDialog mBottomSheetDialog;
|
||||
private BottomSheetBehavior mBehavior;
|
||||
|
||||
String country_iso_code = "en";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_editprofile);
|
||||
View bottom_sheet = findViewById(R.id.bottom_sheet);
|
||||
mBehavior = BottomSheetBehavior.from(bottom_sheet);
|
||||
foto = findViewById(R.id.foto);
|
||||
gantifoto = findViewById(R.id.editfoto);
|
||||
backbtn = findViewById(R.id.back_btn);
|
||||
phone = findViewById(R.id.phonenumber);
|
||||
nama = findViewById(R.id.nama);
|
||||
email = findViewById(R.id.email);
|
||||
tanggal = findViewById(R.id.tanggal);
|
||||
submit = findViewById(R.id.submit);
|
||||
rlnotif = findViewById(R.id.rlnotif);
|
||||
textnotif = findViewById(R.id.textnotif);
|
||||
countryCode = findViewById(R.id.countrycode);
|
||||
backButtonverify = findViewById(R.id.back_btn_verify);
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
onsubmit = "true";
|
||||
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
PicassoTrustAll.getInstance(this)
|
||||
.load(Constants.IMAGESDRIVER + loginUser.getFotodriver())
|
||||
.placeholder(R.drawable.image_placeholder)
|
||||
.resize(250, 250)
|
||||
.into(foto);
|
||||
|
||||
phone.setText(loginUser.getPhone());
|
||||
nama.setText(loginUser.getFullnama());
|
||||
email.setText(loginUser.getEmail());
|
||||
dateview = loginUser.getTglLahir();
|
||||
countryCode.setText(loginUser.getCountrycode());
|
||||
|
||||
gantifoto.setOnClickListener(new View.OnClickListener() {
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectImage();
|
||||
}
|
||||
});
|
||||
|
||||
foto.setOnClickListener(new View.OnClickListener() {
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectImage();
|
||||
}
|
||||
});
|
||||
|
||||
countryCode.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("WrongConstant")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final CountryPicker picker = CountryPicker.newInstance("Select Country");
|
||||
picker.setListener(new CountryPickerListener() {
|
||||
@Override
|
||||
public void onSelectCountry(String name, String code, String dialCode, int flagDrawableResID) {
|
||||
countryCode.setText(dialCode);
|
||||
picker.dismiss();
|
||||
country_iso_code = code;
|
||||
}
|
||||
});
|
||||
picker.setStyle(R.style.countrypicker_style, R.style.countrypicker_style);
|
||||
picker.show(getSupportFragmentManager(), "Select Country");
|
||||
}
|
||||
});
|
||||
|
||||
Date myDate = null;
|
||||
dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
|
||||
dateFormatterview = new SimpleDateFormat("dd MMM yyyy", Locale.US);
|
||||
try {
|
||||
if (loginUser.getTglLahir() != null) {
|
||||
myDate = dateFormatter.parse(loginUser.getTglLahir());
|
||||
}
|
||||
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String finalDate = dateFormatterview.format(Objects.requireNonNull(myDate));
|
||||
tanggal.setText(finalDate);
|
||||
submit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
|
||||
final String emailvalidate = email.getText().toString();
|
||||
|
||||
if (TextUtils.isEmpty(phone.getText().toString())) {
|
||||
|
||||
notif(getString(R.string.phoneempty));
|
||||
|
||||
} else if (TextUtils.isEmpty(nama.getText().toString())) {
|
||||
|
||||
notif("Name cant be empty");
|
||||
|
||||
} else if (TextUtils.isEmpty(email.getText().toString())) {
|
||||
|
||||
notif(getString(R.string.emailempty));
|
||||
|
||||
} else if (TextUtils.isEmpty(tanggal.getText().toString())) {
|
||||
|
||||
notif("birthday cant be empty!");
|
||||
|
||||
} else if (!emailvalidate.matches(emailPattern)) {
|
||||
|
||||
notif("wrong email format!");
|
||||
|
||||
} else {
|
||||
if (onsubmit.equals("true")) {
|
||||
submit.setText(getString(R.string.waiting_pleaseWait));
|
||||
submit.setBackground(getResources().getDrawable(R.drawable.rounded_corners_button));
|
||||
editprofile();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
tanggal.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
showTanggal();
|
||||
}
|
||||
});
|
||||
disableback = "false";
|
||||
|
||||
}
|
||||
|
||||
private void showTanggal() {
|
||||
|
||||
DatePickerDialog datePicker = DatePickerDialog.newInstance(
|
||||
new DatePickerDialog.OnDateSetListener() {
|
||||
@Override
|
||||
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.YEAR, year);
|
||||
calendar.set(Calendar.MONTH, monthOfYear);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
|
||||
long date_ship_millis = calendar.getTimeInMillis();
|
||||
tanggal.setText(dateFormatterview.format(date_ship_millis));
|
||||
dateview = dateFormatter.format(date_ship_millis);
|
||||
}
|
||||
}
|
||||
);
|
||||
datePicker.setThemeDark(false);
|
||||
datePicker.setAccentColor(getResources().getColor(R.color.colorgradient));
|
||||
datePicker.show(getFragmentManager(), "Datepickerdialog");
|
||||
}
|
||||
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
textnotif.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* uploadfoto-------------start.
|
||||
*/
|
||||
private boolean check_ReadStoragepermission() {
|
||||
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
== PackageManager.PERMISSION_GRANTED) {
|
||||
return true;
|
||||
} else {
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
|
||||
Constants.permission_Read_data);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
private void selectImage() {
|
||||
boolean pick = true;
|
||||
if (pick) {
|
||||
if (!checkCameraPermission()) {
|
||||
requestCameraPermission();
|
||||
} else PickImage();
|
||||
} else {
|
||||
if (!checkStoragePermission()) {
|
||||
requestStoragePermission();
|
||||
} else PickImage();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void PickImage() {
|
||||
|
||||
if (mBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) {
|
||||
mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
||||
}
|
||||
|
||||
@SuppressLint("InflateParams") final View mDialog = getLayoutInflater().inflate(R.layout.sheet_upload, null);
|
||||
CardView Galery = mDialog.findViewById(R.id.ll_gallery_intent);
|
||||
CardView Camera = mDialog.findViewById(R.id.ll_camera_intent);
|
||||
|
||||
Galery.setOnClickListener(v -> choosePhotoFromGallery());
|
||||
Camera.setOnClickListener(v -> takePhotoFromCamera());
|
||||
|
||||
mBottomSheetDialog = new BottomSheetDialog(this);
|
||||
mBottomSheetDialog.setContentView(mDialog);
|
||||
mBottomSheetDialog.show();
|
||||
// mBottomSheetDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
mBottomSheetDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
mBottomSheetDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
|
||||
mBottomSheetDialog.getWindow().setGravity(Gravity.BOTTOM);
|
||||
|
||||
|
||||
mBottomSheetDialog.setOnDismissListener(dialog -> mBottomSheetDialog = null);
|
||||
|
||||
}
|
||||
|
||||
public void choosePhotoFromGallery() {
|
||||
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
|
||||
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
|
||||
|
||||
startActivityForResult(galleryIntent, GALLERY);
|
||||
mBottomSheetDialog.dismiss();
|
||||
}
|
||||
|
||||
private void takePhotoFromCamera() {
|
||||
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
startActivityForResult(intent, CAMERA);
|
||||
mBottomSheetDialog.dismiss();
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
private void requestStoragePermission() {
|
||||
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
private void requestCameraPermission() {
|
||||
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
|
||||
}
|
||||
|
||||
private boolean checkStoragePermission() {
|
||||
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
== PackageManager.PERMISSION_GRANTED) {
|
||||
return true;
|
||||
} else {
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
|
||||
Constants.permission_Read_data);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkCameraPermission() {
|
||||
boolean res1 = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED;
|
||||
boolean res2 = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
||||
return res1 && res2;
|
||||
}
|
||||
|
||||
public String getPath(Uri uri) {
|
||||
String result = null;
|
||||
String[] proj = {MediaStore.Images.Media.DATA};
|
||||
Cursor cursor = this.getContentResolver().query(uri, proj, null, null, null);
|
||||
if (cursor != null) {
|
||||
if (cursor.moveToFirst()) {
|
||||
int column_index = cursor.getColumnIndexOrThrow(proj[0]);
|
||||
result = cursor.getString(column_index);
|
||||
}
|
||||
cursor.close();
|
||||
}
|
||||
if (result == null) {
|
||||
result = "Not found";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
if (resultCode == RESULT_CANCELED) {
|
||||
return;
|
||||
}
|
||||
Uri contentURI = data.getData();
|
||||
if (requestCode == GALLERY) {
|
||||
if (data != null) {
|
||||
|
||||
try {
|
||||
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI);
|
||||
String path = saveImage(bitmap);
|
||||
foto.setImageBitmap(bitmap);
|
||||
// Toast.makeText(this, "Image Saved!", Toast.LENGTH_SHORT).show();
|
||||
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(this, "Failed!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
} else if (requestCode == CAMERA) {
|
||||
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
|
||||
foto.setImageBitmap(thumbnail);
|
||||
saveImage(thumbnail);
|
||||
// Toast.makeText(this, "Image Saved!", Toast.LENGTH_SHORT).show();
|
||||
/*Intent i = new Intent(this,MainActivity.class);
|
||||
i.putExtra("imagepath", contentURI.toString());
|
||||
startActivity(i);
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String saveImage(Bitmap myBitmap) {
|
||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||
myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
|
||||
imageByteArray = bytes.toByteArray();
|
||||
decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(bytes.toByteArray()));
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public String getStringImage(Bitmap bmp) {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
bmp.compress(Bitmap.CompressFormat.JPEG, 20, baos);
|
||||
imageByteArray = baos.toByteArray();
|
||||
return Base64.encodeToString(imageByteArray, Base64.DEFAULT);
|
||||
}
|
||||
|
||||
private void editprofile() {
|
||||
onsubmit = "false";
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
EditprofileRequestJson request = new EditprofileRequestJson();
|
||||
request.setFullNama(nama.getText().toString());
|
||||
request.setEmail(email.getText().toString());
|
||||
request.setEmaillama(loginUser.getEmail());
|
||||
request.setId(loginUser.getId());
|
||||
request.setNoTelepon(countryCode.getText().toString().replace("+", "") + phone.getText().toString());
|
||||
request.setPhone(phone.getText().toString());
|
||||
request.setCountrycode(countryCode.getText().toString());
|
||||
request.setPhonelama(loginUser.getNoTelepon());
|
||||
if (imageByteArray != null) {
|
||||
request.setFotopelangganlama(loginUser.getFotodriver());
|
||||
request.setFotopelanggan(getStringImage(decoded));
|
||||
}
|
||||
request.setTglLahir(dateview);
|
||||
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, loginUser.getEmail(), loginUser.getPassword());
|
||||
service.editProfile(request).enqueue(new Callback<LoginResponseJson>() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<LoginResponseJson> call, @NonNull Response<LoginResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
User user = response.body().getData().get(0);
|
||||
saveUser(user);
|
||||
finish();
|
||||
onsubmit = "true";
|
||||
|
||||
} else {
|
||||
onsubmit = "true";
|
||||
submit.setText("Submit");
|
||||
submit.setBackground(getResources().getDrawable(R.drawable.button_round_1));
|
||||
notif(response.body().getMessage());
|
||||
}
|
||||
} else {
|
||||
onsubmit = "true";
|
||||
submit.setText("Submit");
|
||||
submit.setBackground(getResources().getDrawable(R.drawable.button_round_1));
|
||||
notif("error");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<LoginResponseJson> call, @NonNull Throwable t) {
|
||||
t.printStackTrace();
|
||||
notif("error!");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void saveUser(User user) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.copyToRealm(user);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(EditProfileActivity.this).setLoginUser(user);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.utils.AppIntroPagerAdapter;
|
||||
import id.ontime.driver.utils.ProjectUtils;
|
||||
import id.ontime.driver.utils.SharedPrefrence;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
public class IntroActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
|
||||
ViewPager mViewPager;
|
||||
private AppIntroPagerAdapter mAdapter;
|
||||
private LinearLayout viewPagerCountDots;
|
||||
private int dotsCount;
|
||||
private ImageView[] dots;
|
||||
public SharedPrefrence preference;
|
||||
private Context mContext;
|
||||
Button buttonSign;
|
||||
int[] mResources = {R.drawable.slide_one, R.drawable.slide_two, R.drawable.slide_three};
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ProjectUtils.Fullscreen(IntroActivity.this);
|
||||
setContentView(R.layout.activity_intro);
|
||||
mContext = IntroActivity.this;
|
||||
preference = SharedPrefrence.getInstance(mContext);
|
||||
removeNotif();
|
||||
buttonSign = findViewById(R.id.tombolstar);
|
||||
buttonSign.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent i = new Intent(IntroActivity.this, LoginActivity.class);
|
||||
startActivity(i);
|
||||
}
|
||||
});
|
||||
|
||||
mViewPager = findViewById(R.id.viewpager);
|
||||
viewPagerCountDots = findViewById(R.id.viewPagerCountDots);
|
||||
|
||||
|
||||
mAdapter = new AppIntroPagerAdapter(IntroActivity.this, mContext, mResources);
|
||||
mViewPager.setAdapter(mAdapter);
|
||||
mViewPager.setCurrentItem(0);
|
||||
mViewPager.setOnPageChangeListener(this);
|
||||
setPageViewIndicator();
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
private void setPageViewIndicator() {
|
||||
|
||||
Log.d("###setPageViewIndicator", " : called");
|
||||
dotsCount = mAdapter.getCount();
|
||||
dots = new ImageView[dotsCount];
|
||||
|
||||
for (int i = 0; i < dotsCount; i++) {
|
||||
dots[i] = new ImageView(mContext);
|
||||
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.nonselecteditem_dot));
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
25,
|
||||
25
|
||||
);
|
||||
|
||||
params.setMargins(4, 20, 4, 0);
|
||||
|
||||
final int presentPosition = i;
|
||||
dots[presentPosition].setOnTouchListener(new View.OnTouchListener() {
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
mViewPager.setCurrentItem(presentPosition);
|
||||
return true;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
viewPagerCountDots.addView(dots[i], params);
|
||||
}
|
||||
|
||||
dots[0].setImageDrawable(getResources().getDrawable(R.drawable.selecteditem_dot));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
Log.e("###onPageSelected, pos ", String.valueOf(position));
|
||||
for (int i = 0; i < dotsCount; i++) {
|
||||
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.nonselecteditem_dot));
|
||||
}
|
||||
|
||||
|
||||
dots[position].setImageDrawable(getResources().getDrawable(R.drawable.selecteditem_dot));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
|
||||
public void scrollPage(int position) {
|
||||
mViewPager.setCurrentItem(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
clickDone();
|
||||
}
|
||||
|
||||
public void clickDone() {
|
||||
new AlertDialog.Builder(this)
|
||||
.setIcon(R.mipmap.ic_launcher)
|
||||
.setTitle(getString(R.string.app_name))
|
||||
.setMessage(getString(R.string.exit))
|
||||
.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
finish();
|
||||
}
|
||||
})
|
||||
.setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
private void removeNotif() {
|
||||
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||
Objects.requireNonNull(notificationManager).cancel(0);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,568 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ViewFlipper;
|
||||
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.FirebaseException;
|
||||
import com.google.firebase.FirebaseTooManyRequestsException;
|
||||
import com.google.firebase.auth.AuthResult;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
|
||||
import com.google.firebase.auth.PhoneAuthCredential;
|
||||
import com.google.firebase.auth.PhoneAuthProvider;
|
||||
|
||||
import com.google.firebase.iid.FirebaseInstanceId;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.models.FirebaseToken;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.NetworkUtils;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.LoginRequestJson;
|
||||
import id.ontime.driver.json.LoginResponseJson;
|
||||
import com.ybs.countrypicker.CountryPicker;
|
||||
import com.ybs.countrypicker.CountryPickerListener;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.realm.Realm;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class LoginActivity extends AppCompatActivity {
|
||||
|
||||
private String phoneVerificationId;
|
||||
private PhoneAuthProvider.OnVerificationStateChangedCallbacks verificationCallbacks;
|
||||
private PhoneAuthProvider.ForceResendingToken resendToken;
|
||||
private FirebaseAuth fbAuth;
|
||||
EditText phoneText, password, numOne, numTwo, numThree, numFour, numFive, numSix, email;
|
||||
TextView countryCode, sendTo, privacypolicy, textnotif, daftar, textnotif2, lupapass;
|
||||
Button buttonLogin, confirmButton;
|
||||
ImageView backButton, backButtonverify;
|
||||
ViewFlipper viewFlipper;
|
||||
String phoneNumber, disableback;
|
||||
FirebaseAuth mAuth;
|
||||
RelativeLayout rlprogress, rlnotif, rlnotif2, rldaftar;
|
||||
String verify;
|
||||
|
||||
SharedPreferences sharedPreferences;
|
||||
String country_iso_code = "en";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_login);
|
||||
try {
|
||||
fbAuth = FirebaseAuth.getInstance();
|
||||
mAuth = FirebaseAuth.getInstance();
|
||||
} catch (IllegalStateException e) {
|
||||
fbAuth = null;
|
||||
mAuth = null;
|
||||
}
|
||||
|
||||
numOne = findViewById(R.id.numone);
|
||||
numTwo = findViewById(R.id.numtwo);
|
||||
numThree = findViewById(R.id.numthree);
|
||||
numFour = findViewById(R.id.numfour);
|
||||
numFive = findViewById(R.id.numfive);
|
||||
numSix = findViewById(R.id.numsix);
|
||||
privacypolicy = findViewById(R.id.privacypolice);
|
||||
daftar = findViewById(R.id.clickdaftar);
|
||||
rldaftar = findViewById(R.id.rldaftar);
|
||||
lupapass = findViewById(R.id.lupapass);
|
||||
|
||||
phoneText = findViewById(R.id.phonenumber);
|
||||
email = findViewById(R.id.email);
|
||||
countryCode = findViewById(R.id.countrycode);
|
||||
buttonLogin = findViewById(R.id.buttonlogin);
|
||||
backButton = findViewById(R.id.back_btn);
|
||||
confirmButton = findViewById(R.id.buttonconfirm);
|
||||
sendTo = findViewById(R.id.sendtotxt);
|
||||
viewFlipper = findViewById(R.id.viewflipper);
|
||||
backButtonverify = findViewById(R.id.back_btn_verify);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
password = findViewById(R.id.password);
|
||||
rlnotif = findViewById(R.id.rlnotif);
|
||||
textnotif = findViewById(R.id.textnotif);
|
||||
rlnotif2 = findViewById(R.id.rlnotif2);
|
||||
textnotif2 = findViewById(R.id.textnotif2);
|
||||
|
||||
sharedPreferences = getSharedPreferences(Constants.PREF_NAME, MODE_PRIVATE);
|
||||
|
||||
String priv = getResources().getString(R.string.privacy);
|
||||
privacypolicy.setText(Html.fromHtml(priv));
|
||||
|
||||
|
||||
verify = "false";
|
||||
|
||||
buttonLogin.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
String emailText = email != null ? email.getText().toString() : "";
|
||||
String phonetext = phoneText.getText().toString();
|
||||
String pass = password.getText().toString();
|
||||
boolean hasEmail = !TextUtils.isEmpty(emailText);
|
||||
|
||||
if (TextUtils.isEmpty(pass)) {
|
||||
notif(getString(R.string.passempty));
|
||||
} else if (!hasEmail && TextUtils.isEmpty(phonetext)) {
|
||||
notif(getString(R.string.phonepass));
|
||||
} else {
|
||||
if (NetworkUtils.isConnected(LoginActivity.this)) {
|
||||
verify = hasEmail ? "true" : "false";
|
||||
if (!hasEmail) {
|
||||
phoneNumber = countryCode.getText().toString() + phonetext;
|
||||
}
|
||||
progressshow();
|
||||
onSignInClick();
|
||||
} else {
|
||||
progresshide();
|
||||
notif(getString(R.string.text_noInternet));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
countryCode.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("WrongConstant")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final CountryPicker picker = CountryPicker.newInstance("Select Country");
|
||||
picker.setListener(new CountryPickerListener() {
|
||||
@Override
|
||||
public void onSelectCountry(String name, String code, String dialCode, int flagDrawableResID) {
|
||||
countryCode.setText(dialCode);
|
||||
picker.dismiss();
|
||||
country_iso_code = code;
|
||||
}
|
||||
});
|
||||
picker.setStyle(R.style.countrypicker_style, R.style.countrypicker_style);
|
||||
picker.show(getSupportFragmentManager(), "Select Country");
|
||||
}
|
||||
});
|
||||
|
||||
lupapass.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(LoginActivity.this, LupapassActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
daftar.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(LoginActivity.this, RegisterActivity.class);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
privacypolicy.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(LoginActivity.this, PrivacyActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
backButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
backButtonverify.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
confirmButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
verifyCode(viewFlipper);
|
||||
}
|
||||
});
|
||||
disableback = "false";
|
||||
codenumber();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
textnotif.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
public void notif2(String text) {
|
||||
rlnotif2.setVisibility(View.VISIBLE);
|
||||
textnotif2.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif2.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
|
||||
public void codenumber() {
|
||||
|
||||
numOne.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
if (numOne.getText().toString().length() == 0) {
|
||||
numTwo.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
numTwo.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
if (numTwo.getText().toString().length() == 0) {
|
||||
numThree.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
numThree.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
if (numThree.getText().toString().length() == 0) {
|
||||
numFour.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
numFour.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
if (numFour.getText().toString().length() == 0) {
|
||||
numFive.requestFocus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
numFive.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
if (numFive.getText().toString().length() == 0) {
|
||||
numSix.requestFocus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void Nextbtn(View view) {
|
||||
phoneNumber = countryCode.getText().toString() + phoneText.getText().toString();
|
||||
String ccode = countryCode.getText().toString();
|
||||
|
||||
if ((!TextUtils.isEmpty(phoneNumber) && !TextUtils.isEmpty(ccode)) && phoneNumber.length() > 5) {
|
||||
progressshow();
|
||||
Send_Number_tofirebase(phoneNumber);
|
||||
|
||||
} else {
|
||||
notif(getString(R.string.wrongnumber));
|
||||
}
|
||||
}
|
||||
|
||||
public void Send_Number_tofirebase(String phoneNumber) {
|
||||
setUpVerificatonCallbacks();
|
||||
PhoneAuthProvider.getInstance().verifyPhoneNumber(
|
||||
phoneNumber,
|
||||
120,
|
||||
TimeUnit.SECONDS,
|
||||
this,
|
||||
verificationCallbacks);
|
||||
}
|
||||
|
||||
private void setUpVerificatonCallbacks() {
|
||||
verificationCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
|
||||
@Override
|
||||
public void onVerificationCompleted(@NonNull PhoneAuthCredential credential) {
|
||||
signInWithPhoneAuthCredential(credential);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVerificationFailed(@NonNull FirebaseException e) {
|
||||
progresshide();
|
||||
android.util.Log.d("respon", e.toString());
|
||||
notif2("Verifikasi Gagal!");
|
||||
if (e instanceof FirebaseAuthInvalidCredentialsException) {
|
||||
notif2("wrong code!");
|
||||
} else if (e instanceof FirebaseTooManyRequestsException) {
|
||||
notif2("Too Many Requests, please try with other phone number!");
|
||||
notif("Too Many Requests, please try with other phone number!");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onCodeSent(@NonNull String verificationId, @NonNull PhoneAuthProvider.ForceResendingToken token) {
|
||||
phoneVerificationId = verificationId;
|
||||
resendToken = token;
|
||||
sendTo.setText("Send To ( " + phoneNumber + " )");
|
||||
progresshide();
|
||||
viewFlipper.setInAnimation(LoginActivity.this, R.anim.from_right);
|
||||
viewFlipper.setOutAnimation(LoginActivity.this, R.anim.to_left);
|
||||
viewFlipper.setDisplayedChild(1);
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public void verifyCode(View view) {
|
||||
backButton.setVisibility(View.GONE);
|
||||
rldaftar.setVisibility(View.GONE);
|
||||
String code = "" + numOne.getText().toString() + numTwo.getText().toString() + numThree.getText().toString() + numFour.getText().toString() + numFive.getText().toString() + numSix.getText().toString();
|
||||
if (!code.equals("")) {
|
||||
progressshow();
|
||||
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(phoneVerificationId, code);
|
||||
signInWithPhoneAuthCredential(credential);
|
||||
} else {
|
||||
notif2("kode verifikasi masih kosong");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
|
||||
fbAuth.signInWithCredential(credential)
|
||||
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task<AuthResult> task) {
|
||||
if (task.isSuccessful()) {
|
||||
//Getuser();
|
||||
verify = "true";
|
||||
onSignInClick();
|
||||
|
||||
} else {
|
||||
progresshide();
|
||||
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
|
||||
notif2("wrong code!");
|
||||
} else if (task.getException() instanceof FirebaseTooManyRequestsException) {
|
||||
notif2("Too Many Requests, please try with other phone number!");
|
||||
notif("Too Many Requests, please try with other phone number!");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void resendCode(View view) {
|
||||
|
||||
setUpVerificatonCallbacks();
|
||||
PhoneAuthProvider.getInstance().verifyPhoneNumber(
|
||||
phoneNumber,
|
||||
120,
|
||||
TimeUnit.SECONDS,
|
||||
this,
|
||||
verificationCallbacks,
|
||||
resendToken);
|
||||
}
|
||||
|
||||
private void onSignInClick() {
|
||||
progressshow();
|
||||
LoginRequestJson request = new LoginRequestJson();
|
||||
String emailText = email != null ? email.getText().toString().trim() : "";
|
||||
String phoneDigits = phoneText.getText().toString().trim();
|
||||
|
||||
if (!TextUtils.isEmpty(emailText)) {
|
||||
request.setEmail(emailText);
|
||||
request.setNotelepon("");
|
||||
} else {
|
||||
request.setEmail(null);
|
||||
request.setNotelepon(countryCode.getText().toString().replace("+", "") + phoneDigits);
|
||||
}
|
||||
request.setPassword(password.getText().toString());
|
||||
try {
|
||||
FirebaseInstanceId token = FirebaseInstanceId.getInstance();
|
||||
request.setRegId(token.getToken());
|
||||
} catch (Exception e) {
|
||||
request.setRegId(null);
|
||||
}
|
||||
|
||||
String basicUser = !TextUtils.isEmpty(emailText) ? emailText : request.getNotelepon();
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, basicUser, request.getPassword());
|
||||
service.login(request).enqueue(new Callback<LoginResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<LoginResponseJson> call, @NonNull Response<LoginResponseJson> response) {
|
||||
progresshide();
|
||||
if (response.isSuccessful()) {
|
||||
LoginResponseJson body = response.body();
|
||||
if (body != null && body.getMessage().equalsIgnoreCase("found")) {
|
||||
User user = body.getData().get(0);
|
||||
saveUser(user);
|
||||
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
} else {
|
||||
notif(getString(R.string.phoneemailwrong));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<LoginResponseJson> call, @NonNull Throwable t) {
|
||||
progresshide();
|
||||
t.printStackTrace();
|
||||
notif("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == RegisterActivity.SIGNUP_ID) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
if (verify.equals("true")) {
|
||||
User user = (User) data.getSerializableExtra(RegisterActivity.USER_KEY);
|
||||
saveUser(user);
|
||||
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void saveUser(User user) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.copyToRealm(user);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(LoginActivity.this).setLoginUser(user);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
|
||||
public void onMessageEvent(FirebaseToken response) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(FirebaseToken.class);
|
||||
realm.copyToRealm(response);
|
||||
realm.commitTransaction();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.json.LoginRequestJson;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.LoginResponseJson;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class LupapassActivity extends AppCompatActivity {
|
||||
|
||||
ImageView backbtn;
|
||||
Button submit;
|
||||
TextView email, notiftext;
|
||||
RelativeLayout rlnotif, rlprogress;
|
||||
String disableback;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_lupapassword);
|
||||
|
||||
backbtn = findViewById(R.id.back_btn_verify);
|
||||
submit = findViewById(R.id.buttonconfirm);
|
||||
email = findViewById(R.id.email);
|
||||
notiftext = findViewById(R.id.textnotif2);
|
||||
rlnotif = findViewById(R.id.rlnotif2);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
|
||||
disableback = "false";
|
||||
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
submit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (email.getText().toString().isEmpty()) {
|
||||
notif(getString(R.string.emailempty));
|
||||
} else {
|
||||
get();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void get() {
|
||||
progressshow();
|
||||
LoginRequestJson request = new LoginRequestJson();
|
||||
request.setEmail(email.getText().toString());
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, request.getEmail(), "12345");
|
||||
service.forgot(request).enqueue(new Callback<LoginResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<LoginResponseJson> call, @NonNull Response<LoginResponseJson> response) {
|
||||
progresshide();
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("found")) {
|
||||
notif("email send!");
|
||||
|
||||
} else {
|
||||
notif(getString(R.string.phoneemailwrong));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<LoginResponseJson> call, @NonNull Throwable t) {
|
||||
progresshide();
|
||||
t.printStackTrace();
|
||||
notif("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
notiftext.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,400 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.location.Location;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.gms.location.FusedLocationProviderClient;
|
||||
import com.google.android.gms.location.LocationRequest;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView;
|
||||
import com.google.android.material.bottomnavigation.LabelVisibilityMode;
|
||||
import com.google.android.material.navigation.NavigationBarView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.constants.VersionChecker;
|
||||
import id.ontime.driver.fragment.HomeFragment;
|
||||
import id.ontime.driver.fragment.OrderFragment;
|
||||
import id.ontime.driver.json.GetHomeRequestJson;
|
||||
import id.ontime.driver.json.GetHomeResponseJson;
|
||||
import id.ontime.driver.json.UpdateLocationRequestJson;
|
||||
import id.ontime.driver.utils.MyLocationService;
|
||||
import id.ontime.driver.fragment.HistoryFragment;
|
||||
import id.ontime.driver.fragment.MessageFragment;
|
||||
import id.ontime.driver.fragment.ProfileFragment;
|
||||
import id.ontime.driver.json.ResponseJson;
|
||||
import id.ontime.driver.models.TransaksiModel;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import io.realm.Realm;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
long mBackPressed;
|
||||
|
||||
|
||||
public static String apikey;
|
||||
|
||||
LinearLayout mAdViewLayout;
|
||||
RelativeLayout toolbar;
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
public static MainActivity mainActivity;
|
||||
private FragmentManager fragmentManager;
|
||||
BottomNavigationView navigation;
|
||||
int previousSelect = 0;
|
||||
SettingPreference sp;
|
||||
OrderFragment orderFragment;
|
||||
HomeFragment homeFragment;
|
||||
LocationRequest locationRequest;
|
||||
RelativeLayout rlprogress;
|
||||
FusedLocationProviderClient fusedLocationProviderClient;
|
||||
boolean canceled;
|
||||
|
||||
public static MainActivity getInstance() {
|
||||
return mainActivity;
|
||||
}
|
||||
|
||||
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
|
||||
= new BottomNavigationView.OnNavigationItemSelectedListener() {
|
||||
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
Menu menu = navigation.getMenu();
|
||||
menu.findItem(R.id.home).setIcon(R.drawable.ic_home);
|
||||
menu.findItem(R.id.order).setIcon(R.drawable.ic_transaksi);
|
||||
menu.findItem(R.id.chat).setIcon(R.drawable.ic_pesan);
|
||||
menu.findItem(R.id.profile).setIcon(R.drawable.ic_profil);
|
||||
|
||||
TransaksiModel transaksi = new TransaksiModel();
|
||||
int itemId = item.getItemId();
|
||||
if (itemId == R.id.home) {
|
||||
canceled = false;
|
||||
navigationItemSelected(0);
|
||||
item.setIcon(R.drawable.ic_home_s);
|
||||
gethome();
|
||||
toolbar.setVisibility(View.VISIBLE);
|
||||
return true;
|
||||
} else if (itemId == R.id.order) {
|
||||
canceled = true;
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
HistoryFragment listFragment = new HistoryFragment();
|
||||
navigationItemSelected(1);
|
||||
item.setIcon(R.drawable.ic_transaksi_s);
|
||||
loadFrag2(listFragment, getString(R.string.menu_home), fragmentManager, transaksi, "", "");
|
||||
toolbar.setVisibility(View.VISIBLE);
|
||||
return true;
|
||||
} else if (itemId == R.id.chat) {
|
||||
canceled = true;
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
MessageFragment pesanFragment = new MessageFragment();
|
||||
navigationItemSelected(2);
|
||||
item.setIcon(R.drawable.ic_pesan_s);
|
||||
loadFrag2(pesanFragment, getString(R.string.menu_chat), fragmentManager, transaksi, "", "");
|
||||
toolbar.setVisibility(View.VISIBLE);
|
||||
return true;
|
||||
} else if (itemId == R.id.profile) {
|
||||
canceled = true;
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
ProfileFragment profilFragment = new ProfileFragment();
|
||||
navigationItemSelected(3);
|
||||
item.setIcon(R.drawable.ic_profil_s);
|
||||
loadFrag2(profilFragment, getString(R.string.menu_profile), fragmentManager, transaksi, "", "");
|
||||
toolbar.setVisibility(View.VISIBLE);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
mAdViewLayout = findViewById(R.id.adView);
|
||||
fragmentManager = getSupportFragmentManager();
|
||||
navigation = findViewById(R.id.navigation);
|
||||
sp = new SettingPreference(this);
|
||||
orderFragment = new OrderFragment();
|
||||
homeFragment = new HomeFragment();
|
||||
navigation.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED);
|
||||
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
|
||||
navigation.setItemIconTintList(null);
|
||||
Menu menu = navigation.getMenu();
|
||||
toolbar = findViewById(R.id.rltoolbar);
|
||||
toolbar.setVisibility(View.VISIBLE);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
menu.findItem(R.id.home).setIcon(R.drawable.ic_home_s);
|
||||
canceled = false;
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
Constants.TOKEN = loginUser.getToken();
|
||||
Constants.USERID = loginUser.getId();
|
||||
apikey = getString(R.string.google_maps_key);
|
||||
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Constants.versionname = Objects.requireNonNull(packageInfo).versionName;
|
||||
updatelocation();
|
||||
gethome();
|
||||
if (sp.getSetting()[19].equals("2") || sp.getSetting()[19].equals("3")) {
|
||||
navigation.setVisibility(View.GONE);
|
||||
} else {
|
||||
navigation.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
Check_version();
|
||||
|
||||
}
|
||||
|
||||
public void Check_version(){
|
||||
VersionChecker versionChecker = new VersionChecker(this);
|
||||
versionChecker.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
int count = this.getSupportFragmentManager().getBackStackEntryCount();
|
||||
if (count == 0) {
|
||||
if (mBackPressed + 2000 > System.currentTimeMillis()) {
|
||||
super.onBackPressed();
|
||||
} else {
|
||||
clickDone();
|
||||
|
||||
}
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
public void clickDone() {
|
||||
new AlertDialog.Builder(this)
|
||||
.setIcon(R.mipmap.ic_launcher)
|
||||
.setTitle(getString(R.string.app_name))
|
||||
.setMessage(getString(R.string.exit))
|
||||
.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
finish();
|
||||
}
|
||||
})
|
||||
.setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
private void gethome() {
|
||||
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
DriverService userService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
GetHomeRequestJson param = new GetHomeRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
param.setPhone(loginUser.getNoTelepon());
|
||||
userService.home(param).enqueue(new Callback<GetHomeResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<GetHomeResponseJson> call, @NonNull final Response<GetHomeResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
Constants.CURRENCY = response.body().getCurrency();
|
||||
sp.updateCurrency(response.body().getCurrency());
|
||||
sp.updateabout(response.body().getAboutus());
|
||||
sp.updateemail(response.body().getEmail());
|
||||
sp.updatephone(response.body().getPhone());
|
||||
sp.updateweb(response.body().getWebsite());
|
||||
sp.updatempstatus(response.body().getMpstatus());
|
||||
sp.updatempactive(response.body().getMpactive());
|
||||
sp.updateMobilepulsausername(response.body().getMobilepulsausername());
|
||||
sp.updateMobilepulsaapikey(response.body().getMobilepulsaapikey());
|
||||
sp.updateStatusdriver(response.body().getDriverstatus());
|
||||
|
||||
TransaksiModel transaksifake = new TransaksiModel();
|
||||
if (!canceled) {
|
||||
if (response.body().getDriverstatus().equals("3") || response.body().getDriverstatus().equals("2")) {
|
||||
TransaksiModel transaksi = response.body().getTransaksi().get(0);
|
||||
navigation.setVisibility(View.GONE);
|
||||
loadFrag2(orderFragment, getString(R.string.menu_home), fragmentManager, transaksi, response.body().getSaldo(), response.body().getDriverstatus());
|
||||
} else {
|
||||
navigation.setVisibility(View.VISIBLE);
|
||||
loadFrag2(homeFragment, getString(R.string.menu_home), fragmentManager, transaksifake, response.body().getSaldo(), response.body().getDriverstatus());
|
||||
}
|
||||
}
|
||||
User user = response.body().getDatadriver().get(0);
|
||||
saveUser(user);
|
||||
if (mainActivity != null) {
|
||||
Realm realm = BaseApp.getInstance(MainActivity.this).getRealmInstance();
|
||||
User loginUser = BaseApp.getInstance(MainActivity.this).getLoginUser();
|
||||
realm.beginTransaction();
|
||||
loginUser.setWalletSaldo(Long.parseLong(response.body().getSaldo()));
|
||||
realm.commitTransaction();
|
||||
}
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
} else {
|
||||
Realm realm = BaseApp.getInstance(MainActivity.this).getRealmInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(MainActivity.this).setLoginUser(null);
|
||||
startActivity(new Intent(MainActivity.this, IntroActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||
finish();
|
||||
Toast.makeText(MainActivity.this, "Your account has been suspended, please contact admin!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<GetHomeResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void saveUser(User user) {
|
||||
Realm realm = Realm.getDefaultInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.copyToRealm(user);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(MainActivity.this).setLoginUser(user);
|
||||
}
|
||||
|
||||
public void loadFrag2(Fragment f1, String name, FragmentManager fm, TransaksiModel transaksi, String saldo, String status) {
|
||||
for (int i = 0; i < fm.getBackStackEntryCount(); ++i) {
|
||||
fm.popBackStack();
|
||||
}
|
||||
Bundle args = new Bundle();
|
||||
args.putString("id_pelanggan", transaksi.getIdPelanggan());
|
||||
args.putString("id_transaksi", transaksi.getId());
|
||||
args.putString("response", String.valueOf(transaksi.status));
|
||||
args.putString("saldo", saldo);
|
||||
args.putString("status", status);
|
||||
f1.setArguments(args);
|
||||
FragmentTransaction ft = fm.beginTransaction();
|
||||
ft.replace(R.id.Container, f1, name);
|
||||
ft.commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
public void navigationItemSelected(int position) {
|
||||
previousSelect = position;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
private void updatelocation() {
|
||||
buildlocation();
|
||||
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
return;
|
||||
}
|
||||
fusedLocationProviderClient.requestLocationUpdates(locationRequest, getPendingIntent());
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
private PendingIntent getPendingIntent() {
|
||||
Intent intent = new Intent(this, MyLocationService.class);
|
||||
intent.setAction(MyLocationService.ACTION_PROCESS_UPDATE);
|
||||
return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_MUTABLE);
|
||||
}
|
||||
|
||||
private void buildlocation() {
|
||||
locationRequest = new LocationRequest();
|
||||
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
||||
locationRequest.setInterval(5000);
|
||||
locationRequest.setFastestInterval(3000);
|
||||
locationRequest.setSmallestDisplacement(10f);
|
||||
}
|
||||
|
||||
public void Updatelocationdata(final Location location) {
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
public void run() {
|
||||
onLocationChanged(location);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void onLocationChanged(Location location) {
|
||||
if (location != null) {
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, loginUser.getEmail(), loginUser.getPassword());
|
||||
UpdateLocationRequestJson param = new UpdateLocationRequestJson();
|
||||
|
||||
param.setId(loginUser.getId());
|
||||
param.setLatitude(String.valueOf(location.getLatitude()));
|
||||
param.setLongitude(String.valueOf(location.getLongitude()));
|
||||
param.setBearing(String.valueOf(location.getBearing()));
|
||||
|
||||
service.updatelocation(param).enqueue(new Callback<ResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ResponseJson> call, @NonNull Response<ResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
Log.e("location", response.message());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull retrofit2.Call<ResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,374 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.KeyguardManager;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.media.MediaPlayer;
|
||||
import android.media.RingtoneManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.os.Vibrator;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.json.AcceptRequestJson;
|
||||
import id.ontime.driver.json.AcceptResponseJson;
|
||||
import id.ontime.driver.utils.api.FCMHelper;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.fcm.FCMMessage;
|
||||
import id.ontime.driver.models.OrderFCM;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
|
||||
public class NewOrderActivity extends AppCompatActivity {
|
||||
private static final int REQUEST_PERMISSION_LOCATION = 991;
|
||||
private static final int REQUEST_PERMISSION_CALL = 992;
|
||||
|
||||
TextView layanantext;
|
||||
LinearLayout sendDetailLayout;
|
||||
TextView produk;
|
||||
TextView sendername;
|
||||
TextView receivername;
|
||||
Button senderphone;
|
||||
Button receiverphone;
|
||||
TextView layanandesctext;
|
||||
TextView pickuptext;
|
||||
TextView destinationtext;
|
||||
TextView estimatetext;
|
||||
TextView distancetext;
|
||||
TextView costtext;
|
||||
TextView pricetext;
|
||||
TextView totaltext;
|
||||
ImageView icon;
|
||||
TextView timer;
|
||||
TextView time;
|
||||
TextView distancetextes;
|
||||
TextView costtextes;
|
||||
Button cancel;
|
||||
Button order;
|
||||
RelativeLayout rlprogress;
|
||||
LinearLayout lldestination;
|
||||
LinearLayout lldistance;
|
||||
|
||||
String waktuorder,iconfitur, layanan, layanandesc, alamatasal, alamattujuan, estimasitime, hargatotal, cost, distance, idtrans, regid, orderfitur,tokenmerchant,idpelanggan,idtransmerchant;
|
||||
String wallett;
|
||||
MediaPlayer BG;
|
||||
Vibrator v;
|
||||
SettingPreference sp;
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_new_order);
|
||||
layanantext = findViewById(R.id.layanan);
|
||||
sendDetailLayout = findViewById(R.id.senddetail);
|
||||
produk = findViewById(R.id.produk);
|
||||
sendername = findViewById(R.id.sendername);
|
||||
receivername = findViewById(R.id.receivername);
|
||||
senderphone = findViewById(R.id.senderphone);
|
||||
receiverphone = findViewById(R.id.receiverphone);
|
||||
layanandesctext = findViewById(R.id.layanandes);
|
||||
pickuptext = findViewById(R.id.pickUpText);
|
||||
destinationtext = findViewById(R.id.destinationText);
|
||||
estimatetext = findViewById(R.id.fitur);
|
||||
distancetext = findViewById(R.id.distance);
|
||||
costtext = findViewById(R.id.cost);
|
||||
pricetext = findViewById(R.id.price);
|
||||
totaltext = findViewById(R.id.totaltext);
|
||||
icon = findViewById(R.id.image);
|
||||
timer = findViewById(R.id.timer);
|
||||
time = findViewById(R.id.time);
|
||||
distancetextes = findViewById(R.id.distancetext);
|
||||
costtextes = findViewById(R.id.costtext);
|
||||
cancel = findViewById(R.id.cancel);
|
||||
order = findViewById(R.id.order);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
lldestination = findViewById(R.id.lldestination);
|
||||
lldistance = findViewById(R.id.lldistance);
|
||||
setScreenOnFlags();
|
||||
sp = new SettingPreference(this);
|
||||
sp.updateNotif("ON");
|
||||
Intent intent = getIntent();
|
||||
iconfitur = intent.getStringExtra("icon");
|
||||
layanan = intent.getStringExtra("layanan");
|
||||
layanandesc = intent.getStringExtra("layanandesc");
|
||||
alamatasal = intent.getStringExtra("alamat_asal");
|
||||
alamattujuan = intent.getStringExtra("alamat_tujuan");
|
||||
estimasitime = intent.getStringExtra("estimasi_time");
|
||||
hargatotal = intent.getStringExtra("harga");
|
||||
cost = intent.getStringExtra("biaya");
|
||||
distance = intent.getStringExtra("distance");
|
||||
idtrans = intent.getStringExtra("id_transaksi");
|
||||
regid = intent.getStringExtra("reg_id");
|
||||
wallett = intent.getStringExtra("pakai_wallet");
|
||||
orderfitur = intent.getStringExtra("order_fitur");
|
||||
tokenmerchant = intent.getStringExtra("token_merchant");
|
||||
idpelanggan = intent.getStringExtra("id_pelanggan");
|
||||
idtransmerchant = intent.getStringExtra("id_trans_merchant");
|
||||
waktuorder = intent.getStringExtra("waktu_order");
|
||||
if (orderfitur.equalsIgnoreCase("3")) {
|
||||
lldestination.setVisibility(View.GONE);
|
||||
lldistance.setVisibility(View.GONE);
|
||||
}
|
||||
if (orderfitur.equalsIgnoreCase("2")) {
|
||||
sendDetailLayout.setVisibility(View.VISIBLE);
|
||||
//getData();
|
||||
}
|
||||
if (orderfitur.equalsIgnoreCase("4")) {
|
||||
|
||||
estimatetext.setText(estimasitime);
|
||||
time.setText("Merchant");
|
||||
distancetextes.setText("Delivery Fee");
|
||||
costtextes.setText("Biaya Pesanan");
|
||||
Utility.currencyTXT(distancetext, distance, this);
|
||||
Utility.currencyTXT(costtext, cost, this);
|
||||
} else {
|
||||
|
||||
estimatetext.setText(estimasitime);
|
||||
distancetext.setText(distance);
|
||||
costtext.setText(cost);
|
||||
}
|
||||
System.out.println("Order MASUK"+layanan);
|
||||
layanantext.setText(layanan);
|
||||
layanandesctext.setText(layanandesc);
|
||||
pickuptext.setText(alamatasal);
|
||||
destinationtext.setText(alamattujuan);
|
||||
Utility.currencyTXT(pricetext, hargatotal, this);
|
||||
if (wallett.equalsIgnoreCase("true")) {
|
||||
totaltext.setText("Total (SALDO)");
|
||||
} else {
|
||||
totaltext.setText("Total (TUNAI)");
|
||||
}
|
||||
|
||||
|
||||
PicassoTrustAll.getInstance(this)
|
||||
.load(Constants.IMAGESFITUR + iconfitur)
|
||||
.placeholder(R.drawable.logo)
|
||||
.resize(100, 100)
|
||||
.into(icon);
|
||||
cancel.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("MissingPermission")
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (BG != null && BG.isPlaying()) {
|
||||
BG.stop();
|
||||
v.cancel();
|
||||
}
|
||||
timerplay.cancel();
|
||||
Intent toOrder = new Intent(NewOrderActivity.this, MainActivity.class);
|
||||
toOrder.addFlags(FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
startActivity(toOrder);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
if (new SettingPreference(this).getSetting()[0].equals("OFF")) {
|
||||
timerplay.start();
|
||||
playSound();
|
||||
removeNotif();
|
||||
order.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
getaccept(false);
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
removeNotif();
|
||||
if (BG != null && BG.isPlaying()) {
|
||||
BG.stop();
|
||||
v.cancel();
|
||||
}
|
||||
}
|
||||
}, 2000);
|
||||
getaccept(true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
CountDownTimer timerplay = new CountDownTimer(20000, 1000) {
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
public void onTick(long millisUntilFinished) {
|
||||
timer.setText("" + millisUntilFinished / 1000);
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
public void onFinish() {
|
||||
if (BG != null && BG.isPlaying()) {
|
||||
BG.stop();
|
||||
v.cancel();
|
||||
}
|
||||
timer.setText("0");
|
||||
Intent toOrder = new Intent(NewOrderActivity.this, MainActivity.class);
|
||||
toOrder.addFlags(FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
startActivity(toOrder);
|
||||
}
|
||||
}.start();
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
private void playSound() {
|
||||
v = (Vibrator) this.getSystemService(VIBRATOR_SERVICE);
|
||||
long[] pattern = {0, 100, 700};
|
||||
Objects.requireNonNull(v).vibrate(pattern, 0);
|
||||
|
||||
try {
|
||||
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
|
||||
BG = MediaPlayer.create(getBaseContext(), notification);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
BG.setLooping(true);
|
||||
BG.setVolume(100, 100);
|
||||
BG.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
private void getaccept(boolean isAutoBid) {
|
||||
if (!isAutoBid) {
|
||||
if (BG != null && BG.isPlaying()) {
|
||||
BG.stop();
|
||||
v.cancel();
|
||||
}
|
||||
timerplay.cancel();
|
||||
}
|
||||
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
final User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
DriverService userService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
AcceptRequestJson param = new AcceptRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
param.setIdtrans(idtrans);
|
||||
userService.accept(param).enqueue(new Callback<AcceptResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<AcceptResponseJson> call, @NonNull final Response<AcceptResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
sp.updateNotif("OFF");
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("berhasil")) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Intent i = new Intent(NewOrderActivity.this, MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(i);
|
||||
OrderFCM orderfcm = new OrderFCM();
|
||||
orderfcm.id_driver = loginUser.getId();
|
||||
orderfcm.id_transaksi = idtrans;
|
||||
orderfcm.response = "2";
|
||||
if (orderfitur.equalsIgnoreCase("4")) {
|
||||
orderfcm.desc = "pengemudi sedang ambil pesanan";
|
||||
orderfcm.id_pelanggan = idpelanggan;
|
||||
orderfcm.invoice = "INV-"+idtrans+idtransmerchant;
|
||||
orderfcm.ordertime = waktuorder;
|
||||
sendMessageToDriver(tokenmerchant, orderfcm);
|
||||
} else {
|
||||
orderfcm.desc = getString(R.string.notification_start);
|
||||
}
|
||||
sendMessageToDriver(regid, orderfcm);
|
||||
} else {
|
||||
sp.updateNotif("OFF");
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Intent i = new Intent(NewOrderActivity.this, MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(i);
|
||||
Toast.makeText(NewOrderActivity.this, "Pesanan tidak lagi tersedia!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<AcceptResponseJson> call, @NonNull Throwable t) {
|
||||
Toast.makeText(NewOrderActivity.this, "Error Koneksi!", Toast.LENGTH_SHORT).show();
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
sp.updateNotif("OFF");
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Intent i = new Intent(NewOrderActivity.this, MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void sendMessageToDriver(final String regIDTujuan, final OrderFCM response) {
|
||||
|
||||
final FCMMessage message = new FCMMessage();
|
||||
message.setTo(regIDTujuan);
|
||||
message.setData(response);
|
||||
|
||||
FCMHelper.sendMessage(message).enqueue(new okhttp3.Callback() {
|
||||
@Override
|
||||
public void onResponse(@NonNull okhttp3.Call call, @NonNull okhttp3.Response response) {
|
||||
Log.e("REQUEST TO DRIVER", message.getData().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void removeNotif() {
|
||||
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||
Objects.requireNonNull(notificationManager).cancel(0);
|
||||
}
|
||||
|
||||
private void setScreenOnFlags() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||
setShowWhenLocked(true);
|
||||
setTurnScreenOn(true);
|
||||
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
|
||||
Objects.requireNonNull(keyguardManager).requestDismissKeyguard(this, null);
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
} else {
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
|
||||
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
|
||||
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
|
||||
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
+560
@@ -0,0 +1,560 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.facebook.shimmer.ShimmerFrameLayout;
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.api.GoogleApiClient;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.OnMapReadyCallback;
|
||||
import com.google.android.gms.maps.SupportMapFragment;
|
||||
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
import com.google.android.gms.maps.model.MapStyleOptions;
|
||||
import com.google.android.gms.maps.model.Marker;
|
||||
import com.google.android.gms.maps.model.MarkerOptions;
|
||||
import com.google.android.gms.maps.model.Polyline;
|
||||
import com.google.android.gms.maps.model.PolylineOptions;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.gmap.directions.Directions;
|
||||
import id.ontime.driver.gmap.directions.Route;
|
||||
import id.ontime.driver.item.ItemPesananItem;
|
||||
import id.ontime.driver.utils.api.MapDirectionAPI;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.DetailRequestJson;
|
||||
import id.ontime.driver.json.DetailTransResponseJson;
|
||||
import id.ontime.driver.models.PelangganModel;
|
||||
import id.ontime.driver.models.TransaksiModel;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.Log;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.widget.NestedScrollView;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import de.hdodenhof.circleimageview.CircleImageView;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class OrderDetailActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
|
||||
|
||||
LinearLayout bottomsheet;
|
||||
TextView layanan;
|
||||
TextView layanandesk;
|
||||
LinearLayout llchat;
|
||||
CircleImageView foto;
|
||||
TextView pickUpText;
|
||||
TextView destinationText;
|
||||
TextView fiturtext;
|
||||
TextView distanceText;
|
||||
TextView priceText;
|
||||
TextView namamerchant;
|
||||
Button orderButton;
|
||||
RelativeLayout rlprogress;
|
||||
TextView textprogress;
|
||||
ImageView phone;
|
||||
ImageView chat;
|
||||
LinearLayout llchatmerchant;
|
||||
LinearLayout lldestination;
|
||||
LinearLayout lldistance;
|
||||
LinearLayout lldetailsend;
|
||||
TextView produk;
|
||||
TextView sendername;
|
||||
TextView receivername;
|
||||
Button senderphone;
|
||||
Button receiverphone;
|
||||
|
||||
NestedScrollView scrollView;
|
||||
|
||||
ImageView backbutton;
|
||||
LinearLayout llrating;
|
||||
LinearLayout llbutton;
|
||||
|
||||
TextView cost;
|
||||
TextView deliveryfee;
|
||||
LinearLayout llorderdetail;
|
||||
LinearLayout llmerchantdetail;
|
||||
LinearLayout llmerchantinfo;
|
||||
ShimmerFrameLayout shimmerlayanan;
|
||||
ShimmerFrameLayout shimmerpickup;
|
||||
ShimmerFrameLayout shimmerdestination;
|
||||
ShimmerFrameLayout shimmerfitur;
|
||||
ShimmerFrameLayout shimmerdistance;
|
||||
ShimmerFrameLayout shimmerprice;
|
||||
|
||||
RecyclerView rvmerchantnear;
|
||||
|
||||
private GoogleMap gMap;
|
||||
private static final int REQUEST_PERMISSION_LOCATION = 991;
|
||||
private static final int REQUEST_PERMISSION_CALL = 992;
|
||||
private GoogleApiClient googleApiClient;
|
||||
private LatLng pickUpLatLng;
|
||||
private LatLng destinationLatLng;
|
||||
private Polyline directionLine;
|
||||
private Marker pickUpMarker;
|
||||
private Marker destinationMarker;
|
||||
String idtrans, idpelanggan, response, fitur;
|
||||
ItemPesananItem itemPesananItem;
|
||||
TextView totaltext;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_detail_order);
|
||||
bottomsheet = findViewById(R.id.bottom_sheet);
|
||||
layanan = findViewById(R.id.layanan);
|
||||
layanandesk = findViewById(R.id.layanandes);
|
||||
llchat = findViewById(R.id.llchat);
|
||||
foto = findViewById(R.id.background);
|
||||
pickUpText = findViewById(R.id.pickUpText);
|
||||
destinationText = findViewById(R.id.destinationText);
|
||||
fiturtext = findViewById(R.id.fitur);
|
||||
distanceText = findViewById(R.id.distance);
|
||||
priceText = findViewById(R.id.price);
|
||||
namamerchant = findViewById(R.id.namamerchant);
|
||||
orderButton = findViewById(R.id.order);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
textprogress = findViewById(R.id.textprogress);
|
||||
phone = findViewById(R.id.phonenumber);
|
||||
chat = findViewById(R.id.chat);
|
||||
llchatmerchant = findViewById(R.id.llchatmerchant);
|
||||
lldestination = findViewById(R.id.lldestination);
|
||||
lldistance = findViewById(R.id.lldistance);
|
||||
lldetailsend = findViewById(R.id.senddetail);
|
||||
produk = findViewById(R.id.produk);
|
||||
sendername = findViewById(R.id.sendername);
|
||||
receivername = findViewById(R.id.receivername);
|
||||
senderphone = findViewById(R.id.senderphone);
|
||||
receiverphone = findViewById(R.id.receiverphone);
|
||||
scrollView = findViewById(R.id.scroller);
|
||||
backbutton = findViewById(R.id.back_btn);
|
||||
llrating = findViewById(R.id.status);
|
||||
llbutton = findViewById(R.id.llbutton);
|
||||
cost = findViewById(R.id.cost);
|
||||
deliveryfee = findViewById(R.id.deliveryfee);
|
||||
llorderdetail = findViewById(R.id.orderdetail);
|
||||
llmerchantdetail = findViewById(R.id.merchantdetail);
|
||||
llmerchantinfo = findViewById(R.id.merchantinfo);
|
||||
shimmerlayanan = findViewById(R.id.shimmerlayanan);
|
||||
shimmerpickup = findViewById(R.id.shimmerpickup);
|
||||
shimmerdestination = findViewById(R.id.shimmerdestination);
|
||||
shimmerfitur = findViewById(R.id.shimmerfitur);
|
||||
shimmerdistance = findViewById(R.id.shimmerdistance);
|
||||
shimmerprice = findViewById(R.id.shimmerprice);
|
||||
rvmerchantnear = findViewById(R.id.merchantnear);
|
||||
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomsheet);
|
||||
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
||||
behavior.setPeekHeight(300);
|
||||
llrating.setVisibility(View.VISIBLE);
|
||||
backbutton.setVisibility(View.VISIBLE);
|
||||
llbutton.setVisibility(View.GONE);
|
||||
llchat.setVisibility(View.GONE);
|
||||
llchatmerchant.setVisibility(View.GONE);
|
||||
totaltext = findViewById(R.id.totaltext);
|
||||
shimmerload();
|
||||
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
|
||||
.findFragmentById(R.id.mapView);
|
||||
Objects.requireNonNull(mapFragment).getMapAsync(this);
|
||||
if (googleApiClient == null) {
|
||||
googleApiClient = new GoogleApiClient.Builder(this)
|
||||
.addConnectionCallbacks(this)
|
||||
.addOnConnectionFailedListener(this)
|
||||
.addApi(LocationServices.API)
|
||||
.build();
|
||||
}
|
||||
|
||||
backbutton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
rvmerchantnear.setHasFixedSize(true);
|
||||
rvmerchantnear.setNestedScrollingEnabled(false);
|
||||
rvmerchantnear.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
|
||||
|
||||
Intent intent = getIntent();
|
||||
idpelanggan = intent.getStringExtra("id_pelanggan");
|
||||
idtrans = intent.getStringExtra("id_transaksi");
|
||||
response = intent.getStringExtra("response");
|
||||
|
||||
if (Objects.equals(response, "2")) {
|
||||
llchat.setVisibility(View.VISIBLE);
|
||||
layanandesk.setText(getString(R.string.notification_accept));
|
||||
} else if (Objects.equals(response, "3")) {
|
||||
llchat.setVisibility(View.VISIBLE);
|
||||
orderButton.setVisibility(View.GONE);
|
||||
layanandesk.setText(getString(R.string.notification_start));
|
||||
} else if (Objects.equals(response, "4")) {
|
||||
scrollView.setPadding(0,0,0,10);
|
||||
llchat.setVisibility(View.GONE);
|
||||
orderButton.setVisibility(View.GONE);
|
||||
layanandesk.setText(getString(R.string.notification_finish));
|
||||
} else if (Objects.equals(response, "5")) {
|
||||
scrollView.setPadding(0,0,0,10);
|
||||
llchat.setVisibility(View.GONE);
|
||||
orderButton.setVisibility(View.GONE);
|
||||
layanandesk.setText(getString(R.string.notification_cancel));
|
||||
}
|
||||
}
|
||||
|
||||
private void getData(final String idtrans, final String idpelanggan) {
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, loginUser.getEmail(), loginUser.getPassword());
|
||||
DetailRequestJson param = new DetailRequestJson();
|
||||
param.setId(idtrans);
|
||||
param.setIdPelanggan(idpelanggan);
|
||||
service.detailtrans(param).enqueue(new Callback<DetailTransResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<DetailTransResponseJson> call, @NonNull Response<DetailTransResponseJson> responsedata) {
|
||||
if (responsedata.isSuccessful()) {
|
||||
shimmertutup();
|
||||
Log.e("", String.valueOf(Objects.requireNonNull(responsedata.body()).getData().get(0)));
|
||||
final TransaksiModel transaksi = responsedata.body().getData().get(0);
|
||||
PelangganModel pelanggan = responsedata.body().getPelanggan().get(0);
|
||||
pickUpLatLng = new LatLng(transaksi.getStartLatitude(), transaksi.getStartLongitude());
|
||||
destinationLatLng = new LatLng(transaksi.getEndLatitude(), transaksi.getEndLongitude());
|
||||
|
||||
fitur = transaksi.getOrderFitur();
|
||||
|
||||
switch (transaksi.getHome()) {
|
||||
case "3":
|
||||
lldestination.setVisibility(View.GONE);
|
||||
lldistance.setVisibility(View.GONE);
|
||||
fiturtext.setText(transaksi.getEstimasi());
|
||||
break;
|
||||
case "4":
|
||||
llorderdetail.setVisibility(View.VISIBLE);
|
||||
llmerchantdetail.setVisibility(View.VISIBLE);
|
||||
llmerchantinfo.setVisibility(View.VISIBLE);
|
||||
Utility.currencyTXT(deliveryfee, String.valueOf(transaksi.getHarga()), OrderDetailActivity.this);
|
||||
Utility.currencyTXT(cost, String.valueOf(transaksi.getTotal_biaya()), OrderDetailActivity.this);
|
||||
namamerchant.setText(transaksi.getNama_merchant());
|
||||
|
||||
itemPesananItem = new ItemPesananItem(responsedata.body().getItem(), R.layout.item_pesanan);
|
||||
rvmerchantnear.setAdapter(itemPesananItem);
|
||||
break;
|
||||
case "2":
|
||||
requestRoute();
|
||||
lldetailsend.setVisibility(View.VISIBLE);
|
||||
produk.setText(transaksi.getNamaBarang());
|
||||
sendername.setText(transaksi.namaPengirim);
|
||||
receivername.setText(transaksi.namaPenerima);
|
||||
|
||||
senderphone.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(OrderDetailActivity.this, R.style.DialogStyle);
|
||||
alertDialogBuilder.setTitle("Call Driver");
|
||||
alertDialogBuilder.setMessage("You want to call " + transaksi.getNamaPengirim() + "(" + transaksi.teleponPengirim + ")?");
|
||||
alertDialogBuilder.setPositiveButton("yes",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
if (ActivityCompat.checkSelfPermission(OrderDetailActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(OrderDetailActivity.this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION_CALL);
|
||||
return;
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:" + transaksi.teleponPengirim));
|
||||
startActivity(callIntent);
|
||||
}
|
||||
});
|
||||
|
||||
alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||
alertDialog.show();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
receiverphone.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(OrderDetailActivity.this, R.style.DialogStyle);
|
||||
alertDialogBuilder.setTitle("Call Driver");
|
||||
alertDialogBuilder.setMessage("You want to call " + transaksi.getNamaPenerima() + "(" + transaksi.teleponPenerima + ")?");
|
||||
alertDialogBuilder.setPositiveButton("yes",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
if (ActivityCompat.checkSelfPermission(OrderDetailActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(OrderDetailActivity.this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION_CALL);
|
||||
return;
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:" + transaksi.teleponPenerima));
|
||||
startActivity(callIntent);
|
||||
}
|
||||
});
|
||||
|
||||
alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||
alertDialog.show();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (pickUpMarker != null) pickUpMarker.remove();
|
||||
pickUpMarker = gMap.addMarker(new MarkerOptions()
|
||||
.position(pickUpLatLng)
|
||||
.title("Ambil")
|
||||
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pickup)));
|
||||
|
||||
|
||||
if (destinationMarker != null) destinationMarker.remove();
|
||||
destinationMarker = gMap.addMarker(new MarkerOptions()
|
||||
.position(destinationLatLng)
|
||||
.title("Tujuan")
|
||||
.icon(BitmapDescriptorFactory.fromResource(R.drawable.destination)));
|
||||
updateLastLocation();
|
||||
parsedata(transaksi, pelanggan);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull retrofit2.Call<DetailTransResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void shimmerload() {
|
||||
shimmerlayanan.startShimmerAnimation();
|
||||
shimmerpickup.startShimmerAnimation();
|
||||
shimmerdestination.startShimmerAnimation();
|
||||
shimmerfitur.startShimmerAnimation();
|
||||
shimmerdistance.startShimmerAnimation();
|
||||
shimmerprice.startShimmerAnimation();
|
||||
|
||||
layanan.setVisibility(View.GONE);
|
||||
layanandesk.setVisibility(View.GONE);
|
||||
pickUpText.setVisibility(View.GONE);
|
||||
destinationText.setVisibility(View.GONE);
|
||||
fiturtext.setVisibility(View.GONE);
|
||||
priceText.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void shimmertutup() {
|
||||
shimmerlayanan.stopShimmerAnimation();
|
||||
shimmerpickup.stopShimmerAnimation();
|
||||
shimmerdestination.stopShimmerAnimation();
|
||||
shimmerfitur.stopShimmerAnimation();
|
||||
shimmerdistance.stopShimmerAnimation();
|
||||
shimmerprice.stopShimmerAnimation();
|
||||
|
||||
shimmerlayanan.setVisibility(View.GONE);
|
||||
shimmerpickup.setVisibility(View.GONE);
|
||||
shimmerdestination.setVisibility(View.GONE);
|
||||
shimmerfitur.setVisibility(View.GONE);
|
||||
shimmerdistance.setVisibility(View.GONE);
|
||||
shimmerprice.setVisibility(View.GONE);
|
||||
|
||||
layanan.setVisibility(View.VISIBLE);
|
||||
layanandesk.setVisibility(View.VISIBLE);
|
||||
pickUpText.setVisibility(View.VISIBLE);
|
||||
destinationText.setVisibility(View.VISIBLE);
|
||||
distanceText.setVisibility(View.VISIBLE);
|
||||
fiturtext.setVisibility(View.VISIBLE);
|
||||
priceText.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private void parsedata(TransaksiModel request, final PelangganModel pelanggan) {
|
||||
requestRoute();
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
pickUpLatLng = new LatLng(request.getStartLatitude(), request.getStartLongitude());
|
||||
destinationLatLng = new LatLng(request.getEndLatitude(), request.getEndLongitude());
|
||||
|
||||
PicassoTrustAll.getInstance(this)
|
||||
.load(Constants.IMAGESUSER + pelanggan.getFoto())
|
||||
.placeholder(R.drawable.image_placeholder)
|
||||
.into(foto);
|
||||
|
||||
if (request.isPakaiWallet()) {
|
||||
totaltext.setText("Total (Saldo)");
|
||||
} else {
|
||||
totaltext.setText("Total (Tunai)");
|
||||
}
|
||||
|
||||
// Rating display is disabled because the third-party rating-view dependency
|
||||
// is no longer included. You can re-enable it by wiring this value into
|
||||
// a standard RatingBar or another UI component.
|
||||
|
||||
layanan.setText(pelanggan.getFullnama());
|
||||
pickUpText.setText(request.getAlamatAsal());
|
||||
destinationText.setText(request.getAlamatTujuan());
|
||||
if (request.getHome().equals("4")) {
|
||||
double totalbiaya = Double.parseDouble(request.getTotal_biaya());
|
||||
Utility.currencyTXT(priceText, String.valueOf(request.getHarga()+ totalbiaya), this);
|
||||
} else {
|
||||
Utility.currencyTXT(priceText, String.valueOf(request.getHarga()), this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateLastLocation() {
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION_LOCATION);
|
||||
return;
|
||||
}
|
||||
LocationServices.FusedLocationApi.getLastLocation(
|
||||
googleApiClient);
|
||||
gMap.setMyLocationEnabled(true);
|
||||
|
||||
if (pickUpLatLng != null) {
|
||||
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
|
||||
pickUpLatLng, 15f)
|
||||
);
|
||||
|
||||
gMap.animateCamera(CameraUpdateFactory.zoomTo(15f));
|
||||
}
|
||||
}
|
||||
|
||||
private okhttp3.Callback updateRouteCallback = new okhttp3.Callback() {
|
||||
@Override
|
||||
public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull okhttp3.Call call, okhttp3.Response response) throws IOException {
|
||||
if (response.isSuccessful()) {
|
||||
final String json = Objects.requireNonNull(response.body()).string();
|
||||
final String error = MapDirectionAPI.getDirectionErrorMessage(json);
|
||||
if (error != null) {
|
||||
return;
|
||||
}
|
||||
final long distance = MapDirectionAPI.getDistance(OrderDetailActivity.this, json);
|
||||
final String time = MapDirectionAPI.getTimeDistance(OrderDetailActivity.this, json);
|
||||
if (distance >= 0) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateLineDestination(json);
|
||||
float km = ((float) (distance)) / 1000f;
|
||||
String format = String.format(Locale.US, "%.1f", km);
|
||||
distanceText.setText(format);
|
||||
fiturtext.setText(time);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private void requestRoute() {
|
||||
if (pickUpLatLng != null && destinationLatLng != null) {
|
||||
MapDirectionAPI.getDirection(OrderDetailActivity.this, pickUpLatLng, destinationLatLng)
|
||||
.enqueue(updateRouteCallback);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateLineDestination(String json) {
|
||||
Directions directions = new Directions(this);
|
||||
try {
|
||||
List<Route> routes = directions.parse(json);
|
||||
|
||||
if (directionLine != null) directionLine.remove();
|
||||
if (routes.size() > 0) {
|
||||
directionLine = gMap.addPolyline((new PolylineOptions())
|
||||
.addAll(routes.get(0).getOverviewPolyLine())
|
||||
.color(ContextCompat.getColor(this, R.color.colorgradient))
|
||||
.width(8));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onConnected(@androidx.annotation.Nullable Bundle bundle) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionSuspended(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapReady(GoogleMap googleMap) {
|
||||
gMap = googleMap;
|
||||
gMap.getUiSettings().setMyLocationButtonEnabled(true);
|
||||
try {
|
||||
boolean success = googleMap.setMapStyle(
|
||||
MapStyleOptions.loadRawResourceStyle(
|
||||
this, R.raw.style_json));
|
||||
|
||||
if (!success) {
|
||||
android.util.Log.e("", "Style parsing failed.");
|
||||
}
|
||||
} catch (Resources.NotFoundException e) {
|
||||
android.util.Log.e("", "Can't find style. Error: ", e);
|
||||
}
|
||||
getData(idtrans, idpelanggan);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.json.PrivacyRequestJson;
|
||||
import id.ontime.driver.json.PrivacyResponseJson;
|
||||
import id.ontime.driver.models.SettingsModel;
|
||||
import id.ontime.driver.utils.NetworkUtils;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class PrivacyActivity extends AppCompatActivity {
|
||||
|
||||
WebView webView;
|
||||
ImageView backbtn;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_privacy);
|
||||
webView = findViewById(R.id.webView);
|
||||
backbtn = findViewById(R.id.back_btn);
|
||||
webView.setBackgroundColor(Color.TRANSPARENT);
|
||||
if (NetworkUtils.isConnected(PrivacyActivity.this)) {
|
||||
get();
|
||||
}
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void get() {
|
||||
PrivacyRequestJson request = new PrivacyRequestJson();
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, "admin", "12345");
|
||||
service.privacy(request).enqueue(new Callback<PrivacyResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<PrivacyResponseJson> call, @NonNull Response<PrivacyResponseJson> response) {
|
||||
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("found")) {
|
||||
SettingsModel model = response.body().getData().get(0);
|
||||
setResult(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<PrivacyResponseJson> call, @NonNull Throwable t) {
|
||||
t.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setResult(SettingsModel getprivacy) {
|
||||
|
||||
String mimeType = "text/html";
|
||||
String encoding = "utf-8";
|
||||
String htmlText = getprivacy.getPrivacy();
|
||||
String text = "<html dir=" + "><head>"
|
||||
+ "<style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/Montserrat_Regular.ttf\")}body{font-family: MyFont;color: #000000;text-align:justify;line-height:1.2}"
|
||||
+ "</style></head>"
|
||||
+ "<body>"
|
||||
+ htmlText
|
||||
+ "</body></html>";
|
||||
|
||||
webView.loadDataWithBaseURL(null, text, mimeType, encoding, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
||||
if (menuItem.getItemId() == android.R.id.home) {
|
||||
onBackPressed();
|
||||
} else {
|
||||
return super.onOptionsItemSelected(menuItem);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+1331
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,158 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.location.Location;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
|
||||
import com.google.android.gms.location.FusedLocationProviderClient;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.android.gms.tasks.OnSuccessListener;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.fragment.EnableLlocationFragment;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
public class SplashActivity extends AppCompatActivity {
|
||||
|
||||
SharedPreferences sharedPreferences;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
setContentView(R.layout.activity_splash);
|
||||
final User user = BaseApp.getInstance(this).getLoginUser();
|
||||
removeNotif();
|
||||
sharedPreferences = getSharedPreferences(Constants.PREF_NAME, MODE_PRIVATE);
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
|
||||
if (user != null) {
|
||||
|
||||
if (ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
enable_location();
|
||||
} else {
|
||||
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
} else {
|
||||
if (ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
enable_location();
|
||||
} else {
|
||||
Intent intent = new Intent(SplashActivity.this, IntroActivity.class);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}, 2000);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void GPSStatus() {
|
||||
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||
boolean GpsStatus = Objects.requireNonNull(locationManager).isProviderEnabled(LocationManager.GPS_PROVIDER);
|
||||
if (!GpsStatus) {
|
||||
Toast.makeText(this, "On Location in High Accuracy", Toast.LENGTH_SHORT).show();
|
||||
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 2);
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
GetCurrentlocation();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == 2) {
|
||||
GPSStatus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void GetCurrentlocation() {
|
||||
FusedLocationProviderClient mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
enable_location();
|
||||
return;
|
||||
}
|
||||
|
||||
mFusedLocationClient.getLastLocation()
|
||||
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
|
||||
@Override
|
||||
public void onSuccess(Location location) {
|
||||
// Got last known location. In some rare situations this can be null.
|
||||
if (location != null) {
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
editor.putString(String.valueOf(Constants.LATITUDE), "" + location.getLatitude());
|
||||
editor.putString(String.valueOf(Constants.LONGITUDE), "" + location.getLongitude());
|
||||
editor.apply();
|
||||
Constants.LATITUDE = location.getLatitude();
|
||||
Constants.LONGITUDE = location.getLongitude();
|
||||
startActivity(new Intent(SplashActivity.this, MainActivity.class));
|
||||
overridePendingTransition(R.anim.from_right, R.anim.to_left);
|
||||
finish();
|
||||
} else {
|
||||
|
||||
if (sharedPreferences.getString(String.valueOf(Constants.LATITUDE), "").equals("") || sharedPreferences.getString(String.valueOf(Constants.LONGITUDE), "").equals("")) {
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
editor.putString(String.valueOf(Constants.LATITUDE), "33.738045");
|
||||
editor.putString(String.valueOf(Constants.LONGITUDE), "73.084488");
|
||||
editor.apply();
|
||||
Constants.LATITUDE = Double.valueOf("33.738045");
|
||||
Constants.LONGITUDE = Double.valueOf("73.084488");
|
||||
}
|
||||
startActivity(new Intent(SplashActivity.this, MainActivity.class));
|
||||
overridePendingTransition(R.anim.from_right, R.anim.to_left);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void enable_location() {
|
||||
EnableLlocationFragment enable_llocationFragment = new EnableLlocationFragment();
|
||||
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
|
||||
transaction.setCustomAnimations(R.anim.from_right, R.anim.to_left, R.anim.from_left, R.anim.to_right);
|
||||
getSupportFragmentManager().popBackStackImmediate();
|
||||
transaction.replace(R.id.splash, enable_llocationFragment).addToBackStack(null).commit();
|
||||
|
||||
}
|
||||
|
||||
private void removeNotif() {
|
||||
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||
Objects.requireNonNull(notificationManager).cancel(0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+296
@@ -0,0 +1,296 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.cardview.widget.CardView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.json.ResponseJson;
|
||||
import id.ontime.driver.json.WithdrawRequestJson;
|
||||
import id.ontime.driver.json.fcm.FCMMessage;
|
||||
import id.ontime.driver.models.Notif;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
import id.ontime.driver.utils.api.FCMHelper;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Objects;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class TopupSaldoActivity extends AppCompatActivity {
|
||||
|
||||
EditText nominal;
|
||||
CardView text1, text2, text3, text4, text5, text6;
|
||||
RelativeLayout rlnotif, rlprogress;
|
||||
TextView textnotif, privacy;
|
||||
Button whatsapp;
|
||||
String disableback;
|
||||
LinearLayout banktransfer;
|
||||
private String paymentAmount;
|
||||
SettingPreference sp;
|
||||
ImageView backBtn;
|
||||
boolean debug;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_topup);
|
||||
View bottom_sheet = findViewById(R.id.bottom_sheet);
|
||||
BottomSheetBehavior.from(bottom_sheet);
|
||||
sp = new SettingPreference(this);
|
||||
|
||||
nominal = findViewById(R.id.saldo);
|
||||
text1 = findViewById(R.id.text1);
|
||||
text2 = findViewById(R.id.text2);
|
||||
text3 = findViewById(R.id.text3);
|
||||
text4 = findViewById(R.id.text4);
|
||||
text5 = findViewById(R.id.text5);
|
||||
text6 = findViewById(R.id.text6);
|
||||
rlnotif = findViewById(R.id.rlnotif);
|
||||
textnotif = findViewById(R.id.textnotif);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
backBtn = findViewById(R.id.back_btn);
|
||||
banktransfer = findViewById(R.id.banktransfer);
|
||||
whatsapp = findViewById(R.id.whatsapp);
|
||||
privacy = findViewById(R.id.privacy);
|
||||
|
||||
nominal.addTextChangedListener(Utility.currencyTW(nominal,this));
|
||||
|
||||
|
||||
banktransfer.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!nominal.getText().toString().isEmpty()) {
|
||||
sheetlist();
|
||||
} else {
|
||||
notif("nominal tidak boleh kosong!");
|
||||
}
|
||||
}
|
||||
});
|
||||
whatsapp.setOnClickListener(v -> {
|
||||
Intent i = new Intent(TopupSaldoActivity.this, ConfirmWAActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
});
|
||||
|
||||
privacy.setOnClickListener(v -> {
|
||||
Intent i = new Intent(TopupSaldoActivity.this, PrivacyActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
});
|
||||
|
||||
|
||||
text1.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
nominal.setText("20.000");
|
||||
}
|
||||
});
|
||||
|
||||
text2.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
nominal.setText("50.000");
|
||||
}
|
||||
});
|
||||
|
||||
text3.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
nominal.setText("100.000");
|
||||
}
|
||||
});
|
||||
|
||||
text4.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
nominal.setText("200.000");
|
||||
}
|
||||
});
|
||||
|
||||
text5.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
nominal.setText("300.000");
|
||||
}
|
||||
});
|
||||
text6.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
nominal.setText("500.000");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
backBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
textnotif.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public String convertAngka(String value) {
|
||||
return (((((value + "")
|
||||
.replaceAll(sp.getSetting()[4], ""))
|
||||
.replaceAll(" ", ""))
|
||||
.replaceAll(",", ""))
|
||||
.replaceAll("[$.]", ""));
|
||||
}
|
||||
|
||||
private void sheetlist() {
|
||||
Intent i = new Intent(TopupSaldoActivity.this, WithdrawActivity.class);
|
||||
i.putExtra("type","topup");
|
||||
i.putExtra("nominal", convertAngka(nominal.getText().toString()));
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
}
|
||||
|
||||
private void submit() {
|
||||
progressshow();
|
||||
paymentAmount = nominal.getText().toString();
|
||||
final User user = BaseApp.getInstance(this).getLoginUser();
|
||||
WithdrawRequestJson request = new WithdrawRequestJson();
|
||||
request.setId(user.getId());
|
||||
request.setBank("midtrans");
|
||||
request.setName(user.getFullnama());
|
||||
request.setAmount(convertAngka(paymentAmount.replace(sp.getSetting()[4],"")));
|
||||
request.setCard("1234");
|
||||
request.setNotelepon(user.getNoTelepon());
|
||||
request.setEmail(user.getEmail());
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, user.getNoTelepon(), user.getPassword());
|
||||
service.topupmidtrans(request).enqueue(new Callback<ResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ResponseJson> call, @NonNull Response<ResponseJson> response) {
|
||||
progresshide();
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
Intent i = new Intent(TopupSaldoActivity.this,MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
Notif notif = new Notif();
|
||||
notif.title = "Topup";
|
||||
notif.message = "topup berhasil";
|
||||
sendNotif(user.getToken(), notif);
|
||||
|
||||
} else {
|
||||
notif("error, silahkan cek akun anda!");
|
||||
}
|
||||
} else {
|
||||
notif("error!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ResponseJson> call, @NonNull Throwable t) {
|
||||
progresshide();
|
||||
t.printStackTrace();
|
||||
notif("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
private void sendNotif(final String regIDTujuan, final Notif notif) {
|
||||
|
||||
final FCMMessage message = new FCMMessage();
|
||||
message.setTo(regIDTujuan);
|
||||
message.setData(notif);
|
||||
|
||||
FCMHelper.sendMessage(message).enqueue(new okhttp3.Callback() {
|
||||
@Override
|
||||
public void onResponse(@NonNull okhttp3.Call call, @NonNull okhttp3.Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static String hashCal(String str) {
|
||||
byte[] hashseq = str.getBytes();
|
||||
StringBuilder hexString = new StringBuilder();
|
||||
try {
|
||||
MessageDigest algorithm = MessageDigest.getInstance("SHA-512");
|
||||
algorithm.reset();
|
||||
algorithm.update(hashseq);
|
||||
byte[] messageDigest = algorithm.digest();
|
||||
for (byte aMessageDigest : messageDigest) {
|
||||
String hex = Integer.toHexString(0xFF & aMessageDigest);
|
||||
if (hex.length() == 1) {
|
||||
hexString.append("0");
|
||||
}
|
||||
hexString.append(hex);
|
||||
}
|
||||
} catch (NoSuchAlgorithmException ignored) {
|
||||
}
|
||||
return hexString.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.facebook.shimmer.ShimmerFrameLayout;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.item.WalletItem;
|
||||
import id.ontime.driver.json.WalletRequestJson;
|
||||
import id.ontime.driver.json.WalletResponseJson;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class WalletActivity extends AppCompatActivity {
|
||||
ImageView backbtn;
|
||||
ShimmerFrameLayout shimmer;
|
||||
RecyclerView recycle;
|
||||
WalletItem walletItem;
|
||||
RelativeLayout rlnodata;
|
||||
Button whatsapp;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_wallet);
|
||||
|
||||
shimmer = findViewById(R.id.shimmerwallet);
|
||||
recycle = findViewById(R.id.recycle);
|
||||
rlnodata = findViewById(R.id.rlnodata);
|
||||
backbtn = findViewById(R.id.back_btn);
|
||||
whatsapp = findViewById(R.id.whatsapp);
|
||||
|
||||
recycle.setHasFixedSize(true);
|
||||
recycle.setLayoutManager(new GridLayoutManager(this, 1));
|
||||
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
whatsapp.setOnClickListener(v -> {
|
||||
Intent i = new Intent(WalletActivity.this, ConfirmWAActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
});
|
||||
|
||||
getdatawallet();
|
||||
|
||||
}
|
||||
|
||||
private void shimmershow() {
|
||||
recycle.setVisibility(View.GONE);
|
||||
shimmer.setVisibility(View.VISIBLE);
|
||||
shimmer.startShimmerAnimation();
|
||||
}
|
||||
|
||||
private void shimmertutup() {
|
||||
|
||||
recycle.setVisibility(View.VISIBLE);
|
||||
shimmer.setVisibility(View.GONE);
|
||||
shimmer.stopShimmerAnimation();
|
||||
}
|
||||
|
||||
private void getdatawallet() {
|
||||
shimmershow();
|
||||
User loginUser = BaseApp.getInstance(this).getLoginUser();
|
||||
DriverService driverService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
WalletRequestJson param = new WalletRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
driverService.wallet(param).enqueue(new Callback<WalletResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<WalletResponseJson> call, @NonNull Response<WalletResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
shimmertutup();
|
||||
walletItem = new WalletItem(WalletActivity.this, Objects.requireNonNull(response.body()).getData(), R.layout.item_wallet);
|
||||
recycle.setAdapter(walletItem);
|
||||
if (response.body().getData().isEmpty()) {
|
||||
recycle.setVisibility(View.GONE);
|
||||
rlnodata.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
recycle.setVisibility(View.VISIBLE);
|
||||
rlnodata.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<WalletResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
package id.ontime.driver.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.item.BankItem;
|
||||
import id.ontime.driver.json.BankResponseJson;
|
||||
import id.ontime.driver.json.WithdrawRequestJson;
|
||||
import id.ontime.driver.json.WithdrawResponseJson;
|
||||
import id.ontime.driver.json.fcm.FCMMessage;
|
||||
import id.ontime.driver.models.Notif;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
import id.ontime.driver.utils.api.FCMHelper;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class WithdrawActivity extends AppCompatActivity {
|
||||
|
||||
EditText amount, bank, accnumber, nama;
|
||||
Button submit;
|
||||
TextView notif;
|
||||
ImageView backbtn, images;
|
||||
RelativeLayout rlnotif, rlprogress;
|
||||
String disableback, type, nominal;
|
||||
SettingPreference sp;
|
||||
RecyclerView petunjuk;
|
||||
LinearLayout llpentunjuk;
|
||||
BankItem bankItem;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_withdraw);
|
||||
disableback = "false";
|
||||
amount = findViewById(R.id.amount);
|
||||
bank = findViewById(R.id.bank);
|
||||
accnumber = findViewById(R.id.accnumber);
|
||||
backbtn = findViewById(R.id.back_btn);
|
||||
submit = findViewById(R.id.submit);
|
||||
rlnotif = findViewById(R.id.rlnotif);
|
||||
notif = findViewById(R.id.textnotif);
|
||||
rlprogress = findViewById(R.id.rlprogress);
|
||||
nama = findViewById(R.id.namanumber);
|
||||
images = findViewById(R.id.imagebackground);
|
||||
sp = new SettingPreference(this);
|
||||
llpentunjuk = findViewById(R.id.llpentunjuk);
|
||||
petunjuk = findViewById(R.id.petunjuk);
|
||||
sp = new SettingPreference(this);
|
||||
|
||||
Intent intent = getIntent();
|
||||
type = intent.getStringExtra("type");
|
||||
|
||||
if (Objects.equals(type, "topup")) {
|
||||
images.setImageResource(R.drawable.atm);
|
||||
images.setScaleType(ImageView.ScaleType.FIT_XY);
|
||||
nominal = intent.getStringExtra("nominal");
|
||||
|
||||
Utility.currencyTXT(amount, Objects.requireNonNull(nominal), WithdrawActivity.this);
|
||||
petunjuk.setHasFixedSize(true);
|
||||
petunjuk.setNestedScrollingEnabled(false);
|
||||
petunjuk.setLayoutManager(new GridLayoutManager(this, 1));
|
||||
getpetunjuk();
|
||||
}
|
||||
|
||||
amount.addTextChangedListener(Utility.currencyTW(amount, this));
|
||||
|
||||
submit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
User userLogin = BaseApp.getInstance(WithdrawActivity.this).getLoginUser();
|
||||
if (type.equals("withdraw")) {
|
||||
if (amount.getText().toString().isEmpty()) {
|
||||
notif("Jumlah tidak boleh kosong!");
|
||||
} else if (Long.parseLong(amount.getText()
|
||||
.toString()
|
||||
.replace(".", "")
|
||||
.replace(",", "")
|
||||
.replace(sp.getSetting()[4], "")) > userLogin.getWalletSaldo()) {
|
||||
notif("saldo Anda tidak cukup!");
|
||||
} else if (bank.getText().toString().isEmpty()) {
|
||||
notif("bank tidak boleh kosong!");
|
||||
} else if (accnumber.getText().toString().isEmpty()) {
|
||||
notif("nomor rekening tidak boleh kosong!");
|
||||
} else {
|
||||
submit();
|
||||
}
|
||||
} else {
|
||||
if (amount.getText().toString().isEmpty()) {
|
||||
notif("jumlah tidak boleh kosong!");
|
||||
} else if (bank.getText().toString().isEmpty()) {
|
||||
notif("bank tidak boleh kosong!");
|
||||
} else if (accnumber.getText().toString().isEmpty()) {
|
||||
notif("nomor rekening tidak boleh kosong!");
|
||||
} else {
|
||||
submit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
backbtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void submit() {
|
||||
progressshow();
|
||||
final User user = BaseApp.getInstance(this).getLoginUser();
|
||||
WithdrawRequestJson request = new WithdrawRequestJson();
|
||||
request.setId(user.getId());
|
||||
request.setBank(bank.getText().toString());
|
||||
request.setName(nama.getText().toString());
|
||||
request.setAmount(amount.getText().toString().replace(".", "").replace(sp.getSetting()[4], ""));
|
||||
request.setCard(accnumber.getText().toString());
|
||||
request.setNotelepon(user.getNoTelepon());
|
||||
request.setEmail(user.getEmail());
|
||||
request.setType(type);
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, user.getNoTelepon(), user.getPassword());
|
||||
service.withdraw(request).enqueue(new Callback<WithdrawResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<WithdrawResponseJson> call, @NonNull Response<WithdrawResponseJson> response) {
|
||||
progresshide();
|
||||
if (response.isSuccessful()) {
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
Intent intent = new Intent(WithdrawActivity.this, MainActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
|
||||
Notif notif = new Notif();
|
||||
if (type.equals("withdraw")) {
|
||||
notif.title = "Withdraw";
|
||||
notif.message = "Permintaan penarikan telah berhasil, kami akan mengirimkan pemberitahuan setelah kami mengirim dana ke akun Anda";
|
||||
} else {
|
||||
notif.title = "Topup";
|
||||
notif.message = "Permintaan TopUp telah berhasil, Segera Transfer dan Konfirmasi Pembayaran ke Admin";
|
||||
}
|
||||
sendNotif(user.getToken(), notif);
|
||||
|
||||
} else {
|
||||
notif("error, silahkan cek data akun anda!");
|
||||
}
|
||||
} else {
|
||||
notif("error!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<WithdrawResponseJson> call, @NonNull Throwable t) {
|
||||
progresshide();
|
||||
t.printStackTrace();
|
||||
notif("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void onBackPressed() {
|
||||
if (!disableback.equals("true")) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void notif(String text) {
|
||||
rlnotif.setVisibility(View.VISIBLE);
|
||||
notif.setText(text);
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
public void run() {
|
||||
rlnotif.setVisibility(View.GONE);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
public void progressshow() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
disableback = "true";
|
||||
}
|
||||
|
||||
public void progresshide() {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
disableback = "false";
|
||||
}
|
||||
|
||||
private void sendNotif(final String regIDTujuan, final Notif notif) {
|
||||
|
||||
final FCMMessage message = new FCMMessage();
|
||||
message.setTo(regIDTujuan);
|
||||
message.setData(notif);
|
||||
|
||||
FCMHelper.sendMessage(message).enqueue(new okhttp3.Callback() {
|
||||
@Override
|
||||
public void onResponse(@NonNull okhttp3.Call call, @NonNull okhttp3.Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void getpetunjuk() {
|
||||
User user = BaseApp.getInstance(this).getLoginUser();
|
||||
WithdrawRequestJson request = new WithdrawRequestJson();
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, user.getNoTelepon(), user.getPassword());
|
||||
service.listbank(request).enqueue(new Callback<BankResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<BankResponseJson> call, @NonNull Response<BankResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
llpentunjuk.setVisibility(View.VISIBLE);
|
||||
bankItem = new BankItem(WithdrawActivity.this, Objects.requireNonNull(response.body()).getData(), R.layout.item_bank);
|
||||
petunjuk.setAdapter(bankItem);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<BankResponseJson> call, @NonNull Throwable t) {
|
||||
t.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
package id.ontime.driver.constants;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Application;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.location.Location;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.android.gms.location.FusedLocationProviderClient;
|
||||
import com.google.android.gms.location.LocationRequest;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.firebase.FirebaseApp;
|
||||
import com.google.firebase.iid.FirebaseInstanceId;
|
||||
import com.google.firebase.messaging.FirebaseMessaging;
|
||||
import id.ontime.driver.json.UpdateLocationRequestJson;
|
||||
import id.ontime.driver.utils.MyLocationService;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.ResponseJson;
|
||||
import id.ontime.driver.models.FirebaseToken;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.multidex.MultiDex;
|
||||
|
||||
import io.realm.Realm;
|
||||
import io.realm.RealmConfiguration;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class BaseApp extends Application {
|
||||
|
||||
private static final int SCHEMA_VERSION = 0;
|
||||
|
||||
private User loginUser;
|
||||
|
||||
private Realm realmInstance;
|
||||
|
||||
public static BaseApp getInstance(Context context) {
|
||||
return (BaseApp) context.getApplicationContext();
|
||||
}
|
||||
|
||||
|
||||
LocationRequest locationRequest;
|
||||
FusedLocationProviderClient fusedLocationProviderClient;
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
Realm.init(this);
|
||||
|
||||
RealmConfiguration config = new RealmConfiguration.Builder()
|
||||
.schemaVersion(SCHEMA_VERSION)
|
||||
.deleteRealmIfMigrationNeeded()
|
||||
.build();
|
||||
|
||||
Realm.setDefaultConfiguration(config);
|
||||
|
||||
// realmInstance = Realm.getInstance(config);
|
||||
realmInstance = Realm.getDefaultInstance();
|
||||
|
||||
// Best-effort Firebase initialization and token registration for driver.
|
||||
// If Firebase is not configured, ignore failures so the app can still run.
|
||||
try {
|
||||
FirebaseApp app = FirebaseApp.initializeApp(this);
|
||||
if (app != null) {
|
||||
String fcmToken = FirebaseInstanceId.getInstance().getToken();
|
||||
if (fcmToken != null) {
|
||||
FirebaseToken token = new FirebaseToken(fcmToken);
|
||||
FirebaseMessaging.getInstance().subscribeToTopic("ouride");
|
||||
FirebaseMessaging.getInstance().subscribeToTopic("driver");
|
||||
|
||||
realmInstance.beginTransaction();
|
||||
realmInstance.delete(FirebaseToken.class);
|
||||
realmInstance.copyToRealm(token);
|
||||
realmInstance.commitTransaction();
|
||||
}
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
updatelocation();
|
||||
start();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(base);
|
||||
MultiDex.install(this);
|
||||
}
|
||||
|
||||
public User getLoginUser() {
|
||||
return loginUser;
|
||||
}
|
||||
|
||||
public void setLoginUser(User loginUser) {
|
||||
this.loginUser = loginUser;
|
||||
}
|
||||
|
||||
public final Realm getRealmInstance() {
|
||||
return realmInstance;
|
||||
}
|
||||
|
||||
private void start() {
|
||||
Realm realm = getRealmInstance();
|
||||
User user = realm.where(User.class).findFirst();
|
||||
if (user != null) {
|
||||
setLoginUser(user);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
private void updatelocation() {
|
||||
buildlocation();
|
||||
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
return;
|
||||
}
|
||||
fusedLocationProviderClient.requestLocationUpdates(locationRequest, getPendingIntent());
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
private PendingIntent getPendingIntent() {
|
||||
Intent intent = new Intent(this, MyLocationService.class);
|
||||
intent.setAction(MyLocationService.ACTION_PROCESS_UPDATE);
|
||||
return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_MUTABLE);
|
||||
}
|
||||
|
||||
private void buildlocation() {
|
||||
locationRequest = new LocationRequest();
|
||||
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
||||
locationRequest.setInterval(5000);
|
||||
locationRequest.setFastestInterval(3000);
|
||||
locationRequest.setSmallestDisplacement(10f);
|
||||
}
|
||||
|
||||
public void Updatelocationdata(final Location location) {
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
public void run() {
|
||||
onLocationChanged(location);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void onLocationChanged(Location location) {
|
||||
if (location != null) {
|
||||
User loginUser = getLoginUser();
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, loginUser.getEmail(), loginUser.getPassword());
|
||||
UpdateLocationRequestJson param = new UpdateLocationRequestJson();
|
||||
|
||||
param.setId(loginUser.getId());
|
||||
param.setLatitude(String.valueOf(location.getLatitude()));
|
||||
param.setLongitude(String.valueOf(location.getLongitude()));
|
||||
param.setBearing(String.valueOf(location.getBearing()));
|
||||
|
||||
service.updatelocation(param).enqueue(new Callback<ResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ResponseJson> call, @NonNull Response<ResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
Log.e("location", response.message());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull retrofit2.Call<ResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package id.ontime.driver.constants;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
public class Constants {
|
||||
|
||||
private static final String BASE_URL = "https://apitest.semestaterpadu.my.id/";
|
||||
public static final String URL = "https://panic.on-time.id/"; //panicButton
|
||||
public static final String CONNECTION = BASE_URL + "api/";
|
||||
public static final String IMAGESFITUR = BASE_URL + "images/fitur/";
|
||||
public static final String IMAGESBANK = BASE_URL + "images/bank/";
|
||||
public static final String IMAGESDRIVER = BASE_URL + "images/fotodriver/";
|
||||
public static final String IMAGESUSER = BASE_URL + "images/pelanggan/";
|
||||
public static final String IMAGESMERCHANT = BASE_URL + "images/merchant/";
|
||||
public static String CURRENCY = "";
|
||||
|
||||
public static Double LATITUDE;
|
||||
public static Double LONGITUDE;
|
||||
public static String LOCATION;
|
||||
|
||||
public static String TOKEN = "token";
|
||||
|
||||
public static String USERID = "uid";
|
||||
|
||||
public static String PREF_NAME = "pref_name";
|
||||
|
||||
public static int permission_camera_code = 786;
|
||||
public static int permission_write_data = 788;
|
||||
public static int permission_Read_data = 789;
|
||||
public static int permission_Recording_audio = 790;
|
||||
|
||||
public static SimpleDateFormat df =
|
||||
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
|
||||
public static String versionname = "1.0";
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package id.ontime.driver.constants;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/20/2018.
|
||||
*/
|
||||
|
||||
public class Functions {
|
||||
|
||||
public static void hideSoftKeyboard(Activity activity) {
|
||||
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
View view = activity.getCurrentFocus();
|
||||
if (view == null) {
|
||||
view = new View(activity);
|
||||
}
|
||||
Objects.requireNonNull(imm).hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package id.ontime.driver.constants;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
|
||||
import org.jsoup.Jsoup;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Created by ontime on 12/4/2018.
|
||||
*/
|
||||
|
||||
|
||||
public class VersionChecker extends AsyncTask<String, String, String> {
|
||||
|
||||
private String newVersion;
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private Activity context;
|
||||
|
||||
public VersionChecker(Activity context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected String doInBackground(String... params) {
|
||||
|
||||
try {
|
||||
newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + context.getPackageName() + "&hl=en")
|
||||
.timeout(30000)
|
||||
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
|
||||
.referrer("http://www.google.com")
|
||||
.get()
|
||||
.select(".IQ1z0d .htlgb")
|
||||
.get(7)
|
||||
.ownText();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return newVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(String s) {
|
||||
super.onPostExecute(s);
|
||||
PackageInfo pInfo = null;
|
||||
try {
|
||||
pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (newVersion != null) {
|
||||
int latestVersion = Integer.parseInt(newVersion.replace(".", ""));
|
||||
int versionCode = Integer.parseInt(Objects.requireNonNull(pInfo).versionName.replace(".", ""));
|
||||
|
||||
if (versionCode < latestVersion) {
|
||||
AlertDialog.Builder alert = new AlertDialog.Builder(context, R.style.DialogStyle);
|
||||
alert.setTitle(R.string.app_name)
|
||||
.setIcon(R.mipmap.ic_launcher)
|
||||
.setMessage("Please update" + " " + context.getString(R.string.app_name) + " " + "app. you have an old version.")
|
||||
.setNegativeButton("Update", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName())));
|
||||
context.finish();
|
||||
}
|
||||
});
|
||||
|
||||
alert.setCancelable(false);
|
||||
alert.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.location.Address;
|
||||
import android.location.Geocoder;
|
||||
import android.location.Location;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.Animation;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.gms.location.FusedLocationProviderClient;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.android.gms.tasks.OnSuccessListener;
|
||||
|
||||
import id.ontime.driver.activity.MainActivity;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.IntroActivity;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import static android.content.Context.MODE_PRIVATE;
|
||||
|
||||
|
||||
public class EnableLlocationFragment extends Fragment {
|
||||
|
||||
|
||||
private Context context;
|
||||
private SharedPreferences sharedPreferences;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View getView = inflater.inflate(R.layout.fragment_enablelocation, container, false);
|
||||
context = getContext();
|
||||
|
||||
|
||||
sharedPreferences = Objects.requireNonNull(context).getSharedPreferences(Constants.PREF_NAME, MODE_PRIVATE);
|
||||
|
||||
Button enableLocation = getView.findViewById(R.id.enable_location_btn);
|
||||
enableLocation.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
getLocationPermission();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return getView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
|
||||
// Skip custom fragment animations now that the third-party library has been removed.
|
||||
if (enter) {
|
||||
GPSStatus();
|
||||
}
|
||||
return super.onCreateAnimation(transit, enter, nextAnim);
|
||||
}
|
||||
|
||||
|
||||
private void getLocationPermission() {
|
||||
|
||||
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
|
||||
123);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
|
||||
if (requestCode == 123) {
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
GetCurrentlocation();
|
||||
} else {
|
||||
Toast.makeText(context, "Please Grant permission", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void GPSStatus() {
|
||||
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
||||
boolean GpsStatus = Objects.requireNonNull(locationManager).isProviderEnabled(LocationManager.GPS_PROVIDER);
|
||||
if (!GpsStatus) {
|
||||
Toast.makeText(context, "On Location in High Accuracy", Toast.LENGTH_SHORT).show();
|
||||
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 2);
|
||||
} else {
|
||||
GetCurrentlocation();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == 2) {
|
||||
GPSStatus();
|
||||
}
|
||||
}
|
||||
|
||||
private void GetCurrentlocation() {
|
||||
FusedLocationProviderClient mFusedLocationClient = LocationServices.getFusedLocationProviderClient(context);
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
|
||||
getLocationPermission();
|
||||
return;
|
||||
}
|
||||
|
||||
mFusedLocationClient.getLastLocation()
|
||||
.addOnSuccessListener(requireActivity(), new OnSuccessListener<Location>() {
|
||||
@Override
|
||||
public void onSuccess(Location location) {
|
||||
if (location != null) {
|
||||
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
editor.putString(String.valueOf(Constants.LATITUDE), "" + location.getLatitude());
|
||||
editor.putString(String.valueOf(Constants.LONGITUDE), "" + location.getLongitude());
|
||||
editor.apply();
|
||||
Constants.LATITUDE = location.getLatitude();
|
||||
Constants.LONGITUDE = location.getLongitude();
|
||||
try {
|
||||
Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault());
|
||||
final List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
|
||||
if (!addresses.isEmpty()) {
|
||||
addresses.size();
|
||||
String address = addresses.get(0).getAddressLine(0);
|
||||
Constants.LOCATION = String.valueOf(address);
|
||||
} else {
|
||||
Constants.LOCATION = "not Availeble";
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
GoToNext_Activty();
|
||||
|
||||
} else {
|
||||
|
||||
if (sharedPreferences.getString(String.valueOf(Constants.LATITUDE), "").equals("") || sharedPreferences.getString(String.valueOf(Constants.LONGITUDE), "").equals("")) {
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
editor.putString(String.valueOf(Constants.LATITUDE), "33.738045");
|
||||
editor.putString(String.valueOf(Constants.LONGITUDE), "73.084488");
|
||||
editor.apply();
|
||||
|
||||
}
|
||||
|
||||
GoToNext_Activty();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void GoToNext_Activty() {
|
||||
final User user = BaseApp.getInstance(context).getLoginUser();
|
||||
if (user != null) {
|
||||
Intent intent = new Intent(getActivity(), MainActivity.class);
|
||||
startActivity(intent);
|
||||
requireActivity().finish();
|
||||
} else {
|
||||
Intent intent = new Intent(getActivity(), IntroActivity.class);
|
||||
startActivity(intent);
|
||||
requireActivity().finish();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Toast;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import com.squareup.picasso.Callback;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
public class FullImageFragment extends Fragment {
|
||||
|
||||
private Context context;
|
||||
|
||||
private String chat_id;
|
||||
private ProgressBar progressBar;
|
||||
private File fullpath;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View getView = inflater.inflate(R.layout.fragment_fullimage, container, false);
|
||||
context = getContext();
|
||||
|
||||
DisplayMetrics displayMetrics = new DisplayMetrics();
|
||||
Objects.requireNonNull(getActivity()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
|
||||
String imageUrl = Objects.requireNonNull(getArguments()).getString("image_url");
|
||||
chat_id = getArguments().getString("chat_id");
|
||||
Button savebtn2 = getView.findViewById(R.id.savebtn2);
|
||||
|
||||
ImageView closeGallery = getView.findViewById(R.id.close_gallery);
|
||||
closeGallery.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Objects.requireNonNull(getActivity()).onBackPressed();
|
||||
}
|
||||
});
|
||||
|
||||
fullpath = new File(Environment.getExternalStorageDirectory() + "/ourride/" + chat_id + ".jpg");
|
||||
|
||||
Button savebtn = getView.findViewById(R.id.savebtn);
|
||||
if (fullpath.exists()) {
|
||||
savebtn.setVisibility(View.GONE);
|
||||
savebtn2.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
savebtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Toast.makeText(context, "Save not available in this build.", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
progressBar = getView.findViewById(R.id.progress);
|
||||
ImageView singleImage = getView.findViewById(R.id.single_image);
|
||||
|
||||
if (fullpath.exists()) {
|
||||
Uri uri = Uri.parse(fullpath.getAbsolutePath());
|
||||
singleImage.setImageURI(uri);
|
||||
} else {
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
PicassoTrustAll.getInstance(context).load(imageUrl).placeholder(R.drawable.image_placeholder)
|
||||
.into(singleImage, new Callback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
// TODO Auto-generated method stub
|
||||
progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
View sharebtn = getView.findViewById(R.id.sharebtn);
|
||||
sharebtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
SharePicture();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return getView;
|
||||
}
|
||||
|
||||
private void SharePicture() {
|
||||
// Simple share stub: share the image URL as text.
|
||||
String imageUrl = Objects.requireNonNull(getArguments()).getString("image_url");
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
intent.setType("text/plain");
|
||||
intent.putExtra(Intent.EXTRA_TEXT, imageUrl);
|
||||
startActivity(Intent.createChooser(intent, ""));
|
||||
}
|
||||
|
||||
private void Savepicture(final boolean isfromshare) {
|
||||
// Download/save is not supported anymore; keep method to satisfy old call sites.
|
||||
Toast.makeText(context, "Save not available in this build.", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.facebook.shimmer.ShimmerFrameLayout;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.item.HistoryItem;
|
||||
import id.ontime.driver.json.AllTransResponseJson;
|
||||
import id.ontime.driver.json.DetailRequestJson;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
|
||||
public class HistoryFragment extends Fragment {
|
||||
|
||||
|
||||
private Context context;
|
||||
private ShimmerFrameLayout shimmer;
|
||||
private RecyclerView recycle;
|
||||
private HistoryItem historyItem;
|
||||
private RelativeLayout rlnodata;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View getView = inflater.inflate(R.layout.fragment_recycle, container, false);
|
||||
context = getContext();
|
||||
shimmer = getView.findViewById(R.id.shimmerwallet);
|
||||
recycle = getView.findViewById(R.id.inboxlist);
|
||||
rlnodata = getView.findViewById(R.id.rlnodata);
|
||||
|
||||
recycle.setHasFixedSize(true);
|
||||
recycle.setLayoutManager(new GridLayoutManager(context, 1));
|
||||
|
||||
return getView;
|
||||
}
|
||||
|
||||
private void shimmershow() {
|
||||
recycle.setVisibility(View.GONE);
|
||||
shimmer.setVisibility(View.VISIBLE);
|
||||
shimmer.startShimmerAnimation();
|
||||
}
|
||||
|
||||
private void shimmertutup() {
|
||||
|
||||
recycle.setVisibility(View.VISIBLE);
|
||||
shimmer.setVisibility(View.GONE);
|
||||
shimmer.stopShimmerAnimation();
|
||||
}
|
||||
|
||||
private void getdatatrans() {
|
||||
shimmershow();
|
||||
User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
DriverService driverService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
DetailRequestJson param = new DetailRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
driverService.history(param).enqueue(new Callback<AllTransResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<AllTransResponseJson> call, @NonNull Response<AllTransResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
shimmertutup();
|
||||
historyItem = new HistoryItem(context, Objects.requireNonNull(response.body()).getData(), R.layout.item_order);
|
||||
recycle.setAdapter(historyItem);
|
||||
if (response.body().getData().isEmpty()) {
|
||||
recycle.setVisibility(View.GONE);
|
||||
rlnodata.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
recycle.setVisibility(View.VISIBLE);
|
||||
rlnodata.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<AllTransResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
getdatatrans();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,383 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.location.Location;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.api.GoogleApiClient;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.OnMapReadyCallback;
|
||||
import com.google.android.gms.maps.SupportMapFragment;
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
import com.google.android.gms.maps.model.MapStyleOptions;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.TopupSaldoActivity;
|
||||
import id.ontime.driver.activity.WalletActivity;
|
||||
import id.ontime.driver.activity.WithdrawActivity;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.json.GetOnRequestJson;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.item.BanklistItem;
|
||||
import id.ontime.driver.json.ResponseJson;
|
||||
import id.ontime.driver.models.BankModels;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class HomeFragment extends Fragment implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
|
||||
private static final String TAG = "Home";
|
||||
private Context context;
|
||||
private GoogleMap gMap;
|
||||
private static final int REQUEST_PERMISSION_LOCATION = 991;
|
||||
private GoogleApiClient googleApiClient;
|
||||
private TextView saldo;
|
||||
private TextView nama;
|
||||
private ImageView foto;
|
||||
private RelativeLayout rlprogress;
|
||||
private Button onoff, uangbelanja, autobid;
|
||||
private SettingPreference sp;
|
||||
private ArrayList<BankModels> mList;
|
||||
private String statusdriver, saldodriver;
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View getView = inflater.inflate(R.layout.fragment_home, container, false);
|
||||
context = getContext();
|
||||
nama = getView.findViewById(R.id.username);
|
||||
foto = getView.findViewById(R.id.userphoto);
|
||||
RelativeLayout topup = getView.findViewById(R.id.topup);
|
||||
RelativeLayout withdraw = getView.findViewById(R.id.withdraw);
|
||||
RelativeLayout detail = getView.findViewById(R.id.detail);
|
||||
saldo = getView.findViewById(R.id.saldo);
|
||||
autobid = getView.findViewById(R.id.autobid);
|
||||
uangbelanja = getView.findViewById(R.id.maks);
|
||||
onoff = getView.findViewById(R.id.onoff);
|
||||
mList = new ArrayList<>();
|
||||
sp = new SettingPreference(context);
|
||||
rlprogress = getView.findViewById(R.id.rlprogress);
|
||||
topup.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, TopupSaldoActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
sp.updateNotif("OFF");
|
||||
withdraw.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, WithdrawActivity.class);
|
||||
i.putExtra("type","withdraw");
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
detail.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, WalletActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
uangbelanja.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
dialog();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
|
||||
.findFragmentById(R.id.mapView);
|
||||
Objects.requireNonNull(mapFragment).getMapAsync(this);
|
||||
if (googleApiClient == null) {
|
||||
googleApiClient = new GoogleApiClient.Builder(context)
|
||||
.addConnectionCallbacks(this)
|
||||
.addOnConnectionFailedListener(this)
|
||||
.addApi(LocationServices.API)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (sp.getSetting()[0].equals("OFF")) {
|
||||
autobid.setSelected(false);
|
||||
} else {
|
||||
autobid.setSelected(true);
|
||||
}
|
||||
//rlprogress.setVisibility(View.VISIBLE);
|
||||
|
||||
Bundle bundle = getArguments();
|
||||
if (bundle != null) {
|
||||
statusdriver = bundle.getString("status");
|
||||
saldodriver = bundle.getString("saldo");
|
||||
}
|
||||
if (statusdriver.equals("1")) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
sp.updateKerja("ON");
|
||||
onoff.setSelected(true);
|
||||
onoff.setText("ON");
|
||||
} else if (statusdriver.equals("4")) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
onoff.setSelected(false);
|
||||
onoff.setText("OFF");
|
||||
sp.updateKerja("OFF");
|
||||
}
|
||||
|
||||
onoff.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
getturnon();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (sp.getSetting()[1].isEmpty()) {
|
||||
Utility.currencyTXT(uangbelanja, "10000", context);
|
||||
} else if (sp.getSetting()[1].equals("Unlimited")) {
|
||||
uangbelanja.setText(sp.getSetting()[1]);
|
||||
} else {
|
||||
Utility.currencyTXT(uangbelanja, sp.getSetting()[1], context);
|
||||
}
|
||||
|
||||
List<BankModels> items = getPeopleData(context);
|
||||
mList.addAll(items);
|
||||
|
||||
|
||||
return getView;
|
||||
}
|
||||
|
||||
private static List<BankModels> getPeopleData(Context ctx) {
|
||||
List<BankModels> items = new ArrayList<>();
|
||||
@SuppressLint("Recycle") TypedArray drw_arr = ctx.getResources().obtainTypedArray(R.array.list_maximum);
|
||||
String[] name_arr = ctx.getResources().getStringArray(R.array.list_maximum);
|
||||
|
||||
for (int i = 0; i < drw_arr.length(); i++) {
|
||||
BankModels obj = new BankModels();
|
||||
obj.setText(name_arr[i]);
|
||||
items.add(obj);
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapReady(GoogleMap googleMap) {
|
||||
gMap = googleMap;
|
||||
gMap.getUiSettings().setMyLocationButtonEnabled(true);
|
||||
gMap.getUiSettings().setMapToolbarEnabled(true);
|
||||
try {
|
||||
boolean success = googleMap.setMapStyle(
|
||||
MapStyleOptions.loadRawResourceStyle(
|
||||
context, R.raw.style_json));
|
||||
|
||||
if (!success) {
|
||||
Log.e(TAG, "Style parsing failed.");
|
||||
}
|
||||
} catch (Resources.NotFoundException e) {
|
||||
Log.e(TAG, "Can't find style. Error: ", e);
|
||||
}
|
||||
|
||||
|
||||
updateLastLocation();
|
||||
}
|
||||
|
||||
private void updateLastLocation() {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION_LOCATION);
|
||||
return;
|
||||
}
|
||||
Location lastKnownLocation = LocationServices.FusedLocationApi.getLastLocation(
|
||||
googleApiClient);
|
||||
gMap.setMyLocationEnabled(true);
|
||||
|
||||
if (lastKnownLocation != null) {
|
||||
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
|
||||
new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude()), 15f)
|
||||
);
|
||||
|
||||
gMap.animateCamera(CameraUpdateFactory.zoomTo(15f));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(@Nullable Bundle bundle) {
|
||||
updateLastLocation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionSuspended(int i) {
|
||||
updateLastLocation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
|
||||
updateLastLocation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
googleApiClient.connect();
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
googleApiClient.disconnect();
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
nama.setText(loginUser.getFullnama());
|
||||
|
||||
|
||||
autobid.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (sp.getSetting()[0].equals("OFF")) {
|
||||
sp.updateAutoBid("ON");
|
||||
autobid.setSelected(true);
|
||||
} else {
|
||||
sp.updateAutoBid("OFF");
|
||||
autobid.setSelected(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
Utility.currencyTXT(saldo, saldodriver, context);
|
||||
}
|
||||
|
||||
private void getturnon() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
DriverService userService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
GetOnRequestJson param = new GetOnRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
if (statusdriver.equals("1")) {
|
||||
param.setOn(false);
|
||||
} else {
|
||||
param.setOn(true);
|
||||
}
|
||||
|
||||
userService.turnon(param).enqueue(new Callback<ResponseJson>() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ResponseJson> call, @NonNull Response<ResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
statusdriver = Objects.requireNonNull(response.body()).getData();
|
||||
if (response.body().getData().equals("1")) {
|
||||
sp.updateKerja("ON");
|
||||
onoff.setSelected(true);
|
||||
onoff.setText("ON");
|
||||
} else if (response.body().getData().equals("4")) {
|
||||
sp.updateKerja("OFF");
|
||||
onoff.setSelected(false);
|
||||
onoff.setText("OFF");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void dialog() {
|
||||
final Dialog dialog = new Dialog(context);
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // before
|
||||
dialog.setContentView(R.layout.dialog_bank);
|
||||
dialog.setCancelable(true);
|
||||
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
|
||||
lp.copyFrom(Objects.requireNonNull(dialog.getWindow()).getAttributes());
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
||||
|
||||
|
||||
final ImageView close = dialog.findViewById(R.id.close);
|
||||
final RecyclerView list = dialog.findViewById(R.id.recycleview);
|
||||
|
||||
|
||||
list.setHasFixedSize(true);
|
||||
list.setLayoutManager(new GridLayoutManager(context, 1));
|
||||
|
||||
BanklistItem bankItem = new BanklistItem(context, mList, R.layout.item_petunjuk, new BanklistItem.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(BankModels item) {
|
||||
if (item.getText().equals("Unlimited")) {
|
||||
uangbelanja.setText(item.getText());
|
||||
} else {
|
||||
Utility.currencyTXT(uangbelanja, item.getText(), context);
|
||||
}
|
||||
sp.updateMaksimalBelanja(item.getText());
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
list.setAdapter(bankItem);
|
||||
|
||||
|
||||
close.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
dialog.dismiss();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
dialog.show();
|
||||
dialog.getWindow().setAttributes(lp);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.facebook.shimmer.ShimmerFrameLayout;
|
||||
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.Query;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.ChatActivity;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.constants.Functions;
|
||||
import id.ontime.driver.item.MessageItem;
|
||||
import id.ontime.driver.models.MessageModels;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
public class MessageFragment extends Fragment {
|
||||
|
||||
|
||||
private View getView;
|
||||
private Context context;
|
||||
|
||||
private RecyclerView inboxList;
|
||||
|
||||
private ArrayList<MessageModels> inboxArraylist;
|
||||
private ShimmerFrameLayout shimmer;
|
||||
private DatabaseReference rootRef;
|
||||
|
||||
private MessageItem inboxItem;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
getView = inflater.inflate(R.layout.fragment_recycle, container, false);
|
||||
context = getContext();
|
||||
|
||||
try {
|
||||
rootRef = FirebaseDatabase.getInstance().getReference();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
rootRef = null;
|
||||
}
|
||||
|
||||
inboxList = getView.findViewById(R.id.inboxlist);
|
||||
shimmer = getView.findViewById(R.id.shimmerwallet);
|
||||
inboxArraylist =new ArrayList<>();
|
||||
inboxList = getView.findViewById(R.id.inboxlist);
|
||||
LinearLayoutManager layout = new LinearLayoutManager(context);
|
||||
inboxList.setLayoutManager(layout);
|
||||
inboxList.setHasFixedSize(false);
|
||||
inboxItem = new MessageItem(context, inboxArraylist, new MessageItem.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(MessageModels item) {
|
||||
User loginuser = BaseApp.getInstance(context).getLoginUser();
|
||||
if (checkReadStoragepermission()) {
|
||||
Intent intent = new Intent(getActivity(), ChatActivity.class);
|
||||
intent.putExtra("senderid", loginuser.getId());
|
||||
intent.putExtra("receiverid", item.getId());
|
||||
intent.putExtra("name", item.getName());
|
||||
intent.putExtra("tokendriver", loginuser.getToken());
|
||||
intent.putExtra("tokenku", item.getTokenuser());
|
||||
intent.putExtra("pic", item.getPicture());
|
||||
requireActivity().startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
inboxList.setAdapter(inboxItem);
|
||||
|
||||
|
||||
|
||||
getView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Functions.hideSoftKeyboard(requireActivity());
|
||||
}
|
||||
});
|
||||
shimmershow();
|
||||
return getView;
|
||||
}
|
||||
|
||||
private ValueEventListener valueEventListener;
|
||||
|
||||
private Query inboxQuery;
|
||||
private void shimmershow() {
|
||||
inboxList.setVisibility(View.GONE);
|
||||
shimmer.setVisibility(View.VISIBLE);
|
||||
shimmer.startShimmerAnimation();
|
||||
}
|
||||
|
||||
private void shimmertutup() {
|
||||
|
||||
inboxList.setVisibility(View.VISIBLE);
|
||||
shimmer.setVisibility(View.GONE);
|
||||
shimmer.stopShimmerAnimation();
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (rootRef == null) {
|
||||
shimmertutup();
|
||||
if (getView != null) {
|
||||
View empty = getView.findViewById(R.id.rlnodata);
|
||||
if (empty != null) {
|
||||
empty.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
User loginuser = BaseApp.getInstance(context).getLoginUser();
|
||||
inboxQuery = rootRef.child("Inbox").child(loginuser.getId()).orderByChild("date");
|
||||
valueEventListener = new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
|
||||
shimmertutup();
|
||||
inboxArraylist.clear();
|
||||
|
||||
for (DataSnapshot ds:dataSnapshot.getChildren()) {
|
||||
MessageModels model = new MessageModels();
|
||||
model.setId(ds.getKey());
|
||||
model.setName(Objects.requireNonNull(ds.child("name").getValue()).toString());
|
||||
model.setMessage(Objects.requireNonNull(ds.child("msg").getValue()).toString());
|
||||
model.setTimestamp(Objects.requireNonNull(ds.child("date").getValue()).toString());
|
||||
model.setStatus(Objects.requireNonNull(ds.child("status").getValue()).toString());
|
||||
model.setPicture(Objects.requireNonNull(ds.child("pic").getValue()).toString());
|
||||
model.setTokendriver(Objects.requireNonNull(ds.child("tokendriver").getValue()).toString());
|
||||
model.setTokenuser(Objects.requireNonNull(ds.child("tokenuser").getValue()).toString());
|
||||
inboxArraylist.add(model);
|
||||
}
|
||||
Collections.reverse(inboxArraylist);
|
||||
inboxItem.notifyDataSetChanged();
|
||||
|
||||
if(inboxArraylist.isEmpty()){
|
||||
getView.findViewById(R.id.rlnodata).setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
getView.findViewById(R.id.rlnodata).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelled(@NonNull DatabaseError databaseError) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
inboxQuery.addValueEventListener(valueEventListener);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if(inboxQuery !=null)
|
||||
inboxQuery.removeEventListener(valueEventListener);
|
||||
}
|
||||
|
||||
private boolean checkReadStoragepermission(){
|
||||
if (ContextCompat.checkSelfPermission(Objects.requireNonNull(getActivity()).getApplicationContext(),
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
== PackageManager.PERMISSION_GRANTED){
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
try {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
|
||||
Constants.permission_Read_data );
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,853 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.facebook.shimmer.ShimmerFrameLayout;
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.api.GoogleApiClient;
|
||||
import com.google.android.gms.location.LocationServices;
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.OnMapReadyCallback;
|
||||
import com.google.android.gms.maps.SupportMapFragment;
|
||||
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
import com.google.android.gms.maps.model.MapStyleOptions;
|
||||
import com.google.android.gms.maps.model.Marker;
|
||||
import com.google.android.gms.maps.model.MarkerOptions;
|
||||
import com.google.android.gms.maps.model.Polyline;
|
||||
import com.google.android.gms.maps.model.PolylineOptions;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.ChatActivity;
|
||||
import id.ontime.driver.activity.MainActivity;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.gmap.directions.Directions;
|
||||
import id.ontime.driver.gmap.directions.Route;
|
||||
import id.ontime.driver.item.ItemPesananItem;
|
||||
import id.ontime.driver.json.AcceptRequestJson;
|
||||
import id.ontime.driver.json.AcceptResponseJson;
|
||||
import id.ontime.driver.json.ResponseJson;
|
||||
import id.ontime.driver.json.VerifyRequestJson;
|
||||
import id.ontime.driver.utils.api.FCMHelper;
|
||||
import id.ontime.driver.utils.api.MapDirectionAPI;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.json.DetailRequestJson;
|
||||
import id.ontime.driver.json.DetailTransResponseJson;
|
||||
import id.ontime.driver.json.fcm.FCMMessage;
|
||||
import id.ontime.driver.models.OrderFCM;
|
||||
import id.ontime.driver.models.PelangganModel;
|
||||
import id.ontime.driver.models.TransaksiModel;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.Log;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import de.hdodenhof.circleimageview.CircleImageView;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
|
||||
public class OrderFragment extends Fragment implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
|
||||
|
||||
private Context context;
|
||||
private GoogleMap gMap;
|
||||
private static final int REQUEST_PERMISSION_LOCATION = 991;
|
||||
private static final int REQUEST_PERMISSION_CALL = 992;
|
||||
private GoogleApiClient googleApiClient;
|
||||
private LatLng pickUpLatLng;
|
||||
private LatLng destinationLatLng;
|
||||
private Polyline directionLine;
|
||||
private Marker pickUpMarker;
|
||||
private Marker destinationMarker;
|
||||
private String idtrans, idpelanggan, response, fitur, onsubmit;
|
||||
|
||||
LinearLayout bottomsheet;
|
||||
TextView layanan;
|
||||
TextView layanandesk;
|
||||
TextView verify;
|
||||
TextView namamerchant;
|
||||
LinearLayout llchat;
|
||||
CircleImageView foto;
|
||||
TextView pickUpText;
|
||||
TextView destinationText;
|
||||
TextView fiturtext;
|
||||
TextView distanceText;
|
||||
TextView priceText;
|
||||
RelativeLayout rlprogress;
|
||||
TextView textprogress;
|
||||
TextView cost;
|
||||
TextView deliveryfee;
|
||||
ImageView phone;
|
||||
|
||||
ImageView chat;
|
||||
ImageView phonemerchant;
|
||||
ImageView chatmerchant;
|
||||
LinearLayout lldestination;
|
||||
LinearLayout llorderdetail;
|
||||
LinearLayout lldistance;
|
||||
LinearLayout lldetailsend;
|
||||
TextView produk;
|
||||
TextView sendername;
|
||||
TextView receivername;
|
||||
Button senderphone;
|
||||
Button receiverphone;
|
||||
ShimmerFrameLayout shimmerlayanan;
|
||||
ShimmerFrameLayout shimmerpickup;
|
||||
ShimmerFrameLayout shimmerdestination;
|
||||
ShimmerFrameLayout shimmerfitur;
|
||||
ShimmerFrameLayout shimmerdistance;
|
||||
ShimmerFrameLayout shimmerprice;
|
||||
Button submit;
|
||||
LinearLayout llmerchantdetail;
|
||||
LinearLayout llmerchantinfo;
|
||||
LinearLayout llbutton;
|
||||
RecyclerView rvmerchantnear;
|
||||
private ItemPesananItem itemPesananItem;
|
||||
private TextView totaltext;
|
||||
private String type;
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public View onCreateView(@Nullable LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View getView = Objects.requireNonNull(inflater).inflate(R.layout.activity_detail_order, container, false);
|
||||
context = getContext();
|
||||
bottomsheet = getView.findViewById(R.id.bottom_sheet);
|
||||
layanan = getView.findViewById(R.id.layanan);
|
||||
layanandesk = getView.findViewById(R.id.layanandes);
|
||||
verify = getView.findViewById(R.id.verifycation);
|
||||
namamerchant = getView.findViewById(R.id.namamerchant);
|
||||
llchat = getView.findViewById(R.id.llchat);
|
||||
foto = getView.findViewById(R.id.background);
|
||||
pickUpText = getView.findViewById(R.id.pickUpText);
|
||||
destinationText = getView.findViewById(R.id.destinationText);
|
||||
fiturtext = getView.findViewById(R.id.fitur);
|
||||
distanceText = getView.findViewById(R.id.distance);
|
||||
priceText = getView.findViewById(R.id.price);
|
||||
rlprogress = getView.findViewById(R.id.rlprogress);
|
||||
textprogress = getView.findViewById(R.id.textprogress);
|
||||
cost = getView.findViewById(R.id.cost);
|
||||
deliveryfee = getView.findViewById(R.id.deliveryfee);
|
||||
phone = getView.findViewById(R.id.phonenumber);
|
||||
chat = getView.findViewById(R.id.chat);
|
||||
phonemerchant = getView.findViewById(R.id.phonemerchant);
|
||||
chatmerchant = getView.findViewById(R.id.chatmerchant);
|
||||
lldestination = getView.findViewById(R.id.lldestination);
|
||||
llorderdetail = getView.findViewById(R.id.orderdetail);
|
||||
lldistance = getView.findViewById(R.id.lldistance);
|
||||
lldetailsend = getView.findViewById(R.id.senddetail);
|
||||
produk = getView.findViewById(R.id.produk);
|
||||
sendername = getView.findViewById(R.id.sendername);
|
||||
receivername = getView.findViewById(R.id.receivername);
|
||||
senderphone = getView.findViewById(R.id.senderphone);
|
||||
receiverphone = getView.findViewById(R.id.receiverphone);
|
||||
shimmerlayanan = getView.findViewById(R.id.shimmerlayanan);
|
||||
shimmerpickup = getView.findViewById(R.id.shimmerpickup);
|
||||
shimmerdestination = getView.findViewById(R.id.shimmerdestination);
|
||||
shimmerfitur = getView.findViewById(R.id.shimmerfitur);
|
||||
shimmerdistance = getView.findViewById(R.id.shimmerdistance);
|
||||
shimmerprice = getView.findViewById(R.id.shimmerprice);
|
||||
submit = getView.findViewById(R.id.order);
|
||||
llmerchantdetail = getView.findViewById(R.id.merchantdetail);
|
||||
llmerchantinfo = getView.findViewById(R.id.merchantinfo);
|
||||
llbutton = getView.findViewById(R.id.llbutton);
|
||||
rvmerchantnear = getView.findViewById(R.id.merchantnear);
|
||||
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomsheet);
|
||||
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
||||
totaltext = getView.findViewById(R.id.totaltext);
|
||||
fitur = "0";
|
||||
type = "0";
|
||||
Bundle bundle = getArguments();
|
||||
if (bundle != null) {
|
||||
idpelanggan = bundle.getString("id_pelanggan");
|
||||
idtrans = bundle.getString("id_transaksi");
|
||||
response = bundle.getString("response");
|
||||
}
|
||||
|
||||
shimmerload();
|
||||
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
|
||||
.findFragmentById(R.id.mapView);
|
||||
Objects.requireNonNull(mapFragment).getMapAsync(this);
|
||||
if (googleApiClient == null) {
|
||||
googleApiClient = new GoogleApiClient.Builder(context)
|
||||
.addConnectionCallbacks(this)
|
||||
.addOnConnectionFailedListener(this)
|
||||
.addApi(LocationServices.API)
|
||||
.build();
|
||||
}
|
||||
switch (response) {
|
||||
case "2":
|
||||
onsubmit = "2";
|
||||
llchat.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case "3":
|
||||
onsubmit = "3";
|
||||
llchat.setVisibility(View.VISIBLE);
|
||||
submit.setVisibility(View.VISIBLE);
|
||||
verify.setVisibility(View.GONE);
|
||||
submit.setText("finish");
|
||||
break;
|
||||
case "4":
|
||||
llchat.setVisibility(View.GONE);
|
||||
submit.setVisibility(View.GONE);
|
||||
layanandesk.setText(getString(R.string.notification_finish));
|
||||
break;
|
||||
case "5":
|
||||
llchat.setVisibility(View.GONE);
|
||||
layanandesk.setText(getString(R.string.notification_cancel));
|
||||
break;
|
||||
}
|
||||
rvmerchantnear.setHasFixedSize(true);
|
||||
rvmerchantnear.setNestedScrollingEnabled(false);
|
||||
rvmerchantnear.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
|
||||
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
textprogress.setText(getString(R.string.waiting_pleaseWait));
|
||||
return getView;
|
||||
}
|
||||
|
||||
private void getData(final String idtrans, final String idpelanggan) {
|
||||
final User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, loginUser.getEmail(), loginUser.getPassword());
|
||||
DetailRequestJson param = new DetailRequestJson();
|
||||
param.setId(idtrans);
|
||||
param.setIdPelanggan(idpelanggan);
|
||||
service.detailtrans(param).enqueue(new Callback<DetailTransResponseJson>() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<DetailTransResponseJson> call, @NonNull Response<DetailTransResponseJson> responsedata) {
|
||||
if (responsedata.isSuccessful()) {
|
||||
shimmertutup();
|
||||
Log.e("", String.valueOf(Objects.requireNonNull(responsedata.body()).getData().get(0)));
|
||||
final TransaksiModel transaksi = responsedata.body().getData().get(0);
|
||||
final PelangganModel pelanggan = responsedata.body().getPelanggan().get(0);
|
||||
type = transaksi.getHome();
|
||||
|
||||
if (transaksi.isPakaiWallet()) {
|
||||
totaltext.setText("Total (Saldo)");
|
||||
} else {
|
||||
totaltext.setText("Total (Tunai)");
|
||||
}
|
||||
|
||||
if (onsubmit.equals("2")) {
|
||||
if (transaksi.getHome().equals("4")) {
|
||||
layanandesk.setText("Ambil Pesanan");
|
||||
submit.setText("Mulai Pengiriman");
|
||||
verify.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
layanandesk.setText(getString(R.string.notification_accept));
|
||||
}
|
||||
submit.setVisibility(View.VISIBLE);
|
||||
submit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (transaksi.getHome().equals("4")) {
|
||||
|
||||
if (verify.getText().toString().isEmpty()) {
|
||||
Toast.makeText(context, "Masukan Kode Merchant!", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
SimpleDateFormat timeFormat = new SimpleDateFormat("dd MMM yyyy", Locale.US);
|
||||
String finalDate = timeFormat.format(transaksi.getWaktuOrder());
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
verify(verify.getText().toString(), pelanggan, transaksi.getToken_merchant(), transaksi.idtransmerchant, finalDate);
|
||||
}
|
||||
} else {
|
||||
start(pelanggan, transaksi.getToken_merchant(), transaksi.idtransmerchant, String.valueOf(transaksi.getWaktuOrder()));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
} else if (onsubmit.equals("3")) {
|
||||
if (transaksi.getHome().equals("4")) {
|
||||
layanandesk.setText("Mulai Pengiriman");
|
||||
} else {
|
||||
layanandesk.setText(getString(R.string.notification_start));
|
||||
}
|
||||
|
||||
verify.setVisibility(View.GONE);
|
||||
submit.setText("Finish");
|
||||
submit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish(pelanggan, transaksi.token_merchant);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
fitur = transaksi.getOrderFitur();
|
||||
if (transaksi.getHome().equals("3")) {
|
||||
lldestination.setVisibility(View.GONE);
|
||||
lldistance.setVisibility(View.GONE);
|
||||
fiturtext.setText(transaksi.getEstimasi());
|
||||
} else if (transaksi.getHome().equals("4")) {
|
||||
llorderdetail.setVisibility(View.VISIBLE);
|
||||
llmerchantdetail.setVisibility(View.VISIBLE);
|
||||
llmerchantinfo.setVisibility(View.VISIBLE);
|
||||
Utility.currencyTXT(deliveryfee, String.valueOf(transaksi.getHarga()), context);
|
||||
Utility.currencyTXT(cost, String.valueOf(transaksi.getTotal_biaya()), context);
|
||||
namamerchant.setText(transaksi.getNama_merchant());
|
||||
itemPesananItem = new ItemPesananItem(responsedata.body().getItem(), R.layout.item_pesanan);
|
||||
rvmerchantnear.setAdapter(itemPesananItem);
|
||||
|
||||
phonemerchant.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context, R.style.DialogStyle);
|
||||
alertDialogBuilder.setTitle("Telpon Customer");
|
||||
alertDialogBuilder.setMessage("Anda ingin menelepon Merchant (+" + transaksi.getTeleponmerchant() + ")?");
|
||||
alertDialogBuilder.setPositiveButton("ya",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION_CALL);
|
||||
return;
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:+" + transaksi.getTeleponmerchant()));
|
||||
startActivity(callIntent);
|
||||
}
|
||||
});
|
||||
|
||||
alertDialogBuilder.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||
alertDialog.show();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
chatmerchant.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(context, ChatActivity.class);
|
||||
intent.putExtra("senderid", loginUser.getId());
|
||||
intent.putExtra("receiverid", transaksi.getId_merchant());
|
||||
intent.putExtra("tokendriver", loginUser.getToken());
|
||||
intent.putExtra("tokenku", transaksi.getToken_merchant());
|
||||
intent.putExtra("name", transaksi.getNama_merchant());
|
||||
intent.putExtra("pic", Constants.IMAGESMERCHANT + transaksi.getFoto_merchant());
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
} else if (transaksi.getHome().equalsIgnoreCase("2")) {
|
||||
requestRoute();
|
||||
lldetailsend.setVisibility(View.VISIBLE);
|
||||
produk.setText(transaksi.getNamaBarang());
|
||||
sendername.setText(transaksi.namaPengirim);
|
||||
receivername.setText(transaksi.namaPenerima);
|
||||
|
||||
senderphone.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context, R.style.DialogStyle);
|
||||
alertDialogBuilder.setTitle("Telpon Driver");
|
||||
alertDialogBuilder.setMessage("You want to call " + transaksi.getNamaPengirim() + "(" + transaksi.teleponPengirim + ")?");
|
||||
alertDialogBuilder.setPositiveButton("yes",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION_CALL);
|
||||
return;
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:" + transaksi.teleponPengirim));
|
||||
startActivity(callIntent);
|
||||
}
|
||||
});
|
||||
|
||||
alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||
alertDialog.show();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
receiverphone.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context, R.style.DialogStyle);
|
||||
alertDialogBuilder.setTitle("Call Driver");
|
||||
alertDialogBuilder.setMessage("You want to call " + transaksi.getNamaPenerima() + "(" + transaksi.teleponPenerima + ")?");
|
||||
alertDialogBuilder.setPositiveButton("yes",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION_CALL);
|
||||
return;
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:" + transaksi.teleponPenerima));
|
||||
startActivity(callIntent);
|
||||
}
|
||||
});
|
||||
|
||||
alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||
alertDialog.show();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
pickUpLatLng = new LatLng(transaksi.getStartLatitude(), transaksi.getStartLongitude());
|
||||
destinationLatLng = new LatLng(transaksi.getEndLatitude(), transaksi.getEndLongitude());
|
||||
if (pickUpMarker != null) pickUpMarker.remove();
|
||||
pickUpMarker = gMap.addMarker(new MarkerOptions()
|
||||
.position(pickUpLatLng)
|
||||
.title("Ambil")
|
||||
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pickup)));
|
||||
|
||||
|
||||
if (destinationMarker != null) destinationMarker.remove();
|
||||
destinationMarker = gMap.addMarker(new MarkerOptions()
|
||||
.position(destinationLatLng)
|
||||
.title("Tujuan")
|
||||
.icon(BitmapDescriptorFactory.fromResource(R.drawable.destination)));
|
||||
updateLastLocation();
|
||||
parsedata(transaksi, pelanggan);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull retrofit2.Call<DetailTransResponseJson> call, @NonNull Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void shimmerload() {
|
||||
shimmerlayanan.startShimmerAnimation();
|
||||
shimmerpickup.startShimmerAnimation();
|
||||
shimmerdestination.startShimmerAnimation();
|
||||
shimmerfitur.startShimmerAnimation();
|
||||
shimmerdistance.startShimmerAnimation();
|
||||
shimmerprice.startShimmerAnimation();
|
||||
|
||||
layanan.setVisibility(View.GONE);
|
||||
layanandesk.setVisibility(View.GONE);
|
||||
pickUpText.setVisibility(View.GONE);
|
||||
destinationText.setVisibility(View.GONE);
|
||||
fiturtext.setVisibility(View.GONE);
|
||||
priceText.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void shimmertutup() {
|
||||
shimmerlayanan.stopShimmerAnimation();
|
||||
shimmerpickup.stopShimmerAnimation();
|
||||
shimmerdestination.stopShimmerAnimation();
|
||||
shimmerfitur.stopShimmerAnimation();
|
||||
shimmerdistance.stopShimmerAnimation();
|
||||
shimmerprice.stopShimmerAnimation();
|
||||
|
||||
shimmerlayanan.setVisibility(View.GONE);
|
||||
shimmerpickup.setVisibility(View.GONE);
|
||||
shimmerdestination.setVisibility(View.GONE);
|
||||
shimmerfitur.setVisibility(View.GONE);
|
||||
shimmerdistance.setVisibility(View.GONE);
|
||||
shimmerprice.setVisibility(View.GONE);
|
||||
|
||||
layanan.setVisibility(View.VISIBLE);
|
||||
layanandesk.setVisibility(View.VISIBLE);
|
||||
pickUpText.setVisibility(View.VISIBLE);
|
||||
destinationText.setVisibility(View.VISIBLE);
|
||||
distanceText.setVisibility(View.VISIBLE);
|
||||
fiturtext.setVisibility(View.VISIBLE);
|
||||
priceText.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
private void parsedata(TransaksiModel request, final PelangganModel pelanggan) {
|
||||
requestRoute();
|
||||
final User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
pickUpLatLng = new LatLng(request.getStartLatitude(), request.getStartLongitude());
|
||||
destinationLatLng = new LatLng(request.getEndLatitude(), request.getEndLongitude());
|
||||
|
||||
PicassoTrustAll.getInstance(context)
|
||||
.load(Constants.IMAGESUSER + pelanggan.getFoto())
|
||||
.placeholder(R.drawable.image_placeholder)
|
||||
.into(foto);
|
||||
|
||||
|
||||
layanan.setText(pelanggan.getFullnama());
|
||||
pickUpText.setText(request.getAlamatAsal());
|
||||
destinationText.setText(request.getAlamatTujuan());
|
||||
if (type.equals("4")) {
|
||||
double totalbiaya = Double.parseDouble(request.getTotal_biaya());
|
||||
Utility.currencyTXT(priceText, String.valueOf(request.getHarga() + totalbiaya), context);
|
||||
} else {
|
||||
Utility.currencyTXT(priceText, String.valueOf(request.getHarga()), context);
|
||||
}
|
||||
|
||||
phone.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context, R.style.DialogStyle);
|
||||
alertDialogBuilder.setTitle("Call Customer");
|
||||
alertDialogBuilder.setMessage("You want to call Costumer (+" + pelanggan.getNoTelepon() + ")?");
|
||||
alertDialogBuilder.setPositiveButton("yes",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION_CALL);
|
||||
return;
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:+" + pelanggan.getNoTelepon()));
|
||||
startActivity(callIntent);
|
||||
}
|
||||
});
|
||||
|
||||
alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||
alertDialog.show();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
chat.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(context, ChatActivity.class);
|
||||
intent.putExtra("senderid", loginUser.getId());
|
||||
intent.putExtra("receiverid", pelanggan.getId());
|
||||
intent.putExtra("tokendriver", loginUser.getToken());
|
||||
intent.putExtra("tokenku", pelanggan.getToken());
|
||||
intent.putExtra("name", pelanggan.getFullnama());
|
||||
intent.putExtra("pic", Constants.IMAGESUSER + pelanggan.getFoto());
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateLastLocation() {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION_LOCATION);
|
||||
return;
|
||||
}
|
||||
LocationServices.FusedLocationApi.getLastLocation(
|
||||
googleApiClient);
|
||||
gMap.setMyLocationEnabled(true);
|
||||
|
||||
if (pickUpLatLng != null) {
|
||||
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
|
||||
pickUpLatLng, 15f)
|
||||
);
|
||||
|
||||
gMap.animateCamera(CameraUpdateFactory.zoomTo(15f));
|
||||
}
|
||||
}
|
||||
|
||||
private okhttp3.Callback updateRouteCallback = new okhttp3.Callback() {
|
||||
@Override
|
||||
public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull okhttp3.Call call, okhttp3.Response response) throws IOException {
|
||||
if (response.isSuccessful()) {
|
||||
final String json = Objects.requireNonNull(response.body()).string();
|
||||
if (MapDirectionAPI.getDirectionErrorMessage(json) != null) {
|
||||
return;
|
||||
}
|
||||
final long distance = MapDirectionAPI.getDistance(context, json);
|
||||
final String time = MapDirectionAPI.getTimeDistance(context, json);
|
||||
if (distance >= 0) {
|
||||
if (getActivity() == null)
|
||||
return;
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateLineDestination(json);
|
||||
float km = ((float) (distance)) / 1000f;
|
||||
String format = String.format(Locale.US, "%.1f", km);
|
||||
distanceText.setText(format);
|
||||
fiturtext.setText(time);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private void requestRoute() {
|
||||
if (pickUpLatLng != null && destinationLatLng != null) {
|
||||
MapDirectionAPI.getDirection(context, pickUpLatLng, destinationLatLng)
|
||||
.enqueue(updateRouteCallback);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateLineDestination(String json) {
|
||||
Directions directions = new Directions(context);
|
||||
try {
|
||||
List<Route> routes = directions.parse(json);
|
||||
|
||||
if (directionLine != null) directionLine.remove();
|
||||
if (routes.size() > 0) {
|
||||
directionLine = gMap.addPolyline((new PolylineOptions())
|
||||
.addAll(routes.get(0).getOverviewPolyLine())
|
||||
.color(ContextCompat.getColor(context, R.color.colorgradient))
|
||||
.width(8));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onConnected(@Nullable Bundle bundle) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionSuspended(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapReady(GoogleMap googleMap) {
|
||||
gMap = googleMap;
|
||||
gMap.getUiSettings().setMyLocationButtonEnabled(true);
|
||||
try {
|
||||
boolean success = googleMap.setMapStyle(
|
||||
MapStyleOptions.loadRawResourceStyle(
|
||||
context, R.raw.style_json));
|
||||
|
||||
if (!success) {
|
||||
android.util.Log.e("", "Style parsing failed.");
|
||||
}
|
||||
} catch (Resources.NotFoundException e) {
|
||||
android.util.Log.e("", "Can't find style. Error: ", e);
|
||||
}
|
||||
getData(idtrans, idpelanggan);
|
||||
}
|
||||
|
||||
private void start(final PelangganModel pelanggan, final String tokenmerchant, final String idtransmerchant, final String waktuorder) {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
final User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
DriverService userService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
AcceptRequestJson param = new AcceptRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
param.setIdtrans(idtrans);
|
||||
userService.startrequest(param).enqueue(new Callback<AcceptResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<AcceptResponseJson> call, @NonNull final Response<AcceptResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("berhasil")) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
onsubmit = "3";
|
||||
getData(idtrans, idpelanggan);
|
||||
OrderFCM orderfcm = new OrderFCM();
|
||||
orderfcm.id_driver = loginUser.getId();
|
||||
orderfcm.id_transaksi = idtrans;
|
||||
orderfcm.response = "3";
|
||||
if (type.equals("4")) {
|
||||
orderfcm.id_pelanggan = idpelanggan;
|
||||
orderfcm.invoice = "INV-" + idtrans + idtransmerchant;
|
||||
orderfcm.ordertime = waktuorder;
|
||||
orderfcm.desc = "driver delivers the order";
|
||||
sendMessageToDriver(tokenmerchant, orderfcm);
|
||||
} else {
|
||||
orderfcm.desc = getString(R.string.notification_start);
|
||||
}
|
||||
sendMessageToDriver(pelanggan.getToken(), orderfcm);
|
||||
} else {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Intent i = new Intent(context, MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(i);
|
||||
Toast.makeText(context, "Order sudah tidak aktif!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<AcceptResponseJson> call, @NonNull Throwable t) {
|
||||
Toast.makeText(context, "Error Connection!", Toast.LENGTH_SHORT).show();
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void verify(String verificode, final PelangganModel pelanggan, final String tokenmerchant, final String idtransmerchant, final String waktuorder) {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
final User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
DriverService userService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
VerifyRequestJson param = new VerifyRequestJson();
|
||||
param.setId(loginUser.getNoTelepon());
|
||||
param.setIdtrans(idtrans);
|
||||
param.setVerifycode(verificode);
|
||||
userService.verifycode(param).enqueue(new Callback<ResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ResponseJson> call, @NonNull final Response<ResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
|
||||
start(pelanggan, tokenmerchant, idtransmerchant, waktuorder);
|
||||
} else {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Toast.makeText(context, "verifikasi kode merchant tidak sesuai!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ResponseJson> call, @NonNull Throwable t) {
|
||||
Toast.makeText(context, "Error Connection!", Toast.LENGTH_SHORT).show();
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void finish(final PelangganModel pelanggan, final String tokenmerchant) {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
final User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
DriverService userService = ServiceGenerator.createService(
|
||||
DriverService.class, loginUser.getNoTelepon(), loginUser.getPassword());
|
||||
AcceptRequestJson param = new AcceptRequestJson();
|
||||
param.setId(loginUser.getId());
|
||||
param.setIdtrans(idtrans);
|
||||
userService.finishrequest(param).enqueue(new Callback<AcceptResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<AcceptResponseJson> call, @NonNull final Response<AcceptResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("berhasil")) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Intent i = new Intent(context, MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(i);
|
||||
OrderFCM orderfcm = new OrderFCM();
|
||||
orderfcm.id_driver = loginUser.getId();
|
||||
orderfcm.id_transaksi = idtrans;
|
||||
orderfcm.response = "4";
|
||||
orderfcm.desc = getString(R.string.notification_finish);
|
||||
if (type.equals("4")) {
|
||||
sendMessageToDriver(tokenmerchant, orderfcm);
|
||||
sendMessageToDriver(pelanggan.getToken(), orderfcm);
|
||||
} else {
|
||||
sendMessageToDriver(pelanggan.getToken(), orderfcm);
|
||||
}
|
||||
|
||||
} else {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
Intent i = new Intent(context, MainActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(i);
|
||||
Toast.makeText(context, "Order is no longer available!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<AcceptResponseJson> call, @NonNull Throwable t) {
|
||||
Toast.makeText(context, "Error Connection!", Toast.LENGTH_SHORT).show();
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void sendMessageToDriver(final String regIDTujuan, final OrderFCM response) {
|
||||
|
||||
final FCMMessage message = new FCMMessage();
|
||||
message.setTo(regIDTujuan);
|
||||
message.setData(response);
|
||||
|
||||
FCMHelper.sendMessage(message).enqueue(new okhttp3.Callback() {
|
||||
@Override
|
||||
public void onResponse(@NonNull okhttp3.Call call, @NonNull okhttp3.Response response) {
|
||||
android.util.Log.e("REQUEST TO DRIVER", message.getData().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import nl.changer.audiowife.AudioWife;
|
||||
|
||||
|
||||
public class PlayAudioFragment extends Fragment {
|
||||
|
||||
private AudioWife audioWife;
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View getView = inflater.inflate(R.layout.fragment_playaudio, container, false);
|
||||
|
||||
Context context = getContext();
|
||||
|
||||
ImageView close_btn = getView.findViewById(R.id.close_btn);
|
||||
ImageButton playBtn = getView.findViewById(R.id.playbtn);
|
||||
ImageButton pauseBtn = getView.findViewById(R.id.pause_btn);
|
||||
SeekBar seekBar = getView.findViewById(R.id.seekbar);
|
||||
TextView durationTime = getView.findViewById(R.id.duration_time);
|
||||
TextView totalTime = getView.findViewById(R.id.totaltime);
|
||||
|
||||
String filepath = Objects.requireNonNull(getArguments()).getString("path");
|
||||
Uri uri = Uri.parse(filepath);
|
||||
|
||||
audioWife = AudioWife.getInstance();
|
||||
audioWife.init(context, uri)
|
||||
.setPlayView(playBtn)
|
||||
.setPauseView(pauseBtn)
|
||||
.setSeekBar(seekBar)
|
||||
.setRuntimeView(durationTime)
|
||||
.setTotalTimeView(totalTime);
|
||||
|
||||
audioWife.play();
|
||||
|
||||
close_btn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Objects.requireNonNull(getActivity()).onBackPressed();
|
||||
}
|
||||
});
|
||||
|
||||
return getView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
audioWife.pause();
|
||||
audioWife.release();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,348 @@
|
||||
package id.ontime.driver.fragment;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Dialog;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.ChangepassActivity;
|
||||
import id.ontime.driver.activity.EditKendaraanActivity;
|
||||
import id.ontime.driver.activity.EditProfileActivity;
|
||||
import id.ontime.driver.activity.IntroActivity;
|
||||
import id.ontime.driver.activity.PrivacyActivity;
|
||||
import id.ontime.driver.constants.BaseApp;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.json.GetHomeRequestJson;
|
||||
import id.ontime.driver.json.GetHomeResponseJson;
|
||||
import id.ontime.driver.utils.api.ServiceGenerator;
|
||||
import id.ontime.driver.utils.api.service.DriverService;
|
||||
import id.ontime.driver.models.User;
|
||||
import id.ontime.driver.utils.SettingPreference;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import io.realm.Realm;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
import static android.content.Context.NOTIFICATION_SERVICE;
|
||||
|
||||
|
||||
public class ProfileFragment extends Fragment {
|
||||
private Context context;
|
||||
private ImageView foto;
|
||||
private TextView nama, iduser;
|
||||
private TextView email;
|
||||
private RelativeLayout rlprogress;
|
||||
private SettingPreference sp;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View getView = inflater.inflate(R.layout.fragment_profile, container, false);
|
||||
context = getContext();
|
||||
foto = getView.findViewById(R.id.userphoto);
|
||||
nama = getView.findViewById(R.id.username);
|
||||
iduser = getView.findViewById(R.id.iduser);
|
||||
email = getView.findViewById(R.id.email);
|
||||
LinearLayout aboutus = getView.findViewById(R.id.llaboutus);
|
||||
LinearLayout privacy = getView.findViewById(R.id.llprivacypolicy);
|
||||
LinearLayout shareapp = getView.findViewById(R.id.llshareapp);
|
||||
LinearLayout rateapp = getView.findViewById(R.id.llrateapp);
|
||||
LinearLayout editprofile = getView.findViewById(R.id.lleditprofile);
|
||||
LinearLayout logout = getView.findViewById(R.id.lllogout);
|
||||
LinearLayout llpassword = getView.findViewById(R.id.llpassword);
|
||||
LinearLayout llkendaraan = getView.findViewById(R.id.llkendaraan);
|
||||
rlprogress = getView.findViewById(R.id.rlprogress);
|
||||
TextView rate = getView.findViewById(R.id.rate);
|
||||
sp = new SettingPreference(context);
|
||||
|
||||
User driver = BaseApp.getInstance(context).getLoginUser();
|
||||
String format = String.format(Locale.US, "%.1f", Float.valueOf(driver.getRating()));
|
||||
rate.setText(format);
|
||||
|
||||
llpassword.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, ChangepassActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
}
|
||||
});
|
||||
|
||||
llkendaraan.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, EditKendaraanActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
}
|
||||
});
|
||||
|
||||
privacy.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, PrivacyActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
aboutus.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
aboutus();
|
||||
}
|
||||
});
|
||||
|
||||
shareapp.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent shareIntent = new Intent(Intent.ACTION_SEND);
|
||||
shareIntent.setType("text/plain");
|
||||
shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name));
|
||||
String shareMessage = "Download NGOJOL Driver - Daftar Mitra Driver Sekarang! ";
|
||||
shareMessage = shareMessage + "https://play.google.com/store/apps/details?id=" + requireActivity().getPackageName() + "\n\n";
|
||||
shareIntent.putExtra(Intent.EXTRA_TEXT, shareMessage);
|
||||
startActivity(Intent.createChooser(shareIntent, "choose one"));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
rateapp.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Uri uri = Uri.parse("market://details?id=" + Objects.requireNonNull(getActivity()).getPackageName());
|
||||
Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
|
||||
Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
|
||||
Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||
}
|
||||
try {
|
||||
startActivity(goToMarket);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
startActivity(new Intent(Intent.ACTION_VIEW,
|
||||
Uri.parse("http://play.google.com/store/apps/details?id=" + getActivity().getPackageName())));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
editprofile.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(context, EditProfileActivity.class);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(i);
|
||||
}
|
||||
});
|
||||
|
||||
logout.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
clickDone();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return getView;
|
||||
}
|
||||
|
||||
private void clickDone() {
|
||||
new AlertDialog.Builder(requireActivity(), R.style.DialogStyle)
|
||||
.setIcon(R.mipmap.ic_launcher)
|
||||
.setTitle(getString(R.string.app_name))
|
||||
.setMessage(getString(R.string.exit))
|
||||
.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
logout();
|
||||
}
|
||||
})
|
||||
.setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
private void aboutus() {
|
||||
final Dialog dialog = new Dialog(context);
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // before
|
||||
dialog.setContentView(R.layout.dialog_aboutus);
|
||||
dialog.setCancelable(true);
|
||||
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
|
||||
lp.copyFrom(Objects.requireNonNull(dialog.getWindow()).getAttributes());
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
||||
|
||||
final ImageView close = dialog.findViewById(R.id.bt_close);
|
||||
final LinearLayout email = dialog.findViewById(R.id.email);
|
||||
final LinearLayout phone = dialog.findViewById(R.id.phone);
|
||||
final LinearLayout website = dialog.findViewById(R.id.website);
|
||||
final WebView about = dialog.findViewById(R.id.aboutus);
|
||||
|
||||
String mimeType = "text/html";
|
||||
String encoding = "utf-8";
|
||||
String htmlText = sp.getSetting()[5];
|
||||
String text = "<html dir=" + "><head>"
|
||||
+ "<style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/Montserrat_Regular.ttf\")}body{font-family: MyFont;color: #000000;text-align:justify;line-height:1.2}"
|
||||
+ "</style></head>"
|
||||
+ "<body>"
|
||||
+ htmlText
|
||||
+ "</body></html>";
|
||||
|
||||
about.loadDataWithBaseURL(null, text, mimeType, encoding, null);
|
||||
|
||||
phone.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
final int REQUEST_PHONE_CALL = 1;
|
||||
Intent callIntent = new Intent(Intent.ACTION_CALL);
|
||||
callIntent.setData(Uri.parse("tel:" + (sp.getSetting()[7])));
|
||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);
|
||||
} else {
|
||||
startActivity(callIntent);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
email.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
String[] TO = {(sp.getSetting()[6])};
|
||||
Intent emailIntent = new Intent(Intent.ACTION_SEND);
|
||||
emailIntent.setType("text/plain");
|
||||
|
||||
emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
|
||||
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "halo");
|
||||
emailIntent.putExtra(Intent.EXTRA_TEXT, "email" + "\n");
|
||||
try {
|
||||
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
|
||||
} catch (android.content.ActivityNotFoundException ex) {
|
||||
Toast.makeText(getActivity(),
|
||||
"There is no email client installed.", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
website.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
String url = sp.getSetting()[8];
|
||||
Intent i = new Intent(Intent.ACTION_VIEW);
|
||||
i.setData(Uri.parse(url));
|
||||
startActivity(i);
|
||||
}
|
||||
});
|
||||
|
||||
close.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
dialog.show();
|
||||
dialog.getWindow().setAttributes(lp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
User loginUser = BaseApp.getInstance(context).getLoginUser();
|
||||
nama.setText(loginUser.getFullnama());
|
||||
iduser.setText(loginUser.getId());
|
||||
email.setText(loginUser.getEmail());
|
||||
|
||||
PicassoTrustAll.getInstance(context)
|
||||
.load(Constants.IMAGESDRIVER + loginUser.getFotodriver())
|
||||
.placeholder(R.drawable.image_placeholder)
|
||||
.resize(250, 250)
|
||||
.into(foto);
|
||||
|
||||
}
|
||||
|
||||
private void logout() {
|
||||
rlprogress.setVisibility(View.VISIBLE);
|
||||
User driver = BaseApp.getInstance(context).getLoginUser();
|
||||
GetHomeRequestJson request = new GetHomeRequestJson();
|
||||
request.setId(driver.getId());
|
||||
|
||||
DriverService service = ServiceGenerator.createService(DriverService.class, driver.getEmail(), driver.getPassword());
|
||||
service.logout(request).enqueue(new Callback<GetHomeResponseJson>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<GetHomeResponseJson> call, @NonNull Response<GetHomeResponseJson> response) {
|
||||
if (response.isSuccessful()) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
if (Objects.requireNonNull(response.body()).getMessage().equalsIgnoreCase("success")) {
|
||||
removeNotif();
|
||||
Realm realm = BaseApp.getInstance(context).getRealmInstance();
|
||||
realm.beginTransaction();
|
||||
realm.delete(User.class);
|
||||
realm.commitTransaction();
|
||||
BaseApp.getInstance(context).setLoginUser(null);
|
||||
startActivity(new Intent(getContext(), IntroActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||
Objects.requireNonNull(getActivity()).finish();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<GetHomeResponseJson> call, @NonNull Throwable t) {
|
||||
rlprogress.setVisibility(View.GONE);
|
||||
t.printStackTrace();
|
||||
Toast.makeText(context, "error connection!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void removeNotif() {
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
|
||||
Objects.requireNonNull(notificationManager).cancel(0);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package id.ontime.driver.gmap;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Direction implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4198690398884769235L;
|
||||
|
||||
public String durationText;
|
||||
public String html_instructions;
|
||||
public String distanceText;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,332 @@
|
||||
package id.ontime.driver.gmap;
|
||||
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
|
||||
import id.ontime.driver.activity.MainActivity;
|
||||
import id.ontime.driver.utils.Log;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
public class GMapDirection {
|
||||
public final static String MODE_DRIVING = "driving";
|
||||
public final static String MODE_WALKING = "walking";
|
||||
public GMapDirection() {
|
||||
}
|
||||
|
||||
|
||||
public String getUrl(LatLng start, LatLng end, String mode, boolean isAlternative) {
|
||||
|
||||
String url = "https://maps.googleapis.com/maps/api/directions/json?"
|
||||
+ "origin=" + start.latitude + "," + start.longitude
|
||||
+ "&destination=" + end.latitude + "," + end.longitude
|
||||
+ "&sensor=false&units=metric&mode="+mode
|
||||
+ "&key="+ MainActivity.apikey;
|
||||
|
||||
if (isAlternative)
|
||||
url += "&alternatives=true";
|
||||
|
||||
Log.e("getUrl", url);
|
||||
return url;
|
||||
}
|
||||
|
||||
public String getUrlVia(String mode, boolean isAlternative, LatLng start, LatLng... end) {
|
||||
String via = "&waypoints=";
|
||||
if(end.length > 1){
|
||||
for(LatLng end_latLng:end){
|
||||
via += "via:"+end_latLng.latitude+"%2C"+end_latLng.longitude+"%7C";
|
||||
}
|
||||
}else {
|
||||
via = "";
|
||||
}
|
||||
|
||||
|
||||
String url = "https://maps.googleapis.com/maps/api/directions/json?"
|
||||
+ "origin=" + start.latitude + "," + start.longitude
|
||||
+ "&destination=" + end[end.length-1].latitude + "," + end[end.length-1].longitude
|
||||
+ via
|
||||
+ "&sensor=false&units=metric&mode="+mode
|
||||
+ "&key="+ MainActivity.apikey;
|
||||
|
||||
if (isAlternative)
|
||||
url += "&alternatives=true";
|
||||
|
||||
Log.e("getUrl", url);
|
||||
return url;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public Document getDocument(LatLng start, LatLng end, String mode) {
|
||||
|
||||
String url = "https://maps.googleapis.com/maps/api/directions/json?"
|
||||
+ "origin=" + start.latitude + "," + start.longitude
|
||||
+ "&destination=" + end.latitude + "," + end.longitude
|
||||
+ "&sensor=false&units=metric&mode=driving"
|
||||
+ "&key="+ MainActivity.apikey;
|
||||
|
||||
// String url = "http://maps.googleapis.com/maps/api/directions/xml?"
|
||||
// + "origin=" + start.latitude + "," + start.longitude
|
||||
// + "&destination=" + end.latitude + "," + end.longitude
|
||||
// + "&sensor=false&units=metric&mode=driving"+"alternatives=true";
|
||||
|
||||
url = url.replace(" ", "+");
|
||||
|
||||
Log.e("URL", url);
|
||||
|
||||
try {
|
||||
URL ur = new URL(url);
|
||||
URLConnection connection = ur.openConnection();
|
||||
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
Document doc = builder.parse(connection.getInputStream());
|
||||
|
||||
return doc;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Document getDocument(String origin, String destination, String mode) {
|
||||
String url = "http://maps.googleapis.com/maps/api/directions/json?"
|
||||
+ "origin=" + origin + "&destination=" + destination
|
||||
+ "&sensor=false&units=metric&mode=driving"
|
||||
+ "&key="+ MainActivity.apikey;
|
||||
|
||||
url = url.replace(" ", "+");
|
||||
Log.e("Query URL", url);
|
||||
|
||||
try {
|
||||
URL ur = new URL(url);
|
||||
URLConnection connection = ur.openConnection();
|
||||
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
Document doc = builder.parse(connection.getInputStream());
|
||||
return doc;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getDurationText(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("duration");
|
||||
Node node1 = nl1.item(0);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "text"));
|
||||
Log.i("DurationText", node2.getTextContent());
|
||||
return node2.getTextContent();
|
||||
}
|
||||
|
||||
public int getDurationValue(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("duration");
|
||||
Node node1 = nl1.item(0);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "value"));
|
||||
Log.i("DurationValue", node2.getTextContent());
|
||||
return Integer.parseInt(node2.getTextContent());
|
||||
}
|
||||
|
||||
public String getDistanceText(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("distance");
|
||||
Node node1 = nl1.item(0);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "text"));
|
||||
Log.i("DistanceText", node2.getTextContent());
|
||||
return node2.getTextContent();
|
||||
}
|
||||
|
||||
public int getDistanceValue(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("distance");
|
||||
Node node1 = nl1.item(0);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "value"));
|
||||
Log.i("DistanceValue", node2.getTextContent());
|
||||
return Integer.parseInt(node2.getTextContent());
|
||||
}
|
||||
|
||||
public List<Float> getDistanceValueInMeters(Document doc) {
|
||||
List<Float> list = new ArrayList<Float>();
|
||||
|
||||
NodeList nl1 = doc.getElementsByTagName("distance");
|
||||
|
||||
for (int x = 0; x < nl1.getLength(); x++) {
|
||||
Node node1 = nl1.item(x);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "value"));
|
||||
|
||||
Log.i("DistanceValue", node2.getTextContent());
|
||||
|
||||
float val = Integer.parseInt(node2.getTextContent());
|
||||
|
||||
list.add(val);
|
||||
}
|
||||
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public String getStartAddress(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("start_address");
|
||||
Node node1 = nl1.item(0);
|
||||
Log.i("StartAddress", node1.getTextContent());
|
||||
return node1.getTextContent();
|
||||
}
|
||||
|
||||
public String getEndAddress(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("end_address");
|
||||
Node node1 = nl1.item(0);
|
||||
Log.i("StartAddress", node1.getTextContent());
|
||||
return node1.getTextContent();
|
||||
}
|
||||
|
||||
public String getCopyRights(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("copyrights");
|
||||
Node node1 = nl1.item(0);
|
||||
Log.i("CopyRights", node1.getTextContent());
|
||||
return node1.getTextContent();
|
||||
}
|
||||
|
||||
|
||||
public LatLng getStartLocation(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("start_location");
|
||||
Node node1 = nl1.item(0);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "lat"));
|
||||
Node node21 = nl2.item(getNodeIndex(nl2, "lng"));
|
||||
|
||||
Log.i("DistanceValue", node2.getTextContent());
|
||||
return new LatLng(Float.parseFloat(node2.getTextContent()), Float.parseFloat(node21.getTextContent()));
|
||||
}
|
||||
|
||||
public LatLng getEndLocation(Document doc) {
|
||||
NodeList nl1 = doc.getElementsByTagName("end_location");
|
||||
Node node1 = nl1.item(0);
|
||||
NodeList nl2 = node1.getChildNodes();
|
||||
Node node2 = nl2.item(getNodeIndex(nl2, "lat"));
|
||||
Node node21 = nl2.item(getNodeIndex(nl2, "lng"));
|
||||
|
||||
Log.i("DistanceValue", node2.getTextContent());
|
||||
return new LatLng(Float.parseFloat(node2.getTextContent()), Float.parseFloat(node21.getTextContent()));
|
||||
}
|
||||
|
||||
public ArrayList<LatLng> getDirection(Document doc) {
|
||||
NodeList nl1, nl2, nl3;
|
||||
ArrayList<LatLng> listGeopoints = new ArrayList<LatLng>();
|
||||
nl1 = doc.getElementsByTagName("step");
|
||||
if (nl1.getLength() > 0) {
|
||||
for (int i = 0; i < nl1.getLength(); i++) {
|
||||
Node node1 = nl1.item(i);
|
||||
nl2 = node1.getChildNodes();
|
||||
|
||||
Node locationNode = nl2.item(getNodeIndex(nl2, "start_location"));
|
||||
nl3 = locationNode.getChildNodes();
|
||||
Node latNode = nl3.item(getNodeIndex(nl3, "lat"));
|
||||
double lat = Double.parseDouble(latNode.getTextContent());
|
||||
Node lngNode = nl3.item(getNodeIndex(nl3, "lng"));
|
||||
double lng = Double.parseDouble(lngNode.getTextContent());
|
||||
listGeopoints.add(new LatLng(lat, lng));
|
||||
|
||||
locationNode = nl2.item(getNodeIndex(nl2, "polyline"));
|
||||
nl3 = locationNode.getChildNodes();
|
||||
latNode = nl3.item(getNodeIndex(nl3, "points"));
|
||||
ArrayList<LatLng> arr = decodePoly(latNode.getTextContent());
|
||||
for (int j = 0; j < arr.size(); j++) {
|
||||
listGeopoints.add(new LatLng(arr.get(j).latitude, arr.get(j).longitude));
|
||||
}
|
||||
|
||||
locationNode = nl2.item(getNodeIndex(nl2, "end_location"));
|
||||
nl3 = locationNode.getChildNodes();
|
||||
latNode = nl3.item(getNodeIndex(nl3, "lat"));
|
||||
lat = Double.parseDouble(latNode.getTextContent());
|
||||
lngNode = nl3.item(getNodeIndex(nl3, "lng"));
|
||||
lng = Double.parseDouble(lngNode.getTextContent());
|
||||
listGeopoints.add(new LatLng(lat, lng));
|
||||
}
|
||||
}
|
||||
|
||||
return listGeopoints;
|
||||
}
|
||||
|
||||
public ArrayList<Direction> getDirections(Document doc) {
|
||||
NodeList nl1, nl2, nl3;
|
||||
ArrayList<Direction> listDirections = new ArrayList<Direction>();
|
||||
nl1 = doc.getElementsByTagName("step");
|
||||
if (nl1.getLength() > 0) {
|
||||
for (int i = 0; i < nl1.getLength(); i++) {
|
||||
|
||||
Direction d = new Direction();
|
||||
|
||||
Node node1 = nl1.item(i);
|
||||
nl2 = node1.getChildNodes();
|
||||
|
||||
Node locationNode = nl2.item(getNodeIndex(nl2, "duration"));
|
||||
nl3 = locationNode.getChildNodes();
|
||||
Node latNode = nl3.item(getNodeIndex(nl3, "text"));
|
||||
d.durationText = latNode.getTextContent();
|
||||
|
||||
|
||||
locationNode = nl2.item(getNodeIndex(nl2, "html_instructions"));
|
||||
d.html_instructions = locationNode.getTextContent();
|
||||
|
||||
locationNode = nl2.item(getNodeIndex(nl2, "distance"));
|
||||
nl3 = locationNode.getChildNodes();
|
||||
latNode = nl3.item(getNodeIndex(nl3, "text"));
|
||||
d.distanceText = latNode.getTextContent();
|
||||
|
||||
listDirections.add(d);
|
||||
}
|
||||
}
|
||||
|
||||
return listDirections;
|
||||
}
|
||||
|
||||
private int getNodeIndex(NodeList nl, String nodename) {
|
||||
for (int i = 0; i < nl.getLength(); i++) {
|
||||
if (nl.item(i).getNodeName().equals(nodename))
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private ArrayList<LatLng> decodePoly(String encoded) {
|
||||
ArrayList<LatLng> poly = new ArrayList<LatLng>();
|
||||
int index = 0, len = encoded.length();
|
||||
int lat = 0, lng = 0;
|
||||
while (index < len) {
|
||||
int b, shift = 0, result = 0;
|
||||
do {
|
||||
b = encoded.charAt(index++) - 63;
|
||||
result |= (b & 0x1f) << shift;
|
||||
shift += 5;
|
||||
} while (b >= 0x20);
|
||||
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
||||
lat += dlat;
|
||||
shift = 0;
|
||||
result = 0;
|
||||
do {
|
||||
b = encoded.charAt(index++) - 63;
|
||||
result |= (b & 0x1f) << shift;
|
||||
shift += 5;
|
||||
} while (b >= 0x20);
|
||||
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
||||
lng += dlng;
|
||||
|
||||
LatLng position = new LatLng((double) lat / 1E5, (double) lng / 1E5);
|
||||
poly.add(position);
|
||||
}
|
||||
return poly;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
|
||||
public class Bound {
|
||||
private LatLng northEast;
|
||||
private LatLng southWest;
|
||||
|
||||
public LatLng getNorthEast() {
|
||||
return northEast;
|
||||
}
|
||||
|
||||
public void setNorthEast(LatLng northEast) {
|
||||
this.northEast = northEast;
|
||||
}
|
||||
|
||||
public LatLng getSouthWest() {
|
||||
return southWest;
|
||||
}
|
||||
|
||||
public void setSouthWest(LatLng southWest) {
|
||||
this.southWest = southWest;
|
||||
}
|
||||
}
|
||||
+152
@@ -0,0 +1,152 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Directions {
|
||||
|
||||
Context context;
|
||||
private String ROUTES = "routes";
|
||||
private String SUMMARY = "summary";
|
||||
private String LEGS = "legs";
|
||||
private String DISTANCE = "distance";
|
||||
private String TEXT = "text";
|
||||
|
||||
private String STEPS = "steps";
|
||||
private String DURATION = "duration";
|
||||
private String END_LOCATION = "end_location";
|
||||
private String LATITUDE = "lat";
|
||||
private String HTML_INSTRUCTION = "html_instructions";
|
||||
private String OVERVIEW_POLYLINE = "overview_polyline";
|
||||
private String POLYLINE = "polyline";
|
||||
private String POINTS = "points";
|
||||
|
||||
private String START_LOCATION = "start_location";
|
||||
private String LONGITUDE = "lng";
|
||||
|
||||
private String VALUE = "value";
|
||||
|
||||
public Directions(Context context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
|
||||
public String convertStreamToString(final InputStream input) throws Exception {
|
||||
try {
|
||||
final BufferedReader reader = new BufferedReader(new InputStreamReader(input));
|
||||
final StringBuffer sBuf = new StringBuffer();
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
sBuf.append(line);
|
||||
}
|
||||
return sBuf.toString();
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
} finally {
|
||||
try {
|
||||
input.close();
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<Route> parse(String routesJSONString) throws Exception {
|
||||
try {
|
||||
List<Route> routeList = new ArrayList<Route>();
|
||||
|
||||
final JSONObject jSONObject = new JSONObject(routesJSONString);
|
||||
JSONArray routeJSONArray = jSONObject.getJSONArray(ROUTES);
|
||||
Route route;
|
||||
JSONObject routesJSONObject;
|
||||
for (int m = 0; m < routeJSONArray.length(); m++) {
|
||||
route = new Route(context);
|
||||
routesJSONObject = routeJSONArray.getJSONObject(m);
|
||||
JSONArray legsJSONArray;
|
||||
route.setSummary(routesJSONObject.getString(SUMMARY));
|
||||
route.setOverviewPolyLine(decodePolyLines(routesJSONObject.getJSONObject(OVERVIEW_POLYLINE).getString(POINTS)));
|
||||
legsJSONArray = routesJSONObject.getJSONArray(LEGS);
|
||||
JSONObject legJSONObject;
|
||||
Leg leg;
|
||||
JSONArray stepsJSONArray;
|
||||
for (int b = 0; b < legsJSONArray.length(); b++) {
|
||||
leg = new Leg();
|
||||
legJSONObject = legsJSONArray.getJSONObject(b);
|
||||
leg.setDistance(new Distance(legJSONObject.optJSONObject(DISTANCE).optString(TEXT), legJSONObject.optJSONObject(DISTANCE).optLong(VALUE)));
|
||||
leg.setDuration(new Duration(legJSONObject.optJSONObject(DURATION).optString(TEXT), legJSONObject.optJSONObject(DURATION).optLong(VALUE)));
|
||||
stepsJSONArray = legJSONObject.getJSONArray(STEPS);
|
||||
JSONObject stepJSONObject, stepDurationJSONObject, legPolyLineJSONObject, stepStartLocationJSONObject, stepEndLocationJSONObject;
|
||||
Step step;
|
||||
String encodedString;
|
||||
LatLng stepStartLocationLatLng, stepEndLocationLatLng;
|
||||
for (int i = 0; i < stepsJSONArray.length(); i++) {
|
||||
stepJSONObject = stepsJSONArray.getJSONObject(i);
|
||||
step = new Step();
|
||||
JSONObject stepDistanceJSONObject = stepJSONObject.getJSONObject(DISTANCE);
|
||||
step.setDistance(new Distance(stepDistanceJSONObject.getString(TEXT), stepDistanceJSONObject.getLong(VALUE)));
|
||||
stepDurationJSONObject = stepJSONObject.getJSONObject(DURATION);
|
||||
step.setDuration(new Duration(stepDurationJSONObject.getString(TEXT), stepDurationJSONObject.getLong(VALUE)));
|
||||
stepEndLocationJSONObject = stepJSONObject.getJSONObject(END_LOCATION);
|
||||
stepEndLocationLatLng = new LatLng(stepEndLocationJSONObject.getDouble(LATITUDE), stepEndLocationJSONObject.getDouble(LONGITUDE));
|
||||
step.setEndLocation(stepEndLocationLatLng);
|
||||
step.setHtmlInstructions(stepJSONObject.getString(HTML_INSTRUCTION));
|
||||
legPolyLineJSONObject = stepJSONObject.getJSONObject(POLYLINE);
|
||||
encodedString = legPolyLineJSONObject.getString(POINTS);
|
||||
step.setPoints(decodePolyLines(encodedString));
|
||||
|
||||
stepStartLocationJSONObject = stepJSONObject.getJSONObject(START_LOCATION);
|
||||
stepStartLocationLatLng = new LatLng(stepStartLocationJSONObject.getDouble(LATITUDE), stepStartLocationJSONObject.getDouble(LONGITUDE));
|
||||
step.setStartLocation(stepStartLocationLatLng);
|
||||
leg.addStep(step);
|
||||
}
|
||||
route.addLeg(leg);
|
||||
}
|
||||
routeList.add(route);
|
||||
}
|
||||
return routeList;
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private ArrayList<LatLng> decodePolyLines(String encoded) {
|
||||
ArrayList<LatLng> poly = new ArrayList<LatLng>();
|
||||
int index = 0, len = encoded.length();
|
||||
int lat = 0, lng = 0;
|
||||
while (index < len) {
|
||||
int b, shift = 0, result = 0;
|
||||
do {
|
||||
b = encoded.charAt(index++) - 63;
|
||||
result |= (b & 0x1f) << shift;
|
||||
shift += 5;
|
||||
} while (b >= 0x20);
|
||||
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
||||
lat += dlat;
|
||||
shift = 0;
|
||||
result = 0;
|
||||
do {
|
||||
b = encoded.charAt(index++) - 63;
|
||||
result |= (b & 0x1f) << shift;
|
||||
shift += 5;
|
||||
} while (b >= 0x20);
|
||||
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
||||
lng += dlng;
|
||||
|
||||
LatLng position = new LatLng((double) lat / 1E5, (double) lng / 1E5);
|
||||
poly.add(position);
|
||||
}
|
||||
return poly;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
public class Distance {
|
||||
private String text;
|
||||
private long value;
|
||||
|
||||
public Distance(String text, long value) {
|
||||
this.text = text;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public long getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(long value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
public class Duration {
|
||||
private String text;
|
||||
private long value;
|
||||
public Duration(String text, long value) {
|
||||
this.text = text;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public long getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(long value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Leg {
|
||||
private Distance distance;
|
||||
private Duration duration;
|
||||
private String endAddress;
|
||||
private LatLng endLocation;
|
||||
private String startAddress;
|
||||
private LatLng startLocation;
|
||||
private List<Step> steps;
|
||||
|
||||
public Leg() {
|
||||
steps = new ArrayList<Step>();
|
||||
}
|
||||
|
||||
public Distance getDistance() {
|
||||
return distance;
|
||||
}
|
||||
|
||||
public void setDistance(Distance distance) {
|
||||
this.distance = distance;
|
||||
}
|
||||
|
||||
public Duration getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(Duration duration) {
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public String getEndAddress() {
|
||||
return endAddress;
|
||||
}
|
||||
|
||||
public void setEndAddress(String endAddress) {
|
||||
this.endAddress = endAddress;
|
||||
}
|
||||
|
||||
public LatLng getEndLocation() {
|
||||
return endLocation;
|
||||
}
|
||||
|
||||
public void setEndLocation(LatLng endLocation) {
|
||||
this.endLocation = endLocation;
|
||||
}
|
||||
|
||||
public String getStartAddress() {
|
||||
return startAddress;
|
||||
}
|
||||
|
||||
public void setStartAddress(String startAddress) {
|
||||
this.startAddress = startAddress;
|
||||
}
|
||||
|
||||
public LatLng getStartLocation() {
|
||||
return startLocation;
|
||||
}
|
||||
|
||||
public void setStartLocation(LatLng startLocation) {
|
||||
this.startLocation = startLocation;
|
||||
}
|
||||
|
||||
public List<Step> getSteps() {
|
||||
return steps;
|
||||
}
|
||||
|
||||
public void setSteps(List<Step> steps) {
|
||||
this.steps = steps;
|
||||
}
|
||||
|
||||
public void addStep(Step step) {
|
||||
this.steps.add(step);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Route implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Bound bounds;
|
||||
private String copyrights;
|
||||
private List<Leg> legs;
|
||||
private List<LatLng> overviewPolyLine;
|
||||
private String summary;
|
||||
|
||||
public Route(Context context) {
|
||||
legs = new ArrayList<Leg>();
|
||||
}
|
||||
|
||||
public static long getSerialversionuid() {
|
||||
return serialVersionUID;
|
||||
}
|
||||
|
||||
public Bound getBounds() {
|
||||
return bounds;
|
||||
}
|
||||
|
||||
public void setBounds(Bound bounds) {
|
||||
this.bounds = bounds;
|
||||
}
|
||||
|
||||
public String getCopyrights() {
|
||||
return copyrights;
|
||||
}
|
||||
|
||||
public void setCopyrights(String copyrights) {
|
||||
this.copyrights = copyrights;
|
||||
}
|
||||
|
||||
public List<Leg> getLegs() {
|
||||
return legs;
|
||||
}
|
||||
|
||||
public void setLegs(List<Leg> legs) {
|
||||
this.legs = legs;
|
||||
}
|
||||
|
||||
public void addLeg(Leg leg) {
|
||||
this.legs.add(leg);
|
||||
}
|
||||
|
||||
public List<LatLng> getOverviewPolyLine() {
|
||||
return overviewPolyLine;
|
||||
}
|
||||
|
||||
public void setOverviewPolyLine(List<LatLng> overviewPolyLine) {
|
||||
this.overviewPolyLine = overviewPolyLine;
|
||||
}
|
||||
|
||||
public String getSummary() {
|
||||
return summary;
|
||||
}
|
||||
|
||||
public void setSummary(String summary) {
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package id.ontime.driver.gmap.directions;
|
||||
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Step {
|
||||
private Distance distance;
|
||||
private Duration duration;
|
||||
private LatLng endLocation;
|
||||
private LatLng startLocation;
|
||||
private String htmlInstructions;
|
||||
private String travelMode;
|
||||
private List<LatLng> points;
|
||||
|
||||
public List<LatLng> getPoints() {
|
||||
return points;
|
||||
}
|
||||
|
||||
public void setPoints(List<LatLng> points) {
|
||||
this.points = points;
|
||||
}
|
||||
|
||||
public Distance getDistance() {
|
||||
return distance;
|
||||
}
|
||||
|
||||
public void setDistance(Distance distance) {
|
||||
this.distance = distance;
|
||||
}
|
||||
|
||||
public Duration getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(Duration duration) {
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public LatLng getEndLocation() {
|
||||
return endLocation;
|
||||
}
|
||||
|
||||
public void setEndLocation(LatLng endLocation) {
|
||||
this.endLocation = endLocation;
|
||||
}
|
||||
|
||||
public LatLng getStartLocation() {
|
||||
return startLocation;
|
||||
}
|
||||
|
||||
public void setStartLocation(LatLng startLocation) {
|
||||
this.startLocation = startLocation;
|
||||
}
|
||||
|
||||
public String getHtmlInstructions() {
|
||||
return htmlInstructions;
|
||||
}
|
||||
|
||||
public void setHtmlInstructions(String htmlInstructions) {
|
||||
this.htmlInstructions = htmlInstructions;
|
||||
}
|
||||
|
||||
public String getTravelMode() {
|
||||
return travelMode;
|
||||
}
|
||||
|
||||
public void setTravelMode(String travelMode) {
|
||||
this.travelMode = travelMode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.models.BankModel;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import static android.content.Context.CLIPBOARD_SERVICE;
|
||||
|
||||
|
||||
public class BankItem extends RecyclerView.Adapter<BankItem.ItemRowHolder> {
|
||||
|
||||
private List<BankModel> dataList;
|
||||
private Context mContext;
|
||||
private int rowLayout;
|
||||
|
||||
public BankItem(Context context, List<BankModel> dataList, int rowLayout) {
|
||||
this.dataList = dataList;
|
||||
this.mContext = context;
|
||||
this.rowLayout = rowLayout;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ItemRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
|
||||
return new ItemRowHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final ItemRowHolder holder, final int position) {
|
||||
final BankModel singleItem = dataList.get(position);
|
||||
PicassoTrustAll.getInstance(mContext)
|
||||
.load(Constants.IMAGESBANK + singleItem.getImage_bank())
|
||||
.resize(250, 250)
|
||||
.into(holder.images);
|
||||
|
||||
holder.namabank.setText(singleItem.getNama_bank());
|
||||
holder.namapemilik.setText(singleItem.getNama_pemilik());
|
||||
holder.rekening.setText(singleItem.getRekening_bank());
|
||||
|
||||
|
||||
if (position % 2 == 1) {
|
||||
holder.background.setBackgroundColor(mContext.getResources().getColor(R.color.backgroundgray));
|
||||
// holder.imageView.setBackgroundColor(Color.parseColor("#FFFFFF"));
|
||||
} else {
|
||||
holder.background.setBackgroundColor(mContext.getResources().getColor(R.color.white));
|
||||
// holder.imageView.setBackgroundColor(Color.parseColor("#FFFAF8FD"));
|
||||
}
|
||||
|
||||
holder.rekening.setOnClickListener(new View.OnClickListener() {
|
||||
@SuppressLint("ObsoleteSdkInt")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Toast.makeText(mContext, "Disalin!", Toast.LENGTH_SHORT).show();
|
||||
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
|
||||
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) mContext.getSystemService(CLIPBOARD_SERVICE);
|
||||
Objects.requireNonNull(clipboard).setText(singleItem.getRekening_bank());
|
||||
} else {
|
||||
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) mContext.getSystemService(CLIPBOARD_SERVICE);
|
||||
android.content.ClipData clip = android.content.ClipData.newPlainText("Disalin!", singleItem.getRekening_bank());
|
||||
Objects.requireNonNull(clipboard).setPrimaryClip(clip);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return (null != dataList ? dataList.size() : 0);
|
||||
}
|
||||
|
||||
static class ItemRowHolder extends RecyclerView.ViewHolder {
|
||||
TextView namabank, namapemilik, rekening;
|
||||
ImageView images;
|
||||
RelativeLayout background;
|
||||
|
||||
ItemRowHolder(View itemView) {
|
||||
super(itemView);
|
||||
background = itemView.findViewById(R.id.rootLayout);
|
||||
namabank = itemView.findViewById(R.id.namabank);
|
||||
namapemilik = itemView.findViewById(R.id.namapemilik);
|
||||
rekening = itemView.findViewById(R.id.norekening);
|
||||
images = itemView.findViewById(R.id.images);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.models.BankModels;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
|
||||
public class BanklistItem extends RecyclerView.Adapter<BanklistItem.ItemRowHolder> {
|
||||
|
||||
private ArrayList<BankModels> dataList;
|
||||
private Context mContext;
|
||||
private int rowLayout;
|
||||
private OnItemClickListener listener;
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(BankModels item);
|
||||
}
|
||||
|
||||
public BanklistItem(Context context, ArrayList<BankModels> dataList, int rowLayout, OnItemClickListener listener) {
|
||||
this.dataList = dataList;
|
||||
this.mContext = context;
|
||||
this.rowLayout = rowLayout;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ItemRowHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
|
||||
return new ItemRowHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final ItemRowHolder holder, final int position) {
|
||||
final BankModels singleItem = dataList.get(position);
|
||||
if (singleItem.getText().equals("Unlimited")) {
|
||||
holder.text.setText(singleItem.getText());
|
||||
} else {
|
||||
Utility.currencyTXT(holder.text, singleItem.getText(), mContext);
|
||||
}
|
||||
holder.text.setTypeface(Typeface.createFromAsset(mContext.getAssets(),
|
||||
"fonts/NeoSansPro_Medium.ttf"));
|
||||
|
||||
holder.bind(singleItem, listener);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return (null != dataList ? dataList.size() : 0);
|
||||
}
|
||||
|
||||
class ItemRowHolder extends RecyclerView.ViewHolder {
|
||||
TextView text;
|
||||
LinearLayout background;
|
||||
|
||||
ItemRowHolder(View itemView) {
|
||||
super(itemView);
|
||||
background = itemView.findViewById(R.id.rootLayout);
|
||||
text = itemView.findViewById(R.id.text);
|
||||
}
|
||||
|
||||
void bind(final BankModels item, final OnItemClickListener listener) {
|
||||
|
||||
itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onItemClick(item);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.OrderDetailActivity;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.models.AllTransaksiModel;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
/**
|
||||
* Created by otacodes on 3/24/2019.
|
||||
*/
|
||||
|
||||
public class HistoryItem extends RecyclerView.Adapter<HistoryItem.ItemRowHolder> {
|
||||
|
||||
private List<AllTransaksiModel> dataList;
|
||||
private Context mContext;
|
||||
private int rowLayout;
|
||||
|
||||
|
||||
public HistoryItem(Context context, List<AllTransaksiModel> dataList, int rowLayout) {
|
||||
this.dataList = dataList;
|
||||
this.mContext = context;
|
||||
this.rowLayout = rowLayout;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ItemRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
|
||||
return new ItemRowHolder(v);
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final ItemRowHolder holder, final int position) {
|
||||
final AllTransaksiModel singleItem = dataList.get(position);
|
||||
holder.text.setText("Order " + singleItem.getFitur());
|
||||
if (singleItem.getHome().equals("4")) {
|
||||
double totalbiaya = Double.parseDouble(singleItem.getTotalbiaya());
|
||||
Utility.currencyTXT(holder.nominal, String.valueOf(singleItem.getHarga()+ totalbiaya), mContext);
|
||||
} else {
|
||||
Utility.currencyTXT(holder.nominal, String.valueOf(singleItem.getHarga()), mContext);
|
||||
}
|
||||
holder.keterangan.setText(singleItem.getStatustransaksi());
|
||||
|
||||
|
||||
SimpleDateFormat timeFormat = new SimpleDateFormat("dd MMM yyyy", Locale.US);
|
||||
String finalDate = timeFormat.format(singleItem.getWaktuOrder());
|
||||
holder.tanggal.setText(finalDate);
|
||||
|
||||
PicassoTrustAll.getInstance(mContext)
|
||||
.load(Constants.IMAGESFITUR + singleItem.getIcon())
|
||||
.into(holder.images);
|
||||
|
||||
if (singleItem.status == 4 && singleItem.getRate().isEmpty()) {
|
||||
holder.keterangan.setTextColor(mContext.getResources().getColor(R.color.black));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.colorgradient));
|
||||
holder.background.setBackground(mContext.getResources().getDrawable(R.drawable.btn_rect));
|
||||
|
||||
} else if (singleItem.status == 5) {
|
||||
holder.keterangan.setTextColor(mContext.getResources().getColor(R.color.red));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.red));
|
||||
holder.background.setBackground(mContext.getResources().getDrawable(R.drawable.btn_rect_red));
|
||||
|
||||
} else {
|
||||
holder.keterangan.setTextColor(mContext.getResources().getColor(R.color.black));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.colorgradient));
|
||||
holder.background.setBackground(mContext.getResources().getDrawable(R.drawable.btn_rect));
|
||||
|
||||
}
|
||||
holder.itemlayout.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent i = new Intent(mContext, OrderDetailActivity.class);
|
||||
i.putExtra("id_pelanggan", singleItem.getIdPelanggan());
|
||||
i.putExtra("id_transaksi", singleItem.getIdTransaksi());
|
||||
i.putExtra("response", String.valueOf(singleItem.status));
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
mContext.startActivity(i);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return (null != dataList ? dataList.size() : 0);
|
||||
}
|
||||
|
||||
static class ItemRowHolder extends RecyclerView.ViewHolder {
|
||||
TextView text, tanggal, nominal, keterangan;
|
||||
ImageView background, images;
|
||||
RelativeLayout itemlayout;
|
||||
|
||||
ItemRowHolder(View itemView) {
|
||||
super(itemView);
|
||||
background = itemView.findViewById(R.id.background);
|
||||
images = itemView.findViewById(R.id.image);
|
||||
text = itemView.findViewById(R.id.text);
|
||||
tanggal = itemView.findViewById(R.id.texttanggal);
|
||||
nominal = itemView.findViewById(R.id.price);
|
||||
keterangan = itemView.findViewById(R.id.textket);
|
||||
itemlayout = itemView.findViewById(R.id.mainlayout);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,512 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.media.MediaMetadataRetriever;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.activity.ChatActivity;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.models.ChatModels;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
|
||||
|
||||
public class ItemChat extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
private List<ChatModels> mDataSet;
|
||||
private String myID;
|
||||
private static final int mychat = 1;
|
||||
private static final int friendchat = 2;
|
||||
private static final int mychatimage = 3;
|
||||
private static final int otherchatimage = 4;
|
||||
private static final int alert_message = 7;
|
||||
|
||||
private static final int my_audio_message = 8;
|
||||
private static final int other_audio_message = 9;
|
||||
|
||||
|
||||
private Context context;
|
||||
private Integer today_day;
|
||||
|
||||
private OnItemClickListener listener;
|
||||
private OnLongClickListener long_listener;
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(ChatModels item, View view);
|
||||
}
|
||||
|
||||
public interface OnLongClickListener {
|
||||
void onLongclick(ChatModels item, View view);
|
||||
}
|
||||
|
||||
public ItemChat(List<ChatModels> dataSet, String id, Context context, OnItemClickListener listener, OnLongClickListener long_listener) {
|
||||
mDataSet = dataSet;
|
||||
this.myID = id;
|
||||
this.context = context;
|
||||
this.listener = listener;
|
||||
this.long_listener = long_listener;
|
||||
Calendar cal = Calendar.getInstance();
|
||||
today_day = cal.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewtype) {
|
||||
View v;
|
||||
switch (viewtype) {
|
||||
case mychat:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat_my, viewGroup, false);
|
||||
return new Chatviewholder(v);
|
||||
case friendchat:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat_other, viewGroup, false);
|
||||
return new Chatviewholder(v);
|
||||
case mychatimage:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat_image_my, viewGroup, false);
|
||||
return new Chatimageviewholder(v);
|
||||
case otherchatimage:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat_image_other, viewGroup, false);
|
||||
return new Chatimageviewholder(v);
|
||||
|
||||
case my_audio_message:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chataudio, viewGroup, false);
|
||||
return new Chataudioviewholder(v);
|
||||
|
||||
case other_audio_message:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat_audio_other, viewGroup, false);
|
||||
return new Chataudioviewholder(v);
|
||||
case alert_message:
|
||||
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat_alert, viewGroup, false);
|
||||
return new Alertviewholder(v);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mDataSet.size();
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
ChatModels chat = mDataSet.get(position);
|
||||
|
||||
switch (chat.getType()) {
|
||||
case "text":
|
||||
Chatviewholder chatviewholder = (Chatviewholder) holder;
|
||||
// check if the message is from sender or receiver
|
||||
if (chat.getSender_id().equals(myID)) {
|
||||
if (chat.getStatus().equals("1"))
|
||||
chatviewholder.message_seen.setText("Seen at " + chat.getTime());
|
||||
else
|
||||
chatviewholder.message_seen.setText("Sent");
|
||||
|
||||
} else {
|
||||
chatviewholder.message_seen.setText("");
|
||||
}
|
||||
|
||||
if (position != 0) {
|
||||
ChatModels chat2 = mDataSet.get(position - 1);
|
||||
if (chat2.getTimestamp().substring(14, 16).equals(chat.getTimestamp().substring(14, 16))) {
|
||||
chatviewholder.datetxt.setVisibility(View.GONE);
|
||||
} else {
|
||||
chatviewholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chatviewholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
}
|
||||
chatviewholder.message.setText(chat.getText());
|
||||
} else {
|
||||
chatviewholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chatviewholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
chatviewholder.message.setText(chat.getText());
|
||||
}
|
||||
|
||||
chatviewholder.bind(chat, long_listener);
|
||||
|
||||
break;
|
||||
case "image": {
|
||||
final Chatimageviewholder chatimageholder = (Chatimageviewholder) holder;
|
||||
if (chat.getSender_id().equals(myID)) {
|
||||
if (chat.getStatus().equals("1"))
|
||||
chatimageholder.messageSeen.setText("Seen at " + chat.getTime());
|
||||
else
|
||||
chatimageholder.messageSeen.setText("Sent");
|
||||
|
||||
} else {
|
||||
chatimageholder.messageSeen.setText("");
|
||||
}
|
||||
if (chat.getPic_url().equals("none")) {
|
||||
if (ChatActivity.uploadingImageId.equals(chat.getChat_id())) {
|
||||
chatimageholder.progressBar.setVisibility(View.VISIBLE);
|
||||
chatimageholder.messageSeen.setText("");
|
||||
} else {
|
||||
chatimageholder.progressBar.setVisibility(View.GONE);
|
||||
chatimageholder.notSendMessageIcon.setVisibility(View.VISIBLE);
|
||||
chatimageholder.messageSeen.setText("Not delivered. ");
|
||||
}
|
||||
} else {
|
||||
chatimageholder.notSendMessageIcon.setVisibility(View.GONE);
|
||||
chatimageholder.progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (position != 0) {
|
||||
ChatModels chat2 = mDataSet.get(position - 1);
|
||||
if (chat2.getTimestamp().substring(14, 16).equals(chat.getTimestamp().substring(14, 16))) {
|
||||
chatimageholder.datetxt.setVisibility(View.GONE);
|
||||
} else {
|
||||
chatimageholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chatimageholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
}
|
||||
PicassoTrustAll.getInstance(context).load(chat.getPic_url()).placeholder(R.drawable.image_placeholder).resize(400, 400).centerCrop().into(chatimageholder.chatimage);
|
||||
} else {
|
||||
chatimageholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chatimageholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
PicassoTrustAll.getInstance(context).load(chat.getPic_url()).placeholder(R.drawable.image_placeholder).resize(400, 400).centerCrop().into(chatimageholder.chatimage);
|
||||
|
||||
|
||||
}
|
||||
|
||||
chatimageholder.bind(mDataSet.get(position), listener, long_listener);
|
||||
break;
|
||||
}
|
||||
case "audio":
|
||||
final Chataudioviewholder chataudioviewholder = (Chataudioviewholder) holder;
|
||||
// check if the message is from sender or receiver
|
||||
if (chat.getSender_id().equals(myID)) {
|
||||
if (chat.getStatus().equals("1"))
|
||||
chataudioviewholder.messageSeen.setText("Seen at " + chat.getTime());
|
||||
else
|
||||
chataudioviewholder.messageSeen.setText("Sent");
|
||||
|
||||
} else {
|
||||
chataudioviewholder.messageSeen.setText("");
|
||||
}
|
||||
if (chat.getPic_url().equals("none")) {
|
||||
if (ChatActivity.uploadingAudioId.equals(chat.getChat_id())) {
|
||||
chataudioviewholder.progressBar.setVisibility(View.VISIBLE);
|
||||
chataudioviewholder.messageSeen.setText("");
|
||||
} else {
|
||||
chataudioviewholder.progressBar.setVisibility(View.GONE);
|
||||
chataudioviewholder.notSendMessageIcon.setVisibility(View.VISIBLE);
|
||||
chataudioviewholder.messageSeen.setText("Not delivered. ");
|
||||
}
|
||||
} else {
|
||||
chataudioviewholder.notSendMessageIcon.setVisibility(View.GONE);
|
||||
chataudioviewholder.progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
// make the group of message by date set the gap of 1 min
|
||||
// means message send with in 1 min will show as a group
|
||||
if (position != 0) {
|
||||
ChatModels chat2 = mDataSet.get(position - 1);
|
||||
if (chat2.getTimestamp().substring(14, 16).equals(chat.getTimestamp().substring(14, 16))) {
|
||||
chataudioviewholder.datetxt.setVisibility(View.GONE);
|
||||
} else {
|
||||
chataudioviewholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chataudioviewholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
}
|
||||
} else {
|
||||
chataudioviewholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chataudioviewholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
|
||||
}
|
||||
|
||||
chataudioviewholder.seekBar.setEnabled(false);
|
||||
|
||||
File fullpath = new File(Environment.getExternalStorageDirectory() + "/ontime/" + chat.getChat_id() + ".mp3");
|
||||
if (fullpath.exists()) {
|
||||
chataudioviewholder.totalTime.setText(getfileduration(Uri.parse(fullpath.getAbsolutePath())));
|
||||
|
||||
} else {
|
||||
chataudioviewholder.totalTime.setText(null);
|
||||
}
|
||||
|
||||
|
||||
chataudioviewholder.bind(mDataSet.get(position), listener, long_listener);
|
||||
|
||||
break;
|
||||
case "gif": {
|
||||
final Chatimageviewholder chatimageholder = (Chatimageviewholder) holder;
|
||||
if (chat.getSender_id().equals(myID)) {
|
||||
if (chat.getStatus().equals("1"))
|
||||
chatimageholder.messageSeen.setText("Seen at " + chat.getTime());
|
||||
else
|
||||
chatimageholder.messageSeen.setText("Sent");
|
||||
|
||||
} else {
|
||||
chatimageholder.messageSeen.setText("");
|
||||
}
|
||||
// make the group of message by date set the gap of 1 min
|
||||
// means message send with in 1 min will show as a group
|
||||
if (position != 0) {
|
||||
ChatModels chat2 = mDataSet.get(position - 1);
|
||||
if (chat2.getTimestamp().substring(14, 16).equals(chat.getTimestamp().substring(14, 16))) {
|
||||
chatimageholder.datetxt.setVisibility(View.GONE);
|
||||
} else {
|
||||
chatimageholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chatimageholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
}
|
||||
} else {
|
||||
chatimageholder.datetxt.setVisibility(View.VISIBLE);
|
||||
chatimageholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
chatimageholder.bind(mDataSet.get(position), listener, long_listener);
|
||||
break;
|
||||
}
|
||||
case "delete":
|
||||
Alertviewholder alertviewholder = (Alertviewholder) holder;
|
||||
alertviewholder.message.setTextColor(context.getResources().getColor(R.color.gray));
|
||||
alertviewholder.message.setBackground(context.getResources().getDrawable(R.drawable.round_edittext_background));
|
||||
|
||||
alertviewholder.message.setText("This message is deleted by " + chat.getSender_name());
|
||||
|
||||
if (position != 0) {
|
||||
ChatModels chat2 = mDataSet.get(position - 1);
|
||||
if (chat2.getTimestamp().substring(11, 13).equals(chat.getTimestamp().substring(11, 13))) {
|
||||
alertviewholder.datetxt.setVisibility(View.GONE);
|
||||
} else {
|
||||
alertviewholder.datetxt.setVisibility(View.VISIBLE);
|
||||
alertviewholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
}
|
||||
|
||||
} else {
|
||||
alertviewholder.datetxt.setVisibility(View.VISIBLE);
|
||||
alertviewholder.datetxt.setText(ChangeDate(chat.getTimestamp()));
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
switch (mDataSet.get(position).getType()) {
|
||||
case "text":
|
||||
if (mDataSet.get(position).getSender_id().equals(myID)) {
|
||||
return mychat;
|
||||
}
|
||||
return friendchat;
|
||||
case "image":
|
||||
if (mDataSet.get(position).getSender_id().equals(myID)) {
|
||||
return mychatimage;
|
||||
}
|
||||
|
||||
return otherchatimage;
|
||||
|
||||
case "audio":
|
||||
if (mDataSet.get(position).getSender_id().equals(myID)) {
|
||||
return my_audio_message;
|
||||
}
|
||||
return other_audio_message;
|
||||
default:
|
||||
return alert_message;
|
||||
}
|
||||
}
|
||||
|
||||
static class Chatviewholder extends RecyclerView.ViewHolder {
|
||||
TextView message, datetxt, message_seen;
|
||||
View view;
|
||||
|
||||
Chatviewholder(View itemView) {
|
||||
super(itemView);
|
||||
view = itemView;
|
||||
this.message = view.findViewById(R.id.msgtxt);
|
||||
this.datetxt = view.findViewById(R.id.datetxt);
|
||||
message_seen = view.findViewById(R.id.messageseen);
|
||||
}
|
||||
|
||||
void bind(final ChatModels item, final OnLongClickListener long_listener) {
|
||||
message.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
long_listener.onLongclick(item, v);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// second is for the chat image
|
||||
static class Chatimageviewholder extends RecyclerView.ViewHolder {
|
||||
ImageView chatimage;
|
||||
TextView datetxt, messageSeen;
|
||||
ProgressBar progressBar;
|
||||
ImageView notSendMessageIcon;
|
||||
View getView;
|
||||
|
||||
Chatimageviewholder(View itemView) {
|
||||
super(itemView);
|
||||
getView = itemView;
|
||||
this.chatimage = getView.findViewById(R.id.chatimage);
|
||||
this.datetxt = getView.findViewById(R.id.datetxt);
|
||||
messageSeen = getView.findViewById(R.id.messageseen);
|
||||
notSendMessageIcon = getView.findViewById(R.id.notsend);
|
||||
progressBar = getView.findViewById(R.id.progress);
|
||||
}
|
||||
|
||||
void bind(final ChatModels item, final OnItemClickListener listener, final OnLongClickListener long_listener) {
|
||||
|
||||
chatimage.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onItemClick(item, v);
|
||||
}
|
||||
});
|
||||
|
||||
chatimage.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
long_listener.onLongclick(item, v);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class Chataudioviewholder extends RecyclerView.ViewHolder {
|
||||
TextView datetxt, messageSeen;
|
||||
ProgressBar progressBar;
|
||||
ImageView notSendMessageIcon;
|
||||
ImageView playBtn;
|
||||
SeekBar seekBar;
|
||||
TextView totalTime;
|
||||
LinearLayout audioBubble;
|
||||
View getView;
|
||||
|
||||
Chataudioviewholder(View itemView) {
|
||||
super(itemView);
|
||||
getView = itemView;
|
||||
audioBubble = getView.findViewById(R.id.audiobubble);
|
||||
datetxt = getView.findViewById(R.id.datetxt);
|
||||
messageSeen = getView.findViewById(R.id.messageseen);
|
||||
notSendMessageIcon = getView.findViewById(R.id.notsend);
|
||||
progressBar = getView.findViewById(R.id.progress);
|
||||
this.playBtn = getView.findViewById(R.id.playbtn);
|
||||
this.seekBar = getView.findViewById(R.id.seekbar);
|
||||
this.totalTime = getView.findViewById(R.id.totaltime);
|
||||
|
||||
}
|
||||
|
||||
void bind(final ChatModels item, final OnItemClickListener listener, final OnLongClickListener long_listener) {
|
||||
|
||||
|
||||
audioBubble.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onItemClick(item, v);
|
||||
}
|
||||
});
|
||||
|
||||
audioBubble.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
long_listener.onLongclick(item, v);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static class Alertviewholder extends RecyclerView.ViewHolder {
|
||||
TextView message, datetxt;
|
||||
View getView;
|
||||
|
||||
Alertviewholder(View itemView) {
|
||||
super(itemView);
|
||||
getView = itemView;
|
||||
this.message = getView.findViewById(R.id.message);
|
||||
this.datetxt = getView.findViewById(R.id.datetxt);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private String ChangeDate(String date) {
|
||||
long currenttime = System.currentTimeMillis();
|
||||
|
||||
long databasedate = 0;
|
||||
Date d = null;
|
||||
try {
|
||||
d = Constants.df.parse(date);
|
||||
databasedate = Objects.requireNonNull(d).getTime();
|
||||
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
long difference = currenttime - databasedate;
|
||||
if (difference < 86400000) {
|
||||
int chatday = Integer.parseInt(date.substring(0, 2));
|
||||
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
|
||||
if (today_day == chatday)
|
||||
return "Today " + sdf.format(Objects.requireNonNull(d));
|
||||
else if ((today_day - chatday) == 1)
|
||||
return "Yesterday " + sdf.format(Objects.requireNonNull(d));
|
||||
} else if (difference < 172800000) {
|
||||
int chatday = Integer.parseInt(date.substring(0, 2));
|
||||
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
|
||||
if ((today_day - chatday) == 1)
|
||||
return "Yesterday " + sdf.format(Objects.requireNonNull(d));
|
||||
}
|
||||
|
||||
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm a");
|
||||
|
||||
if (d != null)
|
||||
return sdf.format(d);
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
private String getfileduration(Uri uri) {
|
||||
try {
|
||||
|
||||
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
|
||||
mmr.setDataSource(context, uri);
|
||||
String durationStr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
|
||||
final int file_duration = Integer.parseInt(durationStr);
|
||||
|
||||
long second = (file_duration / 1000) % 60;
|
||||
long minute = (file_duration / (1000 * 60)) % 60;
|
||||
|
||||
return String.format("%02d:%02d", minute, second);
|
||||
} catch (Exception ignored) {
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.models.ItemPesananModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
/**
|
||||
* Created by ontime team on 3/24/2019.
|
||||
*/
|
||||
|
||||
public class ItemPesananItem extends RecyclerView.Adapter<ItemPesananItem.ItemRowHolder> {
|
||||
|
||||
private List<ItemPesananModel> dataList;
|
||||
private int rowLayout;
|
||||
|
||||
public ItemPesananItem(List<ItemPesananModel> dataList, int rowLayout) {
|
||||
this.dataList = dataList;
|
||||
this.rowLayout = rowLayout;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ItemRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
|
||||
return new ItemRowHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final ItemRowHolder holder, final int position) {
|
||||
final ItemPesananModel singleItem = dataList.get(position);
|
||||
holder.name.setText(singleItem.getNama_item());
|
||||
holder.qty.setText(singleItem.getJumlah_item());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return (null != dataList ? dataList.size() : 0);
|
||||
}
|
||||
|
||||
static class ItemRowHolder extends RecyclerView.ViewHolder {
|
||||
TextView name,qty;
|
||||
|
||||
ItemRowHolder(View itemView) {
|
||||
super(itemView);
|
||||
qty = itemView.findViewById(R.id.qty);
|
||||
name = itemView.findViewById(R.id.namaitem);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Filter;
|
||||
import android.widget.Filterable;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.constants.Constants;
|
||||
import id.ontime.driver.models.MessageModels;
|
||||
import id.ontime.driver.utils.PicassoTrustAll;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
|
||||
|
||||
public class MessageItem extends RecyclerView.Adapter<MessageItem.CustomViewHolder> implements Filterable {
|
||||
public Context context;
|
||||
private ArrayList<MessageModels> messageModels;
|
||||
private ArrayList<MessageModels> messageModelsFilter;
|
||||
private OnItemClickListener listener;
|
||||
|
||||
private Integer today_day;
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(MessageModels item);
|
||||
}
|
||||
|
||||
public MessageItem(Context context, ArrayList<MessageModels> user_dataList, OnItemClickListener listener) {
|
||||
this.context = context;
|
||||
this.messageModels = user_dataList;
|
||||
this.messageModelsFilter = user_dataList;
|
||||
this.listener = listener;
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
today_day = cal.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewtype) {
|
||||
@SuppressLint("InflateParams") View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_message, null);
|
||||
view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
|
||||
return new CustomViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return messageModelsFilter.size();
|
||||
}
|
||||
|
||||
static class CustomViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView username, lastMessage, dateCreated;
|
||||
ImageView userImage;
|
||||
|
||||
CustomViewHolder(View view) {
|
||||
super(view);
|
||||
userImage = itemView.findViewById(R.id.userimages);
|
||||
username = itemView.findViewById(R.id.fullname);
|
||||
lastMessage = itemView.findViewById(R.id.message);
|
||||
dateCreated = itemView.findViewById(R.id.datetxt);
|
||||
}
|
||||
|
||||
void bind(final MessageModels item, final OnItemClickListener listener) {
|
||||
|
||||
itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onItemClick(item);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final CustomViewHolder holder, final int i) {
|
||||
|
||||
final MessageModels item = messageModelsFilter.get(i);
|
||||
holder.username.setText(item.getName());
|
||||
holder.lastMessage.setText(item.getMessage());
|
||||
holder.dateCreated.setText(ChangeDate(item.getTimestamp()));
|
||||
|
||||
if (item.getPicture().equals("") && item.getPicture() != null) {
|
||||
PicassoTrustAll.getInstance(context).
|
||||
load(R.drawable.image_placeholder)
|
||||
.resize(100, 100)
|
||||
.placeholder(R.drawable.image_placeholder).into(holder.userImage);
|
||||
} else {
|
||||
PicassoTrustAll.getInstance(context).
|
||||
load(item.getPicture())
|
||||
.resize(100, 100)
|
||||
.placeholder(R.drawable.image_placeholder).into(holder.userImage);
|
||||
}
|
||||
|
||||
String status = "" + item.getStatus();
|
||||
if (status.equals("0")) {
|
||||
holder.lastMessage.setTypeface(null, Typeface.BOLD);
|
||||
holder.lastMessage.setTextColor(context.getResources().getColor(R.color.black));
|
||||
} else {
|
||||
holder.lastMessage.setTypeface(null, Typeface.NORMAL);
|
||||
holder.lastMessage.setTextColor(context.getResources().getColor(R.color.dark_gray));
|
||||
}
|
||||
|
||||
holder.bind(item, listener);
|
||||
}
|
||||
|
||||
|
||||
private String ChangeDate(String date) {
|
||||
long currenttime = System.currentTimeMillis();
|
||||
|
||||
long databasedate = 0;
|
||||
Date d = null;
|
||||
try {
|
||||
d = Constants.df.parse(date);
|
||||
databasedate = Objects.requireNonNull(d).getTime();
|
||||
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
long difference = currenttime - databasedate;
|
||||
if (difference < 86400000) {
|
||||
int chatday = Integer.parseInt(date.substring(0, 2));
|
||||
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
|
||||
if (today_day == chatday)
|
||||
return sdf.format(Objects.requireNonNull(d));
|
||||
else if ((today_day - chatday) == 1)
|
||||
return "Yesterday";
|
||||
} else if (difference < 172800000) {
|
||||
int chatday = Integer.parseInt(date.substring(0, 2));
|
||||
if ((today_day - chatday) == 1)
|
||||
return "Yesterday";
|
||||
}
|
||||
|
||||
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy");
|
||||
|
||||
if (d != null)
|
||||
return sdf.format(d);
|
||||
else
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getFilter() {
|
||||
return new Filter() {
|
||||
@Override
|
||||
protected FilterResults performFiltering(CharSequence charSequence) {
|
||||
String charString = charSequence.toString();
|
||||
if (charString.isEmpty()) {
|
||||
messageModelsFilter = messageModels;
|
||||
} else {
|
||||
ArrayList<MessageModels> filteredList = new ArrayList<>();
|
||||
for (MessageModels row : messageModels) {
|
||||
if (row.getName().toLowerCase().contains(charString.toLowerCase())) {
|
||||
filteredList.add(row);
|
||||
}
|
||||
}
|
||||
|
||||
messageModelsFilter = filteredList;
|
||||
}
|
||||
|
||||
FilterResults filterResults = new FilterResults();
|
||||
filterResults.values = messageModelsFilter;
|
||||
return filterResults;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
|
||||
messageModelsFilter = (ArrayList<MessageModels>) filterResults.values;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
package id.ontime.driver.item;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import id.ontime.driver.R;
|
||||
import id.ontime.driver.models.WalletModel;
|
||||
import id.ontime.driver.utils.Utility;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Created by otacodes on 3/24/2019.
|
||||
*/
|
||||
|
||||
public class WalletItem extends RecyclerView.Adapter<WalletItem.ItemRowHolder> {
|
||||
|
||||
private List<WalletModel> dataList;
|
||||
private Context mContext;
|
||||
private int rowLayout;
|
||||
|
||||
|
||||
public WalletItem(Context context, List<WalletModel> dataList, int rowLayout) {
|
||||
this.dataList = dataList;
|
||||
this.mContext = context;
|
||||
this.rowLayout = rowLayout;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ItemRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
|
||||
return new ItemRowHolder(v);
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final ItemRowHolder holder, final int position) {
|
||||
final WalletModel singleItem = dataList.get(position);
|
||||
|
||||
|
||||
if (singleItem.getType().equals("withdraw")) {
|
||||
holder.text.setText(singleItem.getType());
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
|
||||
switch (singleItem.getStatus()) {
|
||||
case "1":
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.red));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.red));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.red));
|
||||
holder.keterangan.setText("Penarikan Dana");
|
||||
break;
|
||||
case "0":
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.keterangan.setText("Pending");
|
||||
break;
|
||||
case "2":
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.gray));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.gray));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.gray));
|
||||
holder.keterangan.setText("Dibatalkan");
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (singleItem.getType().equals("Order-")) {
|
||||
holder.text.setText("Order " + singleItem.getBank());
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
|
||||
switch (singleItem.getStatus()) {
|
||||
case "1":
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.red));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.red));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.red));
|
||||
holder.keterangan.setText("Biaya Transaksi");
|
||||
break;
|
||||
case "0":
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.keterangan.setText("Pending");
|
||||
break;
|
||||
case "2":
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.gray));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.gray));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.gray));
|
||||
holder.keterangan.setText("Dibatalkan");
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (singleItem.getType().equals("topup") && singleItem.getStatus().equals("1")) {
|
||||
holder.text.setText(singleItem.getType()+" "+singleItem.getBank());
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.green));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.green));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.green));
|
||||
holder.keterangan.setText("TopUp Berhasil");
|
||||
|
||||
} else if (singleItem.getType().equals("topup") && singleItem.getStatus().equals("2")) {
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
holder.text.setText(singleItem.getType()+" "+singleItem.getBank());
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.gray));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.gray));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.gray));
|
||||
holder.keterangan.setText("Dibatalkan");
|
||||
|
||||
} else if (singleItem.getType().equals("topup") && singleItem.getStatus().equals("0")) {
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
holder.text.setText(singleItem.getType()+" "+singleItem.getBank());
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.keterangan.setText("Pending");
|
||||
|
||||
} else if (singleItem.getType().equals("Order+")) {
|
||||
holder.text.setText("Order " + singleItem.getBank());
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.green));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.green));
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.green));
|
||||
holder.keterangan.setText("Saldo Masuk");
|
||||
|
||||
} else {
|
||||
holder.background.setColorFilter(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.text.setText(singleItem.getType()+" "+singleItem.getBank());
|
||||
holder.text.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
holder.nominal.setTextColor(mContext.getResources().getColor(R.color.yellow));
|
||||
Utility.currencyTXT(holder.nominal, singleItem.getJumlah(), mContext);
|
||||
|
||||
holder.keterangan.setText("Pending");
|
||||
|
||||
|
||||
}
|
||||
Date myDate = null;
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm", Locale.US);
|
||||
try {
|
||||
myDate = dateFormat.parse(singleItem.getWaktu());
|
||||
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
SimpleDateFormat timeFormat = new SimpleDateFormat("dd MMM yyyy", Locale.US);
|
||||
String finalDate = timeFormat.format(Objects.requireNonNull(myDate));
|
||||
holder.tanggal.setText(finalDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return (null != dataList ? dataList.size() : 0);
|
||||
}
|
||||
|
||||
static class ItemRowHolder extends RecyclerView.ViewHolder {
|
||||
TextView text, tanggal, nominal, keterangan;
|
||||
ImageView background;
|
||||
|
||||
ItemRowHolder(View itemView) {
|
||||
super(itemView);
|
||||
background = itemView.findViewById(R.id.background);
|
||||
text = itemView.findViewById(R.id.text);
|
||||
tanggal = itemView.findViewById(R.id.texttanggal);
|
||||
nominal = itemView.findViewById(R.id.textharga);
|
||||
keterangan = itemView.findViewById(R.id.textket);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class AcceptRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("id_transaksi")
|
||||
@Expose
|
||||
private String idtrans;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getIdtrans() {
|
||||
return idtrans;
|
||||
}
|
||||
|
||||
public void setIdtrans(String idtrans) {
|
||||
this.idtrans = idtrans;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class AcceptResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private String data;
|
||||
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(String data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.AllTransaksiModel;
|
||||
import id.ontime.driver.models.PelangganModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/19/2019.
|
||||
*/
|
||||
|
||||
public class AllTransResponseJson {
|
||||
|
||||
@Expose
|
||||
@SerializedName("message")
|
||||
private String message;
|
||||
|
||||
@Expose
|
||||
@SerializedName("data")
|
||||
private List<AllTransaksiModel> data = new ArrayList<>();
|
||||
|
||||
@Expose
|
||||
@SerializedName("driver")
|
||||
private List<PelangganModel> driver = new ArrayList<>();
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<AllTransaksiModel> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<AllTransaksiModel> data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public List<PelangganModel> getDriver() {
|
||||
return driver;
|
||||
}
|
||||
|
||||
public void setDriver(List<PelangganModel> driver) {
|
||||
this.driver = driver;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.BankModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/19/2019.
|
||||
*/
|
||||
|
||||
public class BankResponseJson {
|
||||
|
||||
@Expose
|
||||
@SerializedName("message")
|
||||
private String message;
|
||||
|
||||
@Expose
|
||||
@SerializedName("data")
|
||||
private List<BankModel> data = new ArrayList<>();
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<BankModel> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<BankModel> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class ChangePassRequestJson {
|
||||
|
||||
@SerializedName("no_telepon")
|
||||
@Expose
|
||||
private String notelepon;
|
||||
|
||||
@SerializedName("email")
|
||||
@Expose
|
||||
private String email;
|
||||
|
||||
@SerializedName("password")
|
||||
@Expose
|
||||
private String password;
|
||||
|
||||
@SerializedName("new_password")
|
||||
@Expose
|
||||
private String new_password;
|
||||
|
||||
public String getNotelepon() {
|
||||
return notelepon;
|
||||
}
|
||||
|
||||
public void setNotelepon(String notelepon) {
|
||||
this.notelepon = notelepon;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getNewPassword() {
|
||||
return new_password;
|
||||
}
|
||||
|
||||
public void setNewPassword(String new_password) {
|
||||
this.new_password = new_password;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 24/02/2019.
|
||||
*/
|
||||
|
||||
public class DetailRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("id_pelanggan")
|
||||
@Expose
|
||||
private String idPelanggan;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getIdPelanggan() {
|
||||
return idPelanggan;
|
||||
}
|
||||
|
||||
public void setIdPelanggan(String idPelanggan) {
|
||||
this.idPelanggan = idPelanggan;
|
||||
}
|
||||
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.ItemPesananModel;
|
||||
import id.ontime.driver.models.PelangganModel;
|
||||
import id.ontime.driver.models.TransaksiModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/19/2019.
|
||||
*/
|
||||
|
||||
public class DetailTransResponseJson {
|
||||
|
||||
@Expose
|
||||
@SerializedName("message")
|
||||
private String message;
|
||||
|
||||
@Expose
|
||||
@SerializedName("data")
|
||||
private List<TransaksiModel> data = new ArrayList<>();
|
||||
|
||||
@Expose
|
||||
@SerializedName("pelanggan")
|
||||
private List<PelangganModel> pelanggan = new ArrayList<>();
|
||||
|
||||
@Expose
|
||||
@SerializedName("item")
|
||||
private List<ItemPesananModel> item = new ArrayList<>();
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<TransaksiModel> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<TransaksiModel> data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public List<PelangganModel> getPelanggan() {
|
||||
return pelanggan;
|
||||
}
|
||||
|
||||
public void setPelanggan(List<PelangganModel> pelanggan) {
|
||||
this.pelanggan = pelanggan;
|
||||
}
|
||||
|
||||
public List<ItemPesananModel> getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
public void setItem(List<ItemPesananModel> item) {
|
||||
this.item = item;
|
||||
}
|
||||
}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class EditKendaraanRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("no_telepon")
|
||||
@Expose
|
||||
private String noTelepon;
|
||||
|
||||
@SerializedName("merek")
|
||||
@Expose
|
||||
private String merek;
|
||||
|
||||
@SerializedName("tipe")
|
||||
@Expose
|
||||
private String tipe;
|
||||
|
||||
@SerializedName("no_kendaraan")
|
||||
@Expose
|
||||
private String no_kendaraan;
|
||||
|
||||
@SerializedName("warna")
|
||||
@Expose
|
||||
private String warna;
|
||||
|
||||
@SerializedName("id_kendaraan")
|
||||
@Expose
|
||||
private String id_kendaraan;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getNoTelepon() {
|
||||
return noTelepon;
|
||||
}
|
||||
|
||||
public void setNoTelepon(String noTelepon) {
|
||||
this.noTelepon = noTelepon;
|
||||
}
|
||||
|
||||
public String getMerek() {
|
||||
return merek;
|
||||
}
|
||||
|
||||
public void setMerek(String merek) {
|
||||
this.merek = merek;
|
||||
}
|
||||
|
||||
public String getTipe() {
|
||||
return tipe;
|
||||
}
|
||||
|
||||
public void setTipe(String tipe) {
|
||||
this.tipe = tipe;
|
||||
}
|
||||
|
||||
public String getNo_kendaraan() {
|
||||
return no_kendaraan;
|
||||
}
|
||||
|
||||
public void setNo_kendaraan(String no_kendaraan) {
|
||||
this.no_kendaraan = no_kendaraan;
|
||||
}
|
||||
|
||||
public String getWarna() {
|
||||
return warna;
|
||||
}
|
||||
|
||||
public void setWarna(String warna) {
|
||||
this.warna = warna;
|
||||
}
|
||||
|
||||
public String getId_kendaraan() {
|
||||
return id_kendaraan;
|
||||
}
|
||||
|
||||
public void setId_kendaraan(String id_kendaraan) {
|
||||
this.id_kendaraan = id_kendaraan;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class EditprofileRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("fullnama")
|
||||
@Expose
|
||||
private String fullNama;
|
||||
|
||||
@SerializedName("email")
|
||||
@Expose
|
||||
private String email;
|
||||
|
||||
@SerializedName("email_lama")
|
||||
@Expose
|
||||
private String emaillama;
|
||||
|
||||
@SerializedName("no_telepon")
|
||||
@Expose
|
||||
private String noTelepon;
|
||||
|
||||
@SerializedName("phone")
|
||||
@Expose
|
||||
private String phone;
|
||||
|
||||
@SerializedName("no_telepon_lama")
|
||||
@Expose
|
||||
private String phonelama;
|
||||
|
||||
@SerializedName("tgl_lahir")
|
||||
@Expose
|
||||
private String tglLahir = "-";
|
||||
|
||||
|
||||
@SerializedName("fotodriver")
|
||||
@Expose
|
||||
private String fotopelanggan;
|
||||
|
||||
@SerializedName("fotodriver_lama")
|
||||
@Expose
|
||||
private String fotopelangganlama;
|
||||
|
||||
@SerializedName("countrycode")
|
||||
@Expose
|
||||
private String countrycode;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFullNama() {
|
||||
return fullNama;
|
||||
}
|
||||
|
||||
public void setFullNama(String fullNama) {
|
||||
this.fullNama = fullNama;
|
||||
}
|
||||
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getEmaillama() {
|
||||
return emaillama;
|
||||
}
|
||||
|
||||
public void setEmaillama(String emaillama) {
|
||||
this.emaillama = emaillama;
|
||||
}
|
||||
|
||||
public String getNoTelepon() {
|
||||
return noTelepon;
|
||||
}
|
||||
|
||||
public void setNoTelepon(String noTelepon) {
|
||||
this.noTelepon = noTelepon;
|
||||
}
|
||||
|
||||
public String getTglLahir() {
|
||||
return tglLahir;
|
||||
}
|
||||
|
||||
public void setTglLahir(String tglLahir) {
|
||||
this.tglLahir = tglLahir;
|
||||
}
|
||||
|
||||
|
||||
public String getFotopelanggan() {
|
||||
return fotopelanggan;
|
||||
}
|
||||
|
||||
public void setFotopelanggan(String fotopelanggan) {
|
||||
this.fotopelanggan = fotopelanggan;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getPhonelama() {
|
||||
return phonelama;
|
||||
}
|
||||
|
||||
public void setPhonelama(String phonelama) {
|
||||
this.phonelama = phonelama;
|
||||
}
|
||||
|
||||
public String getFotopelangganlama() {
|
||||
return fotopelangganlama;
|
||||
}
|
||||
|
||||
public void setFotopelangganlama(String fotopelangganlama) {
|
||||
this.fotopelangganlama = fotopelangganlama;
|
||||
}
|
||||
|
||||
public String getCountrycode() {
|
||||
return countrycode;
|
||||
}
|
||||
|
||||
public void setCountrycode(String countrycode) {
|
||||
this.countrycode = countrycode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class GetHomeRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("no_telepon")
|
||||
@Expose
|
||||
private String phone;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.TransaksiModel;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class GetHomeResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("saldo")
|
||||
@Expose
|
||||
private String saldo;
|
||||
|
||||
@SerializedName("currency")
|
||||
@Expose
|
||||
private String currency;
|
||||
|
||||
@SerializedName("app_aboutus")
|
||||
@Expose
|
||||
private String aboutus;
|
||||
|
||||
@SerializedName("app_email")
|
||||
@Expose
|
||||
private String email;
|
||||
|
||||
@SerializedName("app_contact")
|
||||
@Expose
|
||||
private String phone;
|
||||
|
||||
@SerializedName("app_website")
|
||||
@Expose
|
||||
private String website;
|
||||
|
||||
@SerializedName("driver_status")
|
||||
@Expose
|
||||
private String driverstatus;
|
||||
|
||||
@SerializedName("data_transaksi")
|
||||
@Expose
|
||||
private List<TransaksiModel> transaksi = new ArrayList<>();
|
||||
|
||||
@SerializedName("data_driver")
|
||||
@Expose
|
||||
private List<User> datadriver = new ArrayList<>();
|
||||
|
||||
@SerializedName("currency_text")
|
||||
@Expose
|
||||
private String currency_text;
|
||||
|
||||
@SerializedName("mobilepulsa_username")
|
||||
@Expose
|
||||
private String mobilepulsausername;
|
||||
|
||||
@SerializedName("mobilepulsa_api_key")
|
||||
@Expose
|
||||
private String mobilepulsaapikey;
|
||||
|
||||
@SerializedName("mp_status")
|
||||
@Expose
|
||||
private String mpstatus;
|
||||
|
||||
@SerializedName("mp_active")
|
||||
@Expose
|
||||
private String mpactive;
|
||||
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getSaldo() {
|
||||
return saldo;
|
||||
}
|
||||
|
||||
public void setSaldo(String saldo) {
|
||||
this.saldo = saldo;
|
||||
}
|
||||
|
||||
public String getCurrency() {
|
||||
return currency;
|
||||
}
|
||||
|
||||
public void setCurrency(String currency) {
|
||||
this.currency = currency;
|
||||
}
|
||||
|
||||
public String getAboutus() {
|
||||
return aboutus;
|
||||
}
|
||||
|
||||
public void setAboutus(String aboutus) {
|
||||
this.aboutus = aboutus;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getWebsite() {
|
||||
return website;
|
||||
}
|
||||
|
||||
public void setWebsite(String website) {
|
||||
this.website = website;
|
||||
}
|
||||
|
||||
public String getDriverstatus() {
|
||||
return driverstatus;
|
||||
}
|
||||
|
||||
public void setDriverstatus(String driverstatus) {
|
||||
this.driverstatus = driverstatus;
|
||||
}
|
||||
|
||||
public List<TransaksiModel> getTransaksi() {
|
||||
return transaksi;
|
||||
}
|
||||
|
||||
public void setTransaksi(List<TransaksiModel> transaksi) {
|
||||
this.transaksi = transaksi;
|
||||
}
|
||||
|
||||
public void setDatadriver(List<User> datadriver) {
|
||||
this.datadriver = datadriver;
|
||||
}
|
||||
|
||||
public List<User> getDatadriver() {
|
||||
return datadriver;
|
||||
}
|
||||
|
||||
public String getCurrencytext() {
|
||||
return currency_text;
|
||||
}
|
||||
|
||||
public void setCurrencytext(String currencytext) {
|
||||
this.currency_text = currencytext;
|
||||
}
|
||||
|
||||
public String getMobilepulsausername() {
|
||||
return mobilepulsausername;
|
||||
}
|
||||
|
||||
public void setMobilepulsausername(String mobilepulsausername) {
|
||||
this.mobilepulsausername = mobilepulsausername;
|
||||
}
|
||||
public String getMobilepulsaapikey() {
|
||||
return mobilepulsaapikey;
|
||||
}
|
||||
|
||||
public void setMobilepulsaapikey(String mobilepulsaapikey) {
|
||||
this.mobilepulsaapikey = mobilepulsaapikey;
|
||||
}
|
||||
public String getMpstatus() {
|
||||
return mpstatus;
|
||||
}
|
||||
|
||||
public void setMpstatus(String mpstatus) {
|
||||
this.mpstatus = mpstatus;
|
||||
}
|
||||
|
||||
public String getMpactive() {
|
||||
return mpactive;
|
||||
}
|
||||
|
||||
public void setMpactive(String mpactive) {
|
||||
this.mpactive = mpactive;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class GetOnRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("is_turn")
|
||||
@Expose
|
||||
private boolean turn;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public boolean getOn() {
|
||||
return turn;
|
||||
}
|
||||
|
||||
public void setOn(boolean turn) {
|
||||
this.turn = turn;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.JobModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class JobResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private List<JobModel> data = new ArrayList<>();
|
||||
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<JobModel> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<JobModel> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class LoginRequestJson {
|
||||
|
||||
@SerializedName("no_telepon")
|
||||
@Expose
|
||||
private String notelepon;
|
||||
|
||||
@SerializedName("email")
|
||||
@Expose
|
||||
private String email;
|
||||
|
||||
@Expose
|
||||
private String password;
|
||||
|
||||
@SerializedName("token")
|
||||
@Expose
|
||||
private String regId;
|
||||
|
||||
public String getNotelepon() {
|
||||
return notelepon;
|
||||
}
|
||||
|
||||
public void setNotelepon(String notelepon) {
|
||||
this.notelepon = notelepon;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getRegId() {
|
||||
return regId;
|
||||
}
|
||||
|
||||
public void setRegId(String regId) {
|
||||
this.regId = regId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class LoginResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private List<User> data = new ArrayList<>();
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<User> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<User> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class MobileTopUpDetailResponseModel implements Serializable {
|
||||
@SerializedName("pulsa_code")
|
||||
String phoneCreditCode;
|
||||
@SerializedName("pulsa_op")
|
||||
String phoneCreditOperator;
|
||||
@SerializedName("pulsa_nominal")
|
||||
String phoneCreditDescription;
|
||||
@SerializedName("pulsa_price")
|
||||
int phoneCreditPrice;
|
||||
@SerializedName("pulsa_type")
|
||||
String phoneCreditType;
|
||||
@SerializedName("status")
|
||||
String phoneCreditStatus;
|
||||
|
||||
public String getPhoneCreditCode() {
|
||||
return phoneCreditCode;
|
||||
}
|
||||
|
||||
public void setPhoneCreditCode(String phoneCreditCode) {
|
||||
this.phoneCreditCode = phoneCreditCode;
|
||||
}
|
||||
|
||||
public String getPhoneCreditOperator() {
|
||||
return phoneCreditOperator;
|
||||
}
|
||||
|
||||
public void setPhoneCreditOperator(String phoneCreditOperator) {
|
||||
this.phoneCreditOperator = phoneCreditOperator;
|
||||
}
|
||||
|
||||
public String getPhoneCreditDescription() {
|
||||
return phoneCreditDescription;
|
||||
}
|
||||
|
||||
public void setPhoneCreditDescription(String phoneCreditDescription) {
|
||||
this.phoneCreditDescription = phoneCreditDescription;
|
||||
}
|
||||
|
||||
public int getPhoneCreditPrice() {
|
||||
return phoneCreditPrice;
|
||||
}
|
||||
|
||||
public void setPhoneCreditPrice(int phoneCreditPrice) {
|
||||
this.phoneCreditPrice = phoneCreditPrice;
|
||||
}
|
||||
|
||||
public String getPhoneCreditType() {
|
||||
return phoneCreditType;
|
||||
}
|
||||
|
||||
public void setPhoneCreditType(String phoneCreditType) {
|
||||
this.phoneCreditType = phoneCreditType;
|
||||
}
|
||||
|
||||
public String getPhoneCreditStatus() {
|
||||
return phoneCreditStatus;
|
||||
}
|
||||
|
||||
public void setPhoneCreditStatus(String phoneCreditStatus) {
|
||||
this.phoneCreditStatus = phoneCreditStatus;
|
||||
}
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class MobileTopUpRequestModel implements Serializable {
|
||||
|
||||
@SerializedName("commands")
|
||||
String command;
|
||||
@SerializedName("username")
|
||||
String username;
|
||||
@SerializedName("sign")
|
||||
String sign;
|
||||
@SerializedName("status")
|
||||
String status;
|
||||
@SerializedName("ref_id")
|
||||
String orderId;
|
||||
@SerializedName("hp")
|
||||
String destinationPhoneNumber;
|
||||
@SerializedName("pulsa_code")
|
||||
String phoneCreditCode;
|
||||
|
||||
public String getCommand() {
|
||||
return command;
|
||||
}
|
||||
|
||||
public void setCommand(String command) {
|
||||
this.command = command;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getSign() {
|
||||
return sign;
|
||||
}
|
||||
|
||||
public void setSign(String sign) {
|
||||
this.sign = sign;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getOrderId() {
|
||||
return orderId;
|
||||
}
|
||||
|
||||
public void setOrderId(String orderId) {
|
||||
this.orderId = orderId;
|
||||
}
|
||||
|
||||
public String getDestinationPhoneNumber() {
|
||||
return destinationPhoneNumber;
|
||||
}
|
||||
|
||||
public void setDestinationPhoneNumber(String destinationPhoneNumber) {
|
||||
this.destinationPhoneNumber = destinationPhoneNumber;
|
||||
}
|
||||
|
||||
public String getPhoneCreditCode() {
|
||||
return phoneCreditCode;
|
||||
}
|
||||
|
||||
public void setPhoneCreditCode(String phoneCreditCode) {
|
||||
this.phoneCreditCode = phoneCreditCode;
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class MobileTopUpResponseModel implements Serializable {
|
||||
@SerializedName("data")
|
||||
List<MobileTopUpDetailResponseModel> detailResponse;
|
||||
|
||||
public List<MobileTopUpDetailResponseModel> getDetailResponse() {
|
||||
return detailResponse;
|
||||
}
|
||||
|
||||
public void setDetailResponse(List<MobileTopUpDetailResponseModel> detailResponse) {
|
||||
this.detailResponse = detailResponse;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class PrivacyRequestJson {
|
||||
|
||||
@SerializedName("privacy")
|
||||
@Expose
|
||||
private String privacy;
|
||||
|
||||
public String getPrivacy() {
|
||||
return privacy;
|
||||
}
|
||||
|
||||
public void setPrivacy(String privacy) {
|
||||
this.privacy = privacy;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.SettingsModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class PrivacyResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private List<SettingsModel> data = new ArrayList<>();
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<SettingsModel> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<SettingsModel> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.RegionModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class RegionResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private List<RegionModel> data = new ArrayList<>();
|
||||
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public List<RegionModel> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<RegionModel> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,286 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class RegisterRequestJson {
|
||||
|
||||
@SerializedName("nama_driver")
|
||||
@Expose
|
||||
private String namadriver;
|
||||
|
||||
@SerializedName("no_ktp")
|
||||
@Expose
|
||||
private String noktp;
|
||||
|
||||
@SerializedName("tgl_lahir")
|
||||
@Expose
|
||||
private String tglLahir = "-";
|
||||
|
||||
@SerializedName("exp_stnk")
|
||||
@Expose
|
||||
private String expStnk = "-";
|
||||
|
||||
@SerializedName("no_telepon")
|
||||
@Expose
|
||||
private String noTelepon;
|
||||
|
||||
@SerializedName("phone")
|
||||
@Expose
|
||||
private String phone;
|
||||
|
||||
@SerializedName("email")
|
||||
@Expose
|
||||
private String email;
|
||||
|
||||
@SerializedName("foto")
|
||||
@Expose
|
||||
private String foto;
|
||||
|
||||
@SerializedName("job")
|
||||
@Expose
|
||||
private String job;
|
||||
|
||||
@SerializedName("partner_region")
|
||||
@Expose
|
||||
private String partner_region;
|
||||
|
||||
@SerializedName("gender")
|
||||
@Expose
|
||||
private String gender;
|
||||
|
||||
@SerializedName("alamat_driver")
|
||||
@Expose
|
||||
private String alamat;
|
||||
|
||||
@SerializedName("token")
|
||||
@Expose
|
||||
private String token;
|
||||
|
||||
@SerializedName("merek")
|
||||
@Expose
|
||||
private String merek;
|
||||
|
||||
@SerializedName("tipe")
|
||||
@Expose
|
||||
private String tipe;
|
||||
|
||||
@SerializedName("nomor_kendaraan")
|
||||
@Expose
|
||||
private String nomorkendaraan;
|
||||
|
||||
@SerializedName("warna")
|
||||
@Expose
|
||||
private String warna;
|
||||
|
||||
@SerializedName("foto_ktp")
|
||||
@Expose
|
||||
private String fotoktp;
|
||||
|
||||
@SerializedName("foto_sim")
|
||||
@Expose
|
||||
private String fotosim;
|
||||
|
||||
@SerializedName("foto_stnk")
|
||||
@Expose
|
||||
private String fotostnk;
|
||||
|
||||
@SerializedName("id_sim")
|
||||
@Expose
|
||||
private String idsim;
|
||||
|
||||
@SerializedName("checked")
|
||||
@Expose
|
||||
private String checked;
|
||||
|
||||
@SerializedName("countrycode")
|
||||
@Expose
|
||||
private String countrycode;
|
||||
|
||||
|
||||
public String getNamadriver() {
|
||||
return namadriver;
|
||||
}
|
||||
|
||||
public void setNamadriver(String namadriver) {
|
||||
this.namadriver = namadriver;
|
||||
}
|
||||
|
||||
public String getNoktp() {
|
||||
return noktp;
|
||||
}
|
||||
|
||||
public void setNoktp(String noktp) {
|
||||
this.noktp = noktp;
|
||||
}
|
||||
|
||||
public String getTglLahir() {
|
||||
return tglLahir;
|
||||
}
|
||||
|
||||
public void setTglLahir(String tglLahir) {
|
||||
this.tglLahir = tglLahir;
|
||||
}
|
||||
|
||||
public String getExpStnk() {
|
||||
return expStnk;
|
||||
}
|
||||
|
||||
public void setExpStnk(String expStnk) {
|
||||
this.expStnk = expStnk;
|
||||
}
|
||||
|
||||
public String getNoTelepon() {
|
||||
return noTelepon;
|
||||
}
|
||||
|
||||
public void setNoTelepon(String noTelepon) {
|
||||
this.noTelepon = noTelepon;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getFoto() {
|
||||
return foto;
|
||||
}
|
||||
|
||||
public void setFoto(String foto) {
|
||||
this.foto = foto;
|
||||
}
|
||||
|
||||
public String getJob() {
|
||||
return job;
|
||||
}
|
||||
|
||||
public void setJob(String job) {
|
||||
this.job = job;
|
||||
}
|
||||
|
||||
public String getPartner_region() { return partner_region; }
|
||||
|
||||
public void setPartner_region(String partner_region) { this.partner_region = partner_region; }
|
||||
|
||||
public String getGender() {
|
||||
return gender;
|
||||
}
|
||||
|
||||
public void setGender(String gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public String getAlamat() {
|
||||
return alamat;
|
||||
}
|
||||
|
||||
public void setAlamat(String alamat) {
|
||||
this.alamat = alamat;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
public void setToken(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public String getMerek() {
|
||||
return merek;
|
||||
}
|
||||
|
||||
public void setMerek(String merek) {
|
||||
this.merek = merek;
|
||||
}
|
||||
|
||||
public String getTipe() {
|
||||
return tipe;
|
||||
}
|
||||
|
||||
public void setTipe(String tipe) {
|
||||
this.tipe = tipe;
|
||||
}
|
||||
|
||||
public String getNomorkendaraan() {
|
||||
return nomorkendaraan;
|
||||
}
|
||||
|
||||
public void setNomorkendaraan(String nomorkendaraan) {
|
||||
this.nomorkendaraan = nomorkendaraan;
|
||||
}
|
||||
|
||||
public String getWarna() {
|
||||
return warna;
|
||||
}
|
||||
|
||||
public void setWarna(String warna) {
|
||||
this.warna = warna;
|
||||
}
|
||||
|
||||
public String getFotoktp() {
|
||||
return fotoktp;
|
||||
}
|
||||
|
||||
public void setFotoktp(String fotoktp) {
|
||||
this.fotoktp = fotoktp;
|
||||
}
|
||||
|
||||
public String getFotosim() {
|
||||
return fotosim;
|
||||
}
|
||||
|
||||
public void setFotosim(String fotosim) {
|
||||
this.fotosim = fotosim;
|
||||
}
|
||||
|
||||
public String getFotostnk() {
|
||||
return fotosim;
|
||||
}
|
||||
|
||||
public void setFotostnk(String fotostnk) {
|
||||
this.fotostnk = fotostnk;
|
||||
}
|
||||
|
||||
public String getIdsim() {
|
||||
return idsim;
|
||||
}
|
||||
|
||||
public void setIdsim(String idsim) {
|
||||
this.idsim = idsim;
|
||||
}
|
||||
|
||||
public String getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public void setChecked(String checked) {
|
||||
this.checked = checked;
|
||||
}
|
||||
|
||||
public String getCountrycode() {
|
||||
return countrycode;
|
||||
}
|
||||
|
||||
public void setCountrycode(String countrycode) {
|
||||
this.countrycode = countrycode;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class RegisterResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private String data;
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(String data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class ResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private String data;
|
||||
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(String data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class TopupRequestJson {
|
||||
|
||||
@SerializedName("id")
|
||||
@Expose
|
||||
private String id;
|
||||
|
||||
@SerializedName("name")
|
||||
@Expose
|
||||
private String name;
|
||||
|
||||
@SerializedName("email")
|
||||
@Expose
|
||||
private String email;
|
||||
|
||||
@SerializedName("card_num")
|
||||
@Expose
|
||||
private String cardnum;
|
||||
|
||||
@SerializedName("cvc")
|
||||
@Expose
|
||||
private String cvc;
|
||||
|
||||
@SerializedName("expired")
|
||||
@Expose
|
||||
private String expired;
|
||||
|
||||
@SerializedName("product")
|
||||
@Expose
|
||||
private String product;
|
||||
|
||||
@SerializedName("number")
|
||||
@Expose
|
||||
private String number;
|
||||
|
||||
@SerializedName("price")
|
||||
@Expose
|
||||
private String price;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getCardnum() {
|
||||
return cardnum;
|
||||
}
|
||||
|
||||
public void setCardnum(String cardnum) {
|
||||
this.cardnum = cardnum;
|
||||
}
|
||||
|
||||
public String getCvc() {
|
||||
return cvc;
|
||||
}
|
||||
|
||||
public void setCvc(String cvc) {
|
||||
this.cvc = cvc;
|
||||
}
|
||||
|
||||
public String getExpired() {
|
||||
return expired;
|
||||
}
|
||||
|
||||
public void setExpired(String expired) {
|
||||
this.expired = expired;
|
||||
}
|
||||
|
||||
public String getProduct() {
|
||||
return product;
|
||||
}
|
||||
|
||||
public void setProduct(String product) {
|
||||
this.product = product;
|
||||
}
|
||||
|
||||
public String getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(String number) {
|
||||
this.number = number;
|
||||
}
|
||||
|
||||
public String getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(String price) {
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package id.ontime.driver.json;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import id.ontime.driver.models.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Ourdevelops Team on 10/13/2019.
|
||||
*/
|
||||
|
||||
public class TopupResponseJson {
|
||||
|
||||
@SerializedName("message")
|
||||
@Expose
|
||||
private String message;
|
||||
|
||||
@SerializedName("status")
|
||||
@Expose
|
||||
private String status;
|
||||
|
||||
@SerializedName("data")
|
||||
@Expose
|
||||
private List<User> data = new ArrayList<>();
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public List<User> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<User> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user