mirror of
https://github.com/hmalik144/Driver.git
synced 2026-03-18 07:26:03 +00:00
Circleci project setup (#7)
This commit is contained in:
@@ -1,50 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="h_mal.appttude.com.driver">
|
||||
package="h_mal.appttude.com">
|
||||
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.READ_PROFILE" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<application
|
||||
android:name=".application.DriverApplication"
|
||||
android:name="h_mal.appttude.com.application.DriverApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".update.UpdateActivity" />
|
||||
<activity
|
||||
android:name=".ui.user.LoginActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/Theme.Design.NoActionBar">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.driver.MainActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="h_mal.appttude.com.driver"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.Archive
|
||||
package h_mal.appttude.com.Archive
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
@@ -10,12 +10,11 @@ import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.ValueEventListener
|
||||
import h_mal.appttude.com.driver.Global.FirebaseClass
|
||||
import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
import h_mal.appttude.com.R
|
||||
|
||||
class ArchiveFragment : Fragment() {
|
||||
var archive: ArchiveObject? = null
|
||||
// var archive: ArchiveObject? = null
|
||||
private var reference: DatabaseReference? = null
|
||||
private var listView: ListView? = null
|
||||
var archiveString: String? = null
|
||||
@@ -27,18 +26,18 @@ class ArchiveFragment : Fragment() {
|
||||
// )
|
||||
// .child(FirebaseClass.ARCHIVE_FIREBASE)
|
||||
|
||||
archiveString = requireArguments().getString("archive")
|
||||
var s: String = ""
|
||||
when (archiveString) {
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE -> s = "Private Hire"
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE -> s = "License"
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE -> s = "Vehicle"
|
||||
FirebaseClass.MOT_FIREBASE -> s = "M.O.T"
|
||||
FirebaseClass.INSURANCE_FIREBASE -> s = "Insurance"
|
||||
FirebaseClass.LOG_BOOK_FIREBASE -> s = "Logbook"
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> s = "Private Hire Vehicle"
|
||||
}
|
||||
requireActivity().title = s + " Archive"
|
||||
// archiveString = requireArguments().getString("archive")
|
||||
// var s: String = ""
|
||||
// when (archiveString) {
|
||||
// FirebaseClass.PRIVATE_HIRE_FIREBASE -> s = "Private Hire"
|
||||
// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> s = "License"
|
||||
// FirebaseClass.VEHICLE_DETAILS_FIREBASE -> s = "Vehicle"
|
||||
// FirebaseClass.MOT_FIREBASE -> s = "M.O.T"
|
||||
// FirebaseClass.INSURANCE_FIREBASE -> s = "Insurance"
|
||||
// FirebaseClass.LOG_BOOK_FIREBASE -> s = "Logbook"
|
||||
// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> s = "Private Hire Vehicle"
|
||||
// }
|
||||
// requireActivity().title = s + " Archive"
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
@@ -52,12 +51,12 @@ class ArchiveFragment : Fragment() {
|
||||
return view
|
||||
}
|
||||
|
||||
var valueEventListener: ValueEventListener = object : ValueEventListener {
|
||||
override fun onDataChange(dataSnapshot: DataSnapshot) {
|
||||
archive = dataSnapshot.getValue(ArchiveObject::class.java)
|
||||
listView!!.adapter = ArchiveObjectListAdapter(archive, requireContext(), archiveString)
|
||||
}
|
||||
|
||||
override fun onCancelled(databaseError: DatabaseError) {}
|
||||
}
|
||||
// var valueEventListener: ValueEventListener = object : ValueEventListener {
|
||||
// override fun onDataChange(dataSnapshot: DataSnapshot) {
|
||||
// archive = dataSnapshot.getValue(ArchiveObject::class.java)
|
||||
// listView!!.adapter = ArchiveObjectListAdapter(archive, requireContext(), archiveString)
|
||||
// }
|
||||
//
|
||||
// override fun onCancelled(databaseError: DatabaseError) {}
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
package h_mal.appttude.com.Archive
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
//import h_mal.appttude.com.Global.FirebaseClass
|
||||
//import h_mal.appttude.com.Global.ImageSwiperClass
|
||||
//import h_mal.appttude.com.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.model.InsuranceObject
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.model.VehicleProfileObject
|
||||
import h_mal.appttude.com.utils.DateUtils.convertDateStringDatePattern
|
||||
import java.text.ParseException
|
||||
|
||||
class ArchiveObjectListAdapter(
|
||||
// var archiveObject: ArchiveObject?,
|
||||
var context: Context?,
|
||||
var archiveString: String?
|
||||
) : BaseAdapter() {
|
||||
var size: Int = 0
|
||||
lateinit var mKeys: Array<String>
|
||||
private var dateArchivedText: TextView? = null
|
||||
override fun getCount(): Int {
|
||||
return size
|
||||
}
|
||||
|
||||
override fun getItem(position: Int): Any? {
|
||||
when (archiveString) {
|
||||
// FirebaseClass.PRIVATE_HIRE_FIREBASE -> return archiveObject?.private_hire
|
||||
// ?.get(mKeys[position])
|
||||
// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> return archiveObject?.driver_license
|
||||
// ?.get(mKeys[position])
|
||||
// FirebaseClass.VEHICLE_DETAILS_FIREBASE -> return archiveObject?.vehicle_details
|
||||
// ?.get(mKeys[position])
|
||||
// FirebaseClass.MOT_FIREBASE -> return archiveObject?.mot_details?.get(mKeys[position])
|
||||
// FirebaseClass.INSURANCE_FIREBASE -> return archiveObject?.insurance_details?.get(
|
||||
// mKeys[position]
|
||||
// )
|
||||
// FirebaseClass.LOG_BOOK_FIREBASE -> return archiveObject?.log_book
|
||||
// ?.get(mKeys.get(position))
|
||||
// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> return archiveObject?.ph_car?.get(mKeys[position])
|
||||
else -> return mKeys[position]
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemId(position: Int): Long {
|
||||
return position.toLong()
|
||||
}
|
||||
|
||||
override fun getView(position: Int, convertView: View, parent: ViewGroup): View {
|
||||
var listItemView: View = convertView
|
||||
//
|
||||
// if (listItemView == null) {
|
||||
// if (((archiveString == FirebaseClass.PRIVATE_HIRE_FIREBASE) || (archiveString == FirebaseClass.DRIVERS_LICENSE_FIREBASE) || (archiveString == FirebaseClass.MOT_FIREBASE) || (archiveString == FirebaseClass.LOG_BOOK_FIREBASE) || (archiveString == FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE))) {
|
||||
// listItemView = LayoutInflater.from(context).inflate(
|
||||
// R.layout.archive_license_item, parent, false
|
||||
// )
|
||||
// val imageView: ImageView = listItemView.findViewById(R.id.image_archive)
|
||||
// dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
// val expiryHolder: LinearLayout = listItemView.findViewById(R.id.expiry_view)
|
||||
// val fieldTwo: LinearLayout = listItemView.findViewById(R.id.field_two_view)
|
||||
// val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
|
||||
// val fiewTwoLable: TextView = listItemView.findViewById(R.id.field_two)
|
||||
// val fieldTwoText: TextView = listItemView.findViewById(R.id.field_two_text)
|
||||
// when (archiveString) {
|
||||
//// FirebaseClass.PRIVATE_HIRE_FIREBASE -> {
|
||||
//// expiryHolder.visibility = View.VISIBLE
|
||||
//// fieldTwo.visibility = View.VISIBLE
|
||||
//// val privateHireObject: PrivateHireObject =
|
||||
//// getItem(position) as PrivateHireObject
|
||||
//// Picasso.get().load(privateHireObject.phImageString)
|
||||
//// .placeholder(R.drawable.choice_img)
|
||||
//// .into(imageView)
|
||||
//// dateString(position)
|
||||
//// expiryText.text = privateHireObject.phExpiry
|
||||
//// fiewTwoLable.text = "Private Hire License No.:"
|
||||
//// fieldTwoText.text = privateHireObject.phNumber
|
||||
//// }
|
||||
//// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> {
|
||||
//// expiryHolder.visibility = View.VISIBLE
|
||||
//// fieldTwo.visibility = View.VISIBLE
|
||||
//// val driversLicenseObject: DriversLicenseObject =
|
||||
//// getItem(position) as DriversLicenseObject
|
||||
//// Picasso.get().load(driversLicenseObject.licenseImageString)
|
||||
//// .placeholder(R.drawable.choice_img)
|
||||
//// .into(imageView)
|
||||
//// dateString(position)
|
||||
//// expiryText.text = driversLicenseObject.licenseExpiry
|
||||
//// fiewTwoLable.text = "License No.:"
|
||||
//// fieldTwoText.text = driversLicenseObject.licenseNumber
|
||||
//// }
|
||||
//// FirebaseClass.MOT_FIREBASE -> {
|
||||
//// expiryHolder.visibility = View.VISIBLE
|
||||
//// fieldTwo.visibility = View.GONE
|
||||
//// val motObject: MotObject = getItem(position) as MotObject
|
||||
//// Picasso.get().load(motObject.motImageString)
|
||||
//// .placeholder(R.drawable.choice_img)
|
||||
//// .into(imageView)
|
||||
//// dateString(position)
|
||||
//// expiryText.text = motObject.motExpiry
|
||||
//// }
|
||||
//// FirebaseClass.LOG_BOOK_FIREBASE -> {
|
||||
//// expiryHolder.visibility = View.GONE
|
||||
//// fieldTwo.visibility = View.VISIBLE
|
||||
//// val logbookObject: LogbookObject = getItem(position) as LogbookObject
|
||||
//// Picasso.get().load(logbookObject.photoString)
|
||||
//// .into(MainActivity.loadImage(imageView))
|
||||
//// dateString(position)
|
||||
//// fiewTwoLable.text = "V5C No.:"
|
||||
//// fieldTwoText.text = logbookObject.v5cnumber
|
||||
//// }
|
||||
//// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> {
|
||||
//// expiryHolder.visibility = View.VISIBLE
|
||||
//// fieldTwo.visibility = View.VISIBLE
|
||||
//// val privateHireVehicleObject: PrivateHireVehicleObject =
|
||||
//// getItem(position) as PrivateHireVehicleObject
|
||||
//// Picasso.get().load(privateHireVehicleObject.phCarImageString)
|
||||
//// .into(MainActivity.loadImage(imageView))
|
||||
//// dateString(position)
|
||||
//// expiryText.text = privateHireVehicleObject.phCarExpiry
|
||||
//// fiewTwoLable.text = "Private Hire Vehicle License No.:"
|
||||
//// fieldTwoText.text = privateHireVehicleObject.phCarNumber
|
||||
//// }
|
||||
//// }
|
||||
//// } else if ((archiveString == FirebaseClass.INSURANCE_FIREBASE)) {
|
||||
//// listItemView = LayoutInflater.from(context).inflate(
|
||||
//// R.layout.archive_insurance_item, parent, false
|
||||
//// )
|
||||
//// val holder: View = listItemView.findViewById(R.id.image_pager)
|
||||
//// val swiperClass: ImageSwiperClass = ImageSwiperClass(context, holder)
|
||||
//// // swiperClass.hideDelete();
|
||||
//// listItemView.findViewById<View>(R.id.delete).visibility = View.GONE
|
||||
//// // holder.findViewById(R.id.delete).setVisibility(View.INVISIBLE);
|
||||
//// dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
//// dateString(position)
|
||||
//// val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
|
||||
//// val fieldTwoText: TextView = listItemView.findViewById(R.id.archive_insurer)
|
||||
//// val insuranceObject: InsuranceObject = getItem(position) as InsuranceObject
|
||||
////// swiperClass.reinstantiateList(insuranceObject.photoStrings)
|
||||
//// expiryText.text = insuranceObject.expiryDate
|
||||
//// fieldTwoText.text = insuranceObject.insurerName
|
||||
//// } else if ((archiveString == FirebaseClass.VEHICLE_DETAILS_FIREBASE)) {
|
||||
//// listItemView = LayoutInflater.from(context).inflate(
|
||||
//// R.layout.archive_vehicle_item, parent, false
|
||||
//// )
|
||||
//// dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
//// dateString(position)
|
||||
//// val numberPlate: TextView = listItemView.findViewById(R.id.number_plate)
|
||||
//// val keeperName: TextView = listItemView.findViewById(R.id.keeper_name)
|
||||
//// val keeperAddress: TextView = listItemView.findViewById(R.id.keeper_address)
|
||||
//// val carText: TextView = listItemView.findViewById(R.id.car_text_arch)
|
||||
//// val carColour: TextView = listItemView.findViewById(R.id.car_colour)
|
||||
//// val carSeized: TextView = listItemView.findViewById(R.id.seized_checkbox)
|
||||
//// val startDate: TextView = listItemView.findViewById(R.id.first_date)
|
||||
//// val vehicleProfileObject: VehicleProfileObject =
|
||||
//// getItem(position) as VehicleProfileObject
|
||||
//// numberPlate.text = vehicleProfileObject.reg
|
||||
//// keeperName.text = vehicleProfileObject.keeperName
|
||||
//// keeperAddress.text = vehicleProfileObject.keeperAddress + "\n" + vehicleProfileObject.keeperPostCode
|
||||
//// carText.text = vehicleProfileObject.make + " " + vehicleProfileObject.model
|
||||
//// carColour.text = vehicleProfileObject.colour
|
||||
//// val s: String
|
||||
//// if (vehicleProfileObject.isSeized) {
|
||||
//// s = "Yes"
|
||||
//// } else {
|
||||
//// s = "No"
|
||||
//// }
|
||||
//// carSeized.text = s
|
||||
//// startDate.text = vehicleProfileObject.startDate
|
||||
//// }
|
||||
//// }
|
||||
return listItemView
|
||||
}
|
||||
|
||||
private fun dateString(position: Int) {
|
||||
var success: Boolean = true
|
||||
try {
|
||||
dateArchivedText!!.text = mKeys[position].convertDateStringDatePattern("yyyyMMdd_HHmmss", "dd/MM/yyyy")
|
||||
} catch (e: ParseException) {
|
||||
e.printStackTrace()
|
||||
success = false
|
||||
} finally {
|
||||
if (!success) {
|
||||
dateArchivedText!!.text = mKeys.get(position).substring(0, 8)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG: String = "ArchiveObjectListAdapte"
|
||||
}
|
||||
|
||||
// init {
|
||||
// archiveObject?.apply {
|
||||
// val map = when (archiveString) {
|
||||
// FirebaseClass.PRIVATE_HIRE_FIREBASE -> private_hire
|
||||
// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> driver_license
|
||||
// FirebaseClass.VEHICLE_DETAILS_FIREBASE -> vehicle_details
|
||||
// FirebaseClass.MOT_FIREBASE -> mot_details
|
||||
// FirebaseClass.INSURANCE_FIREBASE -> insurance_details
|
||||
// FirebaseClass.LOG_BOOK_FIREBASE -> log_book
|
||||
// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> ph_car
|
||||
// else -> null
|
||||
// }
|
||||
// setUp(map)
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
private fun setUp(map: HashMap<String,*>?){
|
||||
size = map?.size ?: 0
|
||||
map?.keys?.toTypedArray()?.let{
|
||||
mKeys = it
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package h_mal.appttude.com.driver.application
|
||||
package h_mal.appttude.com.application
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.viewmodels.*
|
||||
import h_mal.appttude.com.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.viewmodels.*
|
||||
|
||||
class ApplicationViewModelFactory(
|
||||
private val auth: FirebaseAuthSource,
|
||||
@@ -28,6 +28,7 @@ class ApplicationViewModelFactory(
|
||||
isAssignableFrom(MotViewModel::class.java) -> MotViewModel(auth, database, storage)
|
||||
isAssignableFrom(LogbookViewModel::class.java) -> LogbookViewModel(auth, database, storage)
|
||||
isAssignableFrom(PrivateHireVehicleViewModel::class.java) -> PrivateHireVehicleViewModel(auth, database, storage)
|
||||
isAssignableFrom(RoleViewModel::class.java) -> RoleViewModel(auth, database, storage)
|
||||
else -> throw IllegalArgumentException("Unknown ViewModel class")
|
||||
} as T
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
package h_mal.appttude.com.driver.application
|
||||
package h_mal.appttude.com.application
|
||||
|
||||
import android.app.Application
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.espresso.IdlingResourceClass
|
||||
import org.kodein.di.Kodein
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.x.androidXModule
|
||||
@@ -1,9 +1,8 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
package h_mal.appttude.com.base
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewGroup.LayoutParams
|
||||
import android.view.ViewGroup.LayoutParams.*
|
||||
import androidx.activity.viewModels
|
||||
@@ -11,13 +10,14 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.displayToast
|
||||
import h_mal.appttude.com.driver.utils.hide
|
||||
import h_mal.appttude.com.driver.utils.show
|
||||
import h_mal.appttude.com.driver.utils.triggerAnimation
|
||||
import h_mal.appttude.com.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.data.ViewState
|
||||
import h_mal.appttude.com.espresso.IdlingResourceClass
|
||||
import h_mal.appttude.com.utils.displayToast
|
||||
import h_mal.appttude.com.utils.hide
|
||||
import h_mal.appttude.com.utils.show
|
||||
import h_mal.appttude.com.utils.triggerAnimation
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.kodein
|
||||
import org.kodein.di.generic.instance
|
||||
@@ -32,6 +32,7 @@ abstract class BaseActivity<V : BaseViewModel> : AppCompatActivity(), KodeinAwar
|
||||
|
||||
override val kodein by kodein()
|
||||
val factory by instance<ApplicationViewModelFactory>()
|
||||
private val idlingResource by instance<IdlingResourceClass>()
|
||||
|
||||
inline fun <reified VM : ViewModel> createLazyViewModel(): Lazy<VM> = viewModels { factory }
|
||||
inline fun <reified VM : ViewModel> createViewModel(): VM =
|
||||
@@ -56,7 +57,6 @@ abstract class BaseActivity<V : BaseViewModel> : AppCompatActivity(), KodeinAwar
|
||||
loadingView = layoutInflater.inflate(R.layout.progress_layout, null)
|
||||
loadingView.setOnClickListener(null)
|
||||
addContentView(loadingView, LayoutParams(MATCH_PARENT, MATCH_PARENT))
|
||||
|
||||
loadingView.hide()
|
||||
}
|
||||
|
||||
@@ -76,6 +76,7 @@ abstract class BaseActivity<V : BaseViewModel> : AppCompatActivity(), KodeinAwar
|
||||
open fun onStarted() {
|
||||
loadingView.fadeIn()
|
||||
loading = true
|
||||
IdlingResourceClass.increment()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,6 +85,7 @@ abstract class BaseActivity<V : BaseViewModel> : AppCompatActivity(), KodeinAwar
|
||||
open fun onSuccess(data: Any?) {
|
||||
loadingView.fadeOut()
|
||||
loading = false
|
||||
IdlingResourceClass.decrement()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,6 +95,7 @@ abstract class BaseActivity<V : BaseViewModel> : AppCompatActivity(), KodeinAwar
|
||||
error?.let { displayToast(it) }
|
||||
loadingView.fadeOut()
|
||||
loading = false
|
||||
IdlingResourceClass.decrement()
|
||||
}
|
||||
|
||||
private fun configureObserver() {
|
||||
@@ -1,34 +1,32 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
package h_mal.appttude.com.base
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.ClipData
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModel
|
||||
import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils
|
||||
import h_mal.appttude.com.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.data.ViewState
|
||||
import h_mal.appttude.com.utils.PermissionsUtils
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.x.kodein
|
||||
import org.kodein.di.generic.instance
|
||||
|
||||
const val IMAGE_SELECT_REQUEST_CODE = 401
|
||||
abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
|
||||
abstract class BaseFragment<V : BaseViewModel>(@LayoutRes contentLayoutId: Int) :
|
||||
Fragment(contentLayoutId), KodeinAware {
|
||||
|
||||
var mActivity: BaseActivity<V>? = null
|
||||
abstract fun getViewModel(): V
|
||||
abstract fun getLayoutId(): Int
|
||||
|
||||
private var multipleImage: Boolean = false
|
||||
|
||||
fun setImageSelectionAsMultiple(){
|
||||
fun setImageSelectionAsMultiple() {
|
||||
multipleImage = true
|
||||
}
|
||||
|
||||
@@ -37,12 +35,6 @@ abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
|
||||
inline fun <reified VM : ViewModel> getFragmentViewModel(): Lazy<VM> = viewModels { factory }
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? = inflater.inflate(getLayoutId(), container, false)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
super.onActivityCreated(savedInstanceState)
|
||||
@@ -72,22 +64,22 @@ abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
}
|
||||
|
||||
private fun configureObserver() {
|
||||
getViewModel().uiState.observe(viewLifecycleOwner, Observer {
|
||||
getViewModel().uiState.observe(viewLifecycleOwner) {
|
||||
when (it) {
|
||||
is ViewState.HasStarted -> onStarted()
|
||||
is ViewState.HasData<*> -> onSuccess(it.data.getContentIfNotHandled())
|
||||
is ViewState.HasError -> onFailure(it.error.getContentIfNotHandled())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
if (resultCode == Activity.RESULT_OK){
|
||||
when(requestCode){
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
when (requestCode) {
|
||||
IMAGE_SELECT_REQUEST_CODE -> {
|
||||
data?.clipData?.convertToList()?.let { clip ->
|
||||
val list = clip.takeIf { it.size > 10 }?.let{
|
||||
val list = clip.takeIf { it.size > 10 }?.let {
|
||||
clip.subList(0, 9)
|
||||
} ?: clip
|
||||
onImageGalleryResult(list)
|
||||
@@ -100,15 +92,7 @@ abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
}
|
||||
}
|
||||
|
||||
private fun ClipData.convertToList(): List<Uri> {
|
||||
val list = mutableListOf<Uri>()
|
||||
for (i in 0 until itemCount) {
|
||||
val item: ClipData.Item = getItemAt(i)
|
||||
val uri = item.uri
|
||||
list.add(uri)
|
||||
}
|
||||
return list.toList()
|
||||
}
|
||||
private fun ClipData.convertToList(): List<Uri> = 0.rangeTo(itemCount).map { getItemAt(it).uri }
|
||||
|
||||
/**
|
||||
* Pair with {@link #Fragment.onRequestPermissionsResult}
|
||||
@@ -121,7 +105,7 @@ abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
fun onPermissionRequest(
|
||||
requestCode: Int, ourRequestCode: Int, grantResults: IntArray,
|
||||
permissionGranted: () -> Unit
|
||||
){
|
||||
) {
|
||||
when (requestCode) {
|
||||
ourRequestCode -> {
|
||||
if (PermissionsUtils.isGranted(grantResults)) {
|
||||
@@ -132,13 +116,20 @@ abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
}
|
||||
}
|
||||
|
||||
open fun onImageGalleryResult(imageUri: Uri?){ }
|
||||
open fun onImageGalleryResult(imageUris: List<Uri>?){ }
|
||||
/**
|
||||
* Called on the result of image selection
|
||||
*/
|
||||
open fun onImageGalleryResult(imageUri: Uri?) {}
|
||||
|
||||
/**
|
||||
* Called on the result of multiple image selection
|
||||
*/
|
||||
open fun onImageGalleryResult(imageUris: List<Uri>?) {}
|
||||
|
||||
fun openGalleryForImage() {
|
||||
val intent = Intent(Intent.ACTION_PICK)
|
||||
intent.type = "image/*"
|
||||
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multipleImage);
|
||||
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multipleImage)
|
||||
startActivityForResult(intent, IMAGE_SELECT_REQUEST_CODE)
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
package h_mal.appttude.com.base
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.Event
|
||||
import h_mal.appttude.com.data.ViewState
|
||||
import h_mal.appttude.com.utils.Event
|
||||
|
||||
abstract class BaseViewModel: ViewModel(){
|
||||
open val uiState: MutableLiveData<ViewState> = MutableLiveData()
|
||||
@@ -1,16 +1,21 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
package h_mal.appttude.com.base
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEditText
|
||||
import h_mal.appttude.com.data.UserAuthState
|
||||
import h_mal.appttude.com.ui.user.LoginActivity
|
||||
import h_mal.appttude.com.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEditText
|
||||
|
||||
private const val IMAGE_PERMISSION_RESULT = 402
|
||||
abstract class DataSubmissionBaseFragment<V : DataSubmissionBaseViewModel<T>, T: Any> : BaseFragment<BaseViewModel>(){
|
||||
abstract class DataSubmissionBaseFragment<V : DataSubmissionBaseViewModel<T>, T: Any>
|
||||
(@LayoutRes contentLayoutId: Int) : BaseFragment<BaseViewModel>(contentLayoutId){
|
||||
|
||||
var picUri: Uri? = null
|
||||
|
||||
@@ -19,10 +24,17 @@ abstract class DataSubmissionBaseFragment<V : DataSubmissionBaseViewModel<T>, T:
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
getViewModel().stateLiveData.observe(viewLifecycleOwner) {
|
||||
if (it is UserAuthState.LoggedOut) {
|
||||
val intent = Intent(requireContext(), LoginActivity::class.java)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
startActivity(intent)
|
||||
requireActivity().finish()
|
||||
}
|
||||
}
|
||||
getViewModel().getDataFromDatabase()
|
||||
}
|
||||
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
@@ -37,9 +49,7 @@ abstract class DataSubmissionBaseFragment<V : DataSubmissionBaseViewModel<T>, T:
|
||||
model = data
|
||||
}
|
||||
|
||||
open fun submit(){
|
||||
|
||||
}
|
||||
open fun submit(){}
|
||||
|
||||
fun openGalleryWithPermissionRequest(){
|
||||
if (askForPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, IMAGE_PERMISSION_RESULT)) {
|
||||
@@ -1,23 +1,25 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
package h_mal.appttude.com.base
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
|
||||
import h_mal.appttude.com.driver.utils.getDataFromDatabaseRef
|
||||
import h_mal.appttude.com.data.*
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
import h_mal.appttude.com.utils.DateUtils.getDateTimeStamp
|
||||
import h_mal.appttude.com.utils.getDataFromDatabaseRef
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import java.io.IOException
|
||||
|
||||
abstract class DataSubmissionBaseViewModel<T : Any>(
|
||||
auth: FirebaseAuthentication,
|
||||
private val database: FirebaseDatabaseSource,
|
||||
private val storage: FirebaseStorageSource?
|
||||
) : BaseViewModel() {
|
||||
val stateLiveData = auth.userStateListener()
|
||||
val uid: String = auth.getUid() ?: ""
|
||||
|
||||
abstract val databaseRef: DatabaseReference
|
||||
abstract val storageRef: StorageReference?
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
sealed class DataFieldState {
|
||||
object DefaultState : DataFieldState()
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
@@ -1,8 +1,9 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.android.gms.tasks.Task
|
||||
import com.google.firebase.auth.*
|
||||
import java.io.IOException
|
||||
|
||||
class FirebaseAuthSource: FirebaseAuthentication{
|
||||
private val auth = FirebaseAuth.getInstance()
|
||||
@@ -24,25 +25,32 @@ class FirebaseAuthSource: FirebaseAuthentication{
|
||||
override fun updateProfile(
|
||||
name: String?,
|
||||
profilePic: Uri?
|
||||
): Task<Void>? {
|
||||
): Task<Void> {
|
||||
val profileUpdates = UserProfileChangeRequest.Builder().apply {
|
||||
name?.let { setDisplayName(it) }
|
||||
profilePic?.let { setPhotoUri(it) }
|
||||
}.build()
|
||||
|
||||
return getUser()?.updateProfile(profileUpdates)
|
||||
return getCurrentUser().updateProfile(profileUpdates)
|
||||
}
|
||||
|
||||
override fun reauthenticate(
|
||||
email: String,
|
||||
password: String
|
||||
): Task<Void>? {
|
||||
): Task<Void> {
|
||||
val credential = EmailAuthProvider.getCredential(email, password)
|
||||
|
||||
return getUser()?.reauthenticate(credential)
|
||||
return getCurrentUser().reauthenticate(credential)
|
||||
}
|
||||
|
||||
override fun updateEmail(email: String): Task<Void>? = getUser()?.updateEmail(email)
|
||||
override fun updatePassword(password: String): Task<Void>? = getUser()?.updatePassword(password)
|
||||
override fun deleteProfile() = getUser()?.delete()
|
||||
override fun updateEmail(email: String): Task<Void> = getCurrentUser().updateEmail(email)
|
||||
override fun updatePassword(password: String): Task<Void> = getCurrentUser().updatePassword(password)
|
||||
override fun deleteProfile(): Task<Void> = getCurrentUser().delete()
|
||||
|
||||
|
||||
override fun userStateListener() : FirebaseLiveData {
|
||||
return FirebaseLiveData(auth)
|
||||
}
|
||||
|
||||
private fun getCurrentUser(): FirebaseUser{
|
||||
return getUser() ?: throw IOException("User not signed in")
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.android.gms.tasks.Task
|
||||
@@ -15,12 +15,13 @@ interface FirebaseAuthentication{
|
||||
fun updateProfile(
|
||||
name: String?,
|
||||
profilePic: Uri?
|
||||
): Task<Void>?
|
||||
): Task<Void>
|
||||
fun reauthenticate(
|
||||
email: String,
|
||||
password: String
|
||||
): Task<Void>?
|
||||
fun updateEmail(email: String): Task<Void>?
|
||||
fun updatePassword(password: String): Task<Void>?
|
||||
fun deleteProfile(): Task<Void>?
|
||||
): Task<Void>
|
||||
fun updateEmail(email: String): Task<Void>
|
||||
fun updatePassword(password: String): Task<Void>
|
||||
fun deleteProfile(): Task<Void>
|
||||
fun userStateListener() : FirebaseLiveData
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
sealed class FirebaseCompletion{
|
||||
object Default: FirebaseCompletion()
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.FirebaseDatabase
|
||||
@@ -0,0 +1,28 @@
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
|
||||
class FirebaseLiveData(
|
||||
private val firebaseAuth: FirebaseAuth
|
||||
): LiveData<UserAuthState>(){
|
||||
|
||||
override fun onActive() {
|
||||
super.onActive()
|
||||
firebaseAuth.addAuthStateListener(stateListener)
|
||||
}
|
||||
|
||||
override fun onInactive() {
|
||||
super.onInactive()
|
||||
firebaseAuth.removeAuthStateListener(stateListener)
|
||||
}
|
||||
|
||||
private val stateListener = FirebaseAuth.AuthStateListener { p0 ->
|
||||
if (p0.currentUser == null) {
|
||||
postValue(UserAuthState.LoggedOut)
|
||||
} else {
|
||||
postValue(UserAuthState.LoggedIn(p0.currentUser!!))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.storage.FirebaseStorage
|
||||
4
app/src/main/java/h_mal/appttude/com/data/Roles.kt
Normal file
4
app/src/main/java/h_mal/appttude/com/data/Roles.kt
Normal file
@@ -0,0 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
const val DRIVER = "driver"
|
||||
const val ADMIN = "super_user"
|
||||
@@ -0,0 +1,9 @@
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import h_mal.appttude.com.utils.Event
|
||||
|
||||
sealed class UserAuthState {
|
||||
object LoggedOut : UserAuthState()
|
||||
class LoggedIn(val data: FirebaseUser) : UserAuthState()
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
import h_mal.appttude.com.driver.utils.Event
|
||||
import h_mal.appttude.com.utils.Event
|
||||
|
||||
|
||||
sealed class ViewState {
|
||||
@@ -1,30 +1,34 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
package h_mal.appttude.com.dialogs
|
||||
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.app.DatePickerDialog
|
||||
import android.app.DatePickerDialog.OnDateSetListener
|
||||
import android.content.Context
|
||||
import android.icu.util.Calendar
|
||||
import android.os.Build
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import androidx.annotation.RequiresApi
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.utils.DateUtils
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.utils.DateUtils
|
||||
|
||||
|
||||
private const val DATE_FORMAT = "dd/MM/yyyy"
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
class DateDialog(
|
||||
private val editText: EditText
|
||||
private val editText: EditText,
|
||||
dateSelected:(String?) -> Unit
|
||||
) : DatePickerDialog(editText.context, AlertDialog.THEME_HOLO_LIGHT) {
|
||||
|
||||
var dateSetListener: OnDateSetListener =
|
||||
private val dateSetListener: OnDateSetListener =
|
||||
OnDateSetListener { _, year, month, dayOfMonth ->
|
||||
val cal = Calendar.getInstance()
|
||||
cal.set(year, month + 1, dayOfMonth)
|
||||
|
||||
editText.setText(DateUtils.parseCalenderIntoDateString(cal, DATE_FORMAT))
|
||||
val date = DateUtils.parseCalenderIntoDateString(cal, DATE_FORMAT)
|
||||
dateSelected(date)
|
||||
editText.setText(date)
|
||||
editText.error = null
|
||||
}
|
||||
|
||||
init {
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.dialogs
|
||||
package h_mal.appttude.com.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.AlertDialog
|
||||
@@ -10,11 +10,11 @@ object ExitDialog{
|
||||
fun Activity.displayExitDialog() = AlertDialog.Builder(this)
|
||||
.setTitle("Leave?")
|
||||
.setMessage("Are you sure you want to exit?")
|
||||
.setNegativeButton(android.R.string.no, null)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(
|
||||
android.R.string.yes
|
||||
android.R.string.ok
|
||||
) { _, _ ->
|
||||
this.finish()
|
||||
finish()
|
||||
exitProcess(0)
|
||||
}
|
||||
.create()
|
||||
@@ -1,227 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Archive
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import com.squareup.picasso.Picasso
|
||||
import h_mal.appttude.com.driver.Global.FirebaseClass
|
||||
import h_mal.appttude.com.driver.Global.ImageSwiperClass
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.driver.Objects.InsuranceObject
|
||||
import h_mal.appttude.com.driver.Objects.LogbookObject
|
||||
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.convertDateStringDatePattern
|
||||
import java.text.ParseException
|
||||
|
||||
class ArchiveObjectListAdapter(
|
||||
var archiveObject: ArchiveObject?,
|
||||
var context: Context?,
|
||||
var archiveString: String?
|
||||
) : BaseAdapter() {
|
||||
var size: Int = 0
|
||||
lateinit var mKeys: Array<String>
|
||||
private var dateArchivedText: TextView? = null
|
||||
override fun getCount(): Int {
|
||||
return size
|
||||
}
|
||||
|
||||
override fun getItem(position: Int): Any? {
|
||||
when (archiveString) {
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE -> return archiveObject?.private_hire
|
||||
?.get(mKeys[position])
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE -> return archiveObject?.driver_license
|
||||
?.get(mKeys[position])
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE -> return archiveObject?.vehicle_details
|
||||
?.get(mKeys[position])
|
||||
FirebaseClass.MOT_FIREBASE -> return archiveObject?.mot_details?.get(mKeys[position])
|
||||
FirebaseClass.INSURANCE_FIREBASE -> return archiveObject?.insurance_details?.get(
|
||||
mKeys[position]
|
||||
)
|
||||
FirebaseClass.LOG_BOOK_FIREBASE -> return archiveObject?.log_book
|
||||
?.get(mKeys.get(position))
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> return archiveObject?.ph_car?.get(mKeys[position])
|
||||
else -> return mKeys[position]
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemId(position: Int): Long {
|
||||
return position.toLong()
|
||||
}
|
||||
|
||||
override fun getView(position: Int, convertView: View, parent: ViewGroup): View {
|
||||
var listItemView: View = convertView
|
||||
if (listItemView == null) {
|
||||
if (((archiveString == FirebaseClass.PRIVATE_HIRE_FIREBASE) || (archiveString == FirebaseClass.DRIVERS_LICENSE_FIREBASE) || (archiveString == FirebaseClass.MOT_FIREBASE) || (archiveString == FirebaseClass.LOG_BOOK_FIREBASE) || (archiveString == FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE))) {
|
||||
listItemView = LayoutInflater.from(context).inflate(
|
||||
R.layout.archive_license_item, parent, false
|
||||
)
|
||||
val imageView: ImageView = listItemView.findViewById(R.id.image_archive)
|
||||
dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
val expiryHolder: LinearLayout = listItemView.findViewById(R.id.expiry_view)
|
||||
val fieldTwo: LinearLayout = listItemView.findViewById(R.id.field_two_view)
|
||||
val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
|
||||
val fiewTwoLable: TextView = listItemView.findViewById(R.id.field_two)
|
||||
val fieldTwoText: TextView = listItemView.findViewById(R.id.field_two_text)
|
||||
when (archiveString) {
|
||||
// FirebaseClass.PRIVATE_HIRE_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val privateHireObject: PrivateHireObject =
|
||||
// getItem(position) as PrivateHireObject
|
||||
// Picasso.get().load(privateHireObject.phImageString)
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(imageView)
|
||||
// dateString(position)
|
||||
// expiryText.text = privateHireObject.phExpiry
|
||||
// fiewTwoLable.text = "Private Hire License No.:"
|
||||
// fieldTwoText.text = privateHireObject.phNumber
|
||||
// }
|
||||
// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val driversLicenseObject: DriversLicenseObject =
|
||||
// getItem(position) as DriversLicenseObject
|
||||
// Picasso.get().load(driversLicenseObject.licenseImageString)
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(imageView)
|
||||
// dateString(position)
|
||||
// expiryText.text = driversLicenseObject.licenseExpiry
|
||||
// fiewTwoLable.text = "License No.:"
|
||||
// fieldTwoText.text = driversLicenseObject.licenseNumber
|
||||
// }
|
||||
// FirebaseClass.MOT_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.GONE
|
||||
// val motObject: MotObject = getItem(position) as MotObject
|
||||
// Picasso.get().load(motObject.motImageString)
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(imageView)
|
||||
// dateString(position)
|
||||
// expiryText.text = motObject.motExpiry
|
||||
// }
|
||||
// FirebaseClass.LOG_BOOK_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.GONE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val logbookObject: LogbookObject = getItem(position) as LogbookObject
|
||||
// Picasso.get().load(logbookObject.photoString)
|
||||
// .into(MainActivity.loadImage(imageView))
|
||||
// dateString(position)
|
||||
// fiewTwoLable.text = "V5C No.:"
|
||||
// fieldTwoText.text = logbookObject.v5cnumber
|
||||
// }
|
||||
// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val privateHireVehicleObject: PrivateHireVehicleObject =
|
||||
// getItem(position) as PrivateHireVehicleObject
|
||||
// Picasso.get().load(privateHireVehicleObject.phCarImageString)
|
||||
// .into(MainActivity.loadImage(imageView))
|
||||
// dateString(position)
|
||||
// expiryText.text = privateHireVehicleObject.phCarExpiry
|
||||
// fiewTwoLable.text = "Private Hire Vehicle License No.:"
|
||||
// fieldTwoText.text = privateHireVehicleObject.phCarNumber
|
||||
// }
|
||||
}
|
||||
} else if ((archiveString == FirebaseClass.INSURANCE_FIREBASE)) {
|
||||
listItemView = LayoutInflater.from(context).inflate(
|
||||
R.layout.archive_insurance_item, parent, false
|
||||
)
|
||||
val holder: View = listItemView.findViewById(R.id.image_pager)
|
||||
val swiperClass: ImageSwiperClass = ImageSwiperClass(context, holder)
|
||||
// swiperClass.hideDelete();
|
||||
listItemView.findViewById<View>(R.id.delete).visibility = View.GONE
|
||||
// holder.findViewById(R.id.delete).setVisibility(View.INVISIBLE);
|
||||
dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
dateString(position)
|
||||
val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
|
||||
val fieldTwoText: TextView = listItemView.findViewById(R.id.archive_insurer)
|
||||
val insuranceObject: InsuranceObject = getItem(position) as InsuranceObject
|
||||
// swiperClass.reinstantiateList(insuranceObject.photoStrings)
|
||||
expiryText.text = insuranceObject.expiryDate
|
||||
fieldTwoText.text = insuranceObject.insurerName
|
||||
} else if ((archiveString == FirebaseClass.VEHICLE_DETAILS_FIREBASE)) {
|
||||
listItemView = LayoutInflater.from(context).inflate(
|
||||
R.layout.archive_vehicle_item, parent, false
|
||||
)
|
||||
dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
dateString(position)
|
||||
val numberPlate: TextView = listItemView.findViewById(R.id.number_plate)
|
||||
val keeperName: TextView = listItemView.findViewById(R.id.keeper_name)
|
||||
val keeperAddress: TextView = listItemView.findViewById(R.id.keeper_address)
|
||||
val carText: TextView = listItemView.findViewById(R.id.car_text_arch)
|
||||
val carColour: TextView = listItemView.findViewById(R.id.car_colour)
|
||||
val carSeized: TextView = listItemView.findViewById(R.id.seized_checkbox)
|
||||
val startDate: TextView = listItemView.findViewById(R.id.first_date)
|
||||
val vehicleProfileObject: VehicleProfileObject =
|
||||
getItem(position) as VehicleProfileObject
|
||||
numberPlate.text = vehicleProfileObject.reg
|
||||
keeperName.text = vehicleProfileObject.keeperName
|
||||
keeperAddress.text = vehicleProfileObject.keeperAddress + "\n" + vehicleProfileObject.keeperPostCode
|
||||
carText.text = vehicleProfileObject.make + " " + vehicleProfileObject.model
|
||||
carColour.text = vehicleProfileObject.colour
|
||||
val s: String
|
||||
if (vehicleProfileObject.isSeized) {
|
||||
s = "Yes"
|
||||
} else {
|
||||
s = "No"
|
||||
}
|
||||
carSeized.text = s
|
||||
startDate.text = vehicleProfileObject.startDate
|
||||
}
|
||||
}
|
||||
return listItemView
|
||||
}
|
||||
|
||||
private fun dateString(position: Int) {
|
||||
var success: Boolean = true
|
||||
try {
|
||||
dateArchivedText!!.text = mKeys[position].convertDateStringDatePattern("yyyyMMdd_HHmmss", "dd/MM/yyyy")
|
||||
} catch (e: ParseException) {
|
||||
e.printStackTrace()
|
||||
success = false
|
||||
} finally {
|
||||
if (!success) {
|
||||
dateArchivedText!!.text = mKeys.get(position).substring(0, 8)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG: String = "ArchiveObjectListAdapte"
|
||||
}
|
||||
|
||||
init {
|
||||
archiveObject?.apply {
|
||||
val map = when (archiveString) {
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE -> private_hire
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE -> driver_license
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE -> vehicle_details
|
||||
FirebaseClass.MOT_FIREBASE -> mot_details
|
||||
FirebaseClass.INSURANCE_FIREBASE -> insurance_details
|
||||
FirebaseClass.LOG_BOOK_FIREBASE -> log_book
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> ph_car
|
||||
else -> null
|
||||
}
|
||||
setUp(map)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun setUp(map: HashMap<String,*>?){
|
||||
size = map?.size ?: 0
|
||||
map?.keys?.toTypedArray()?.let{
|
||||
mKeys = it
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import h_mal.appttude.com.driver.Objects.ApprovalsObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeDriverObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class ApprovalsClass {
|
||||
fun getOverApprovalStatusCode(wholeDriverObject: WholeDriverObject?): Int {
|
||||
if (wholeDriverObject!!.approvalsObject != null) {
|
||||
val approvalsObject: ApprovalsObject = wholeDriverObject!!.approvalsObject!!
|
||||
val ints: IntArray = intArrayOf(
|
||||
approvalsObject.driver_details_approval,
|
||||
approvalsObject.driver_license_approval,
|
||||
approvalsObject.private_hire_approval,
|
||||
approvalsObject.vehicle_details_approval,
|
||||
approvalsObject.insurance_details_approval,
|
||||
approvalsObject.mot_details_approval,
|
||||
approvalsObject.log_book_approval,
|
||||
approvalsObject.ph_car_approval
|
||||
)
|
||||
return setImageResource(mode(ints))
|
||||
}
|
||||
return setImageResource(FirebaseClass.NO_DATE_PRESENT)
|
||||
}
|
||||
|
||||
fun setStatusCode(userId: String?, approvalNameString: String, status: Int) {
|
||||
// if (!(approvalNameString == "")) {
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE)
|
||||
// .child((userId)!!).child(FirebaseClass.USER_APPROVALS)
|
||||
// .child(approvalNameString)
|
||||
// .setValue(status).addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// } else {
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
fun setImageResource(statusCode: Int): Int {
|
||||
val imageResource: Int
|
||||
when (statusCode) {
|
||||
FirebaseClass.APPROVAL_PENDING -> imageResource = R.drawable.pending
|
||||
FirebaseClass.APPROVAL_DENIED -> imageResource = R.drawable.denied
|
||||
FirebaseClass.APPROVED -> imageResource = R.drawable.approved
|
||||
else -> imageResource = R.drawable.zero
|
||||
}
|
||||
return imageResource
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun mode(array: IntArray): Int {
|
||||
var mode: Int = array.get(0)
|
||||
var maxCount: Int = 0
|
||||
if (matchedArray(array, 3)) {
|
||||
return 3
|
||||
} else if (matchedArray(array, 0)) {
|
||||
return 0
|
||||
} else {
|
||||
for (i in array.indices) {
|
||||
val value: Int = array.get(i)
|
||||
var count: Int = 1
|
||||
for (j in array.indices) {
|
||||
if (array.get(j) == value) count++
|
||||
if (count > maxCount) {
|
||||
mode = value
|
||||
maxCount = count
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mode == 3) {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
return mode
|
||||
}
|
||||
|
||||
private fun matchedArray(array: IntArray, match: Int): Boolean {
|
||||
for (i: Int in array) {
|
||||
if (i != match) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.utils.UPLOAD_NEW
|
||||
|
||||
|
||||
class ArchiveClass {
|
||||
fun archiveRecord(UID: String?, item: String?, `object`: Any?) {
|
||||
// val toPath: DatabaseReference =
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
|
||||
// (UID)!!
|
||||
// )
|
||||
// .child(FirebaseClass.ARCHIVE_FIREBASE).child((item)!!)
|
||||
// toPath.child(MainActivity.dateTimeStamp).setValue(`object`)
|
||||
// .addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// Log.i(TAG, "onComplete: archive successful")
|
||||
// } else {
|
||||
// Log.i(TAG, "onComplete: archive unsuccessful")
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
fun openDialogArchive(context: Context?, `object`: Any?, fragment: Fragment) {
|
||||
if (`object` == null) {
|
||||
// executeFragment(fragment)
|
||||
} else {
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
builder.setMessage("Do you want to View/Edit or Upload new?")
|
||||
.setPositiveButton("View/Edit"
|
||||
) { _, _ ->
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.setNegativeButton("Upload New"
|
||||
) { _, _ ->
|
||||
val bundle = Bundle()
|
||||
bundle.putString(UPLOAD_NEW, "Yes")
|
||||
fragment.arguments = bundle
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.create().show()
|
||||
}
|
||||
}
|
||||
|
||||
fun openDialogArchive(context: Context?, `object`: Any?, user: String?, fragment: Fragment?) {
|
||||
val bundle: Bundle = Bundle()
|
||||
bundle.putString("user_id", user)
|
||||
fragment!!.arguments = bundle
|
||||
if (`object` == null) {
|
||||
// executeFragment(fragment)
|
||||
} else {
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
builder.setMessage("Do you want to View/Edit or Upload new?")
|
||||
.setPositiveButton("View/Edit"
|
||||
) { _, _ ->
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.setNegativeButton("Upload New"
|
||||
) { _, _ ->
|
||||
bundle.putString(UPLOAD_NEW, "Yes")
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.create().show()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
|
||||
class FirebaseClass constructor(var context: Context?, var filePath: Uri?, var delegate: Response) {
|
||||
open interface Response {
|
||||
fun processFinish(output: Uri?)
|
||||
}
|
||||
|
||||
fun uploadImage(path: String, name: String) {
|
||||
// if (filePath != null) {
|
||||
// val progressDialog: ProgressDialog = ProgressDialog(context)
|
||||
// progressDialog.setTitle("Uploading...")
|
||||
// progressDialog.show()
|
||||
// val ref: StorageReference = MainActivity.storageReference!!.child(
|
||||
// ("images/" + MainActivity.auth!!.currentUser!!
|
||||
// .uid + "/" + path
|
||||
// + "/" + name)
|
||||
// )
|
||||
// val uploadTask: UploadTask = ref.putFile(filePath!!)
|
||||
// uploadTask.addOnProgressListener { taskSnapshot ->
|
||||
// val progress: Double =
|
||||
// (100.0 * taskSnapshot.bytesTransferred / taskSnapshot
|
||||
// .totalByteCount)
|
||||
// progressDialog.setMessage("Uploaded " + progress.toInt() + "%")
|
||||
// }.continueWithTask { task ->
|
||||
// if (!task.isSuccessful) {
|
||||
// throw (task.exception)!!
|
||||
// }
|
||||
//
|
||||
// // Continue with the task to get the download URL
|
||||
// ref.downloadUrl
|
||||
// }.addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// delegate.processFinish(task.result)
|
||||
// progressDialog.dismiss()
|
||||
// context?.displayToast("Uploaded Successfully")
|
||||
// println("onComplete: uploaded Successful uri: " + task.result)
|
||||
// } else {
|
||||
// delegate.processFinish(null)
|
||||
// progressDialog.dismiss()
|
||||
// context?.displayToast("Uploaded Successfully")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
companion object {
|
||||
val USER_FIREBASE: String = "user"
|
||||
val DRIVER_FIREBASE: String = "driver_profile"
|
||||
val DRIVER_DETAILS_FIREBASE: String = "driver_details"
|
||||
val PRIVATE_HIRE_FIREBASE: String = "private_hire"
|
||||
val DRIVERS_LICENSE_FIREBASE: String = "driver_license"
|
||||
val DRIVER_STATUS: String = "driver_status"
|
||||
val USER_APPROVALS: String = "approvalsObject"
|
||||
val APPROVAL_CONSTANT: String = "_approval"
|
||||
val ARCHIVE_FIREBASE: String = "archive"
|
||||
val DRIVER_NUMBER: String = "driver_number"
|
||||
val VEHICLE_FIREBASE: String = "vehicle_profile"
|
||||
val MOT_FIREBASE: String = "mot_details"
|
||||
val VEHICLE_DETAILS_FIREBASE: String = "vehicle_details"
|
||||
val INSURANCE_FIREBASE: String = "insurance_details"
|
||||
val LOG_BOOK_FIREBASE: String = "log_book"
|
||||
val PRIVATE_HIRE_VEHICLE_LICENSE: String = "private_hire_vehicle"
|
||||
val NO_DATE_PRESENT: Int = 0
|
||||
val APPROVAL_PENDING: Int = 1
|
||||
val APPROVAL_DENIED: Int = 2
|
||||
val APPROVED: Int = 3
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.icu.text.SimpleDateFormat
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.provider.MediaStore
|
||||
import android.widget.Button
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.R
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
class ImageSelectorDialog : Dialog {
|
||||
private val TAG: String = this.javaClass.simpleName
|
||||
private var saveFileName: String
|
||||
var fragment: Fragment? = null
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
saveFileName = "default_name"
|
||||
}
|
||||
|
||||
constructor(context: Context, themeResId: Int) : super(context, themeResId) {
|
||||
saveFileName = "default_name"
|
||||
}
|
||||
|
||||
protected constructor(
|
||||
context: Context,
|
||||
cancelable: Boolean,
|
||||
cancelListener: DialogInterface.OnCancelListener?
|
||||
) : super(context, cancelable, cancelListener) {
|
||||
saveFileName = "default_name"
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.address_dialog)
|
||||
|
||||
//check if we have we have storage rights
|
||||
val permissionPic: Int = ActivityCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||
)
|
||||
val permissionCam: Int =
|
||||
ActivityCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
|
||||
// fragment = MainActivity.mainFragmentManager.fragments[0]
|
||||
val upload: Button = findViewById(R.id.upload)
|
||||
val takePic: Button = findViewById(R.id.take_pic)
|
||||
upload.setOnClickListener {
|
||||
if (permissionPic == PackageManager.PERMISSION_GRANTED) {
|
||||
chooseImage()
|
||||
} else {
|
||||
Toast.makeText(context, "Storage permissions required", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
ActivityCompat.requestPermissions(
|
||||
(fragment!!.requireActivity()),
|
||||
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
|
||||
STORAGE_PERMISSION_CODE
|
||||
)
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
takePic.setOnClickListener {
|
||||
if (permissionCam == PackageManager.PERMISSION_GRANTED) {
|
||||
val cameraIntent: Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
|
||||
val file: File = createFile()
|
||||
photoURI = Uri.fromFile(file)
|
||||
val imageUri: Uri = FileProvider.getUriForFile(
|
||||
context,
|
||||
"h_mal.appttude.com.driver",
|
||||
file
|
||||
)
|
||||
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
|
||||
fragment!!.startActivityForResult(cameraIntent, CAMERA_REQUEST)
|
||||
} else {
|
||||
Toast.makeText(context, "Camera Permissions required", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
ActivityCompat.requestPermissions(
|
||||
(fragment!!.requireActivity()), arrayOf(Manifest.permission.CAMERA),
|
||||
MY_CAMERA_PERMISSION_CODE
|
||||
)
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
fun setImageName(saveFileName: String) {
|
||||
this.saveFileName = saveFileName
|
||||
}
|
||||
|
||||
private fun createFile(): File {
|
||||
//create directory
|
||||
val root: File = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
|
||||
//create file
|
||||
val sdf: SimpleDateFormat = SimpleDateFormat("yyyyMMdd_HHmm")
|
||||
val currentDateandTime: String = sdf.format(Date())
|
||||
val fname: String = saveFileName + currentDateandTime
|
||||
val image: File = File(root, fname)
|
||||
return image
|
||||
}
|
||||
|
||||
private fun chooseImage() {
|
||||
val intent: Intent = Intent()
|
||||
intent.type = "image/*"
|
||||
intent.action = Intent.ACTION_GET_CONTENT
|
||||
fragment!!.startActivityForResult(
|
||||
Intent.createChooser(intent, "Select Picture"),
|
||||
PICK_IMAGE_REQUEST
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val PICK_IMAGE_REQUEST: Int = 71
|
||||
val CAMERA_REQUEST: Int = 1888
|
||||
val MY_CAMERA_PERMISSION_CODE: Int = 100
|
||||
val STORAGE_PERMISSION_CODE: Int = 101
|
||||
var photoURI: Uri? = null
|
||||
}
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.Bitmap
|
||||
import android.net.Uri
|
||||
import android.os.Environment
|
||||
import android.provider.MediaStore
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.ActivityCompat
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateStamp
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
class ImageSelectorResults // public FilepathResponse delegate;
|
||||
{
|
||||
lateinit var activity: Activity
|
||||
|
||||
interface FilepathResponse {
|
||||
fun processFinish(output: Uri?)
|
||||
}
|
||||
|
||||
fun Results(
|
||||
activity: Activity, requestCode: Int, resultCode: Int, data: Intent?, filePath: Uri?,
|
||||
imageView: ImageView?, delegate: FilepathResponse
|
||||
) {
|
||||
var filePath: Uri? = filePath
|
||||
this.activity = activity
|
||||
if ((requestCode == ImageSelectorDialog.PICK_IMAGE_REQUEST) && (resultCode == Activity.RESULT_OK
|
||||
) && (data != null) && (data.data != null)
|
||||
) {
|
||||
val uri = data.data
|
||||
var bitmap: Bitmap? = null
|
||||
try {
|
||||
bitmap =
|
||||
MediaStore.Images.Media.getBitmap(activity.contentResolver, uri)
|
||||
if (imageView!!.visibility != View.VISIBLE) {
|
||||
imageView.visibility = View.VISIBLE
|
||||
}
|
||||
imageView.setImageBitmap(bitmap)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
if (bitmap != null) {
|
||||
delegate.processFinish(uri)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestCode == ImageSelectorDialog.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
|
||||
//check if we have we have storage rights
|
||||
val permission: Int = ActivityCompat.checkSelfPermission(
|
||||
(activity)!!,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||
)
|
||||
if (permission != PackageManager.PERMISSION_GRANTED) {
|
||||
Toast.makeText(activity, "Storage permissions not granted", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
return
|
||||
} else {
|
||||
try {
|
||||
val f: File =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
val fname: String = "driver" + getDateStamp() + ".jpg"
|
||||
val image = File(f, fname)
|
||||
val fileOutputStream = FileOutputStream(image)
|
||||
filePath = ImageSelectorDialog.photoURI
|
||||
val bitmap: Bitmap = MediaStore.Images.Media
|
||||
.getBitmap(
|
||||
activity.contentResolver,
|
||||
ImageSelectorDialog.photoURI
|
||||
)
|
||||
imageView!!.setImageBitmap(bitmap)
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream)
|
||||
fileOutputStream.flush()
|
||||
fileOutputStream.close()
|
||||
galleryAddPic()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
delegate.processFinish(filePath)
|
||||
}
|
||||
}
|
||||
|
||||
fun Results(
|
||||
activity: Activity,
|
||||
requestCode: Int,
|
||||
resultCode: Int,
|
||||
data: Intent?,
|
||||
filePath: Uri?,
|
||||
delegate: FilepathResponse
|
||||
) {
|
||||
var filePath: Uri? = filePath
|
||||
this.activity = activity
|
||||
if ((requestCode == ImageSelectorDialog.PICK_IMAGE_REQUEST) && (resultCode == Activity.RESULT_OK
|
||||
) && (data != null) && (data.data != null)
|
||||
) {
|
||||
filePath = data.data
|
||||
var bitmap: Bitmap? = null
|
||||
try {
|
||||
bitmap =
|
||||
MediaStore.Images.Media.getBitmap(activity.contentResolver, filePath)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
if (bitmap != null) {
|
||||
delegate.processFinish(filePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestCode == ImageSelectorDialog.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
|
||||
//check if we have we have storage rights
|
||||
val permission: Int = ActivityCompat.checkSelfPermission(
|
||||
(activity),
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||
)
|
||||
if (permission != PackageManager.PERMISSION_GRANTED) {
|
||||
Toast.makeText(activity, "Storage permissions not granted", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
return
|
||||
} else {
|
||||
try {
|
||||
val f: File =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
val fname: String = "driver" + getDateTimeStamp() + ".jpg"
|
||||
val image: File = File(f, fname)
|
||||
val fileOutputStream: FileOutputStream = FileOutputStream(image)
|
||||
filePath = ImageSelectorDialog.photoURI
|
||||
val bitmap: Bitmap = MediaStore.Images.Media
|
||||
.getBitmap(
|
||||
activity.contentResolver,
|
||||
ImageSelectorDialog.photoURI
|
||||
)
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream)
|
||||
fileOutputStream.flush()
|
||||
fileOutputStream.close()
|
||||
galleryAddPic()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
delegate.processFinish(filePath)
|
||||
}
|
||||
}
|
||||
|
||||
private fun galleryAddPic() {
|
||||
val mediaScanIntent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
|
||||
val f: File = File(ImageSelectorDialog.photoURI!!.path)
|
||||
val contentUri: Uri = Uri.fromFile(f)
|
||||
mediaScanIntent.data = contentUri
|
||||
activity.sendBroadcast(mediaScanIntent)
|
||||
}
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.content.Context
|
||||
import android.content.ContextWrapper
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class ImageSwiperClass(
|
||||
private val context: Context?,
|
||||
wholeView: View
|
||||
) : ContextWrapper(context) {
|
||||
private var left: ImageView = wholeView.findViewById(R.id.left)
|
||||
private var right: ImageView = wholeView.findViewById(R.id.right)
|
||||
|
||||
var list: List<Any>? = null
|
||||
|
||||
// fun addLocalString(uris: List<Uri>) {
|
||||
// list = uris
|
||||
// }
|
||||
//
|
||||
// fun addFirebaseStrings(uris: List<String>) {
|
||||
// list = uris
|
||||
// }
|
||||
//
|
||||
// private var adapter: SlidingImageViewAdapter? = null
|
||||
// lateinit var viewPager: ViewPager
|
||||
//
|
||||
//
|
||||
// fun reinstantiateList(imageStrings: MutableList<String?>?) {
|
||||
// this.imageStrings = imageStrings
|
||||
// adapter = SlidingImageViewAdapter()
|
||||
// viewPager.adapter = adapter
|
||||
// setArrows()
|
||||
// }
|
||||
//
|
||||
// fun hideDelete() {
|
||||
// delete.hide()
|
||||
// }
|
||||
//
|
||||
// private val leftClick: View.OnClickListener = View.OnClickListener {
|
||||
// viewPager.currentItem = viewPager.currentItem - 1
|
||||
// setArrows()
|
||||
// }
|
||||
// private val rightClick: View.OnClickListener = View.OnClickListener {
|
||||
// viewPager.currentItem = viewPager.currentItem + 1
|
||||
// setArrows()
|
||||
// }
|
||||
//
|
||||
// private fun deleteDialog(position: Int) {
|
||||
// val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
// builder.setMessage("Are you sure you want to delete?")
|
||||
// .setPositiveButton(
|
||||
// android.R.string.ok
|
||||
// ) { _, _ ->
|
||||
// imageStrings!!.removeAt(position)
|
||||
// viewPager.adapter = adapter
|
||||
// // adapter.notifyDataSetChanged();
|
||||
// }
|
||||
// .setNegativeButton(android.R.string.cancel, null)
|
||||
// .create()
|
||||
// .show()
|
||||
// }
|
||||
//
|
||||
// private fun setArrows() {
|
||||
// with(list) {
|
||||
// when (list) {
|
||||
// isNullOrEmpty() -> { }
|
||||
// isNotEmpty() -> { }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (list?.isNotEmpty()) {
|
||||
// //left arrow
|
||||
// if (viewPager.currentItem > 0) {
|
||||
// setAnimation(left, true)
|
||||
// } else {
|
||||
// setAnimation(left, false)
|
||||
// }
|
||||
//
|
||||
// //right
|
||||
// if (viewPager.currentItem == imageStrings!!.size - 1) {
|
||||
// setAnimation(right, false)
|
||||
// } else {
|
||||
// setAnimation(right, true)
|
||||
// }
|
||||
// }
|
||||
// if (imageStrings == null) {
|
||||
// setAnimation(left, false)
|
||||
// setAnimation(right, false)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private fun setAnimation(view: ImageView, up: Boolean) {
|
||||
// val start: Float
|
||||
// val finish: Float
|
||||
// if (up) {
|
||||
// start = 0.2f
|
||||
// finish = 1.0f
|
||||
// } else {
|
||||
// start = 1.0f
|
||||
// finish = 0.2f
|
||||
// }
|
||||
// val animation1 = AlphaAnimation(start, finish)
|
||||
// animation1.duration = 500
|
||||
// animation1.fillAfter = true
|
||||
// view.alpha = finish
|
||||
// }
|
||||
//
|
||||
// internal inner class SlidingImageViewAdapter : PagerAdapter() {
|
||||
//
|
||||
// override fun getCount(): Int = list?.size ?: 0
|
||||
//
|
||||
// override fun destroyItem(container: ViewGroup, position: Int, item: Any) {
|
||||
// container.removeView(item as View?)
|
||||
// }
|
||||
//
|
||||
// override fun isViewFromObject(view: View, o: Any): Boolean = view == o
|
||||
//
|
||||
// override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
// val pagerPic: View =
|
||||
// LayoutInflater.from(context).inflate(R.layout.insurance_item, container, false)
|
||||
// setArrows()
|
||||
// if (imageStrings != null && imageStrings!!.size > 0) {
|
||||
// mainImage = pagerPic.rootView.findViewById(R.id.main_image)
|
||||
// Picasso.get().load(imageStrings!!.get(position))
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(MainActivity.loadImage(mainImage))
|
||||
// }
|
||||
// container.addView(pagerPic, 0)
|
||||
// return pagerPic
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// init {
|
||||
// left.setOnClickListener(leftClick)
|
||||
// right.setOnClickListener(rightClick)
|
||||
// viewPager = wholeView.findViewById(R.id.view_pager)
|
||||
// delete = wholeView.findViewById(R.id.delete)
|
||||
// viewPager.addOnPageChangeListener(object : OnPageChangeListener {
|
||||
// override fun onPageScrolled(i: Int, v: Float, i1: Int) {
|
||||
// val animation1: AlphaAnimation = AlphaAnimation(0.2f, 1.0f)
|
||||
// animation1.duration = 200
|
||||
// animation1.fillAfter = true
|
||||
// delete.startAnimation(animation1)
|
||||
// }
|
||||
//
|
||||
// override fun onPageSelected(i: Int) {
|
||||
// setArrows()
|
||||
// delete.setOnClickListener { deleteDialog(i) }
|
||||
// }
|
||||
//
|
||||
// override fun onPageScrollStateChanged(i: Int) {}
|
||||
// })
|
||||
// }
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.github.chrisbanes.photoview.PhotoView
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.utils.DateUtils
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
|
||||
class ImageViewClass {
|
||||
fun open(bitmap: Bitmap?) {
|
||||
Companion.bitmap = bitmap
|
||||
// executeFragment(ImageViewerFragment())
|
||||
}
|
||||
|
||||
class ImageViewerFragment : Fragment() {
|
||||
private lateinit var viewer: View
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
viewer = inflater.inflate(R.layout.fragment_image_viewer, container, false)
|
||||
val fab: FloatingActionButton = viewer.findViewById(R.id.download_pic)
|
||||
if (bitmap != null) {
|
||||
val photoView: PhotoView = viewer.findViewById(R.id.photo_view)
|
||||
photoView.setImageBitmap(bitmap)
|
||||
fab.setOnClickListener(object : View.OnClickListener {
|
||||
override fun onClick(v: View) {
|
||||
try {
|
||||
downloadPic()
|
||||
} catch (e: FileNotFoundException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return viewer
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as AppCompatActivity?)!!.supportActionBar!!.hide()
|
||||
requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
(activity as AppCompatActivity?)!!.supportActionBar!!.show()
|
||||
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
}
|
||||
|
||||
@Throws(FileNotFoundException::class)
|
||||
private fun downloadPic() {
|
||||
val f: File =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
val fname: String = "driver" + DateUtils.getDateTimeStamp() + ".jpg"
|
||||
val image: File = File(f, fname)
|
||||
val fileOutputStream: FileOutputStream = FileOutputStream(image)
|
||||
bitmap!!.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream)
|
||||
try {
|
||||
fileOutputStream.flush()
|
||||
fileOutputStream.close()
|
||||
val mediaScanIntent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
|
||||
val contentUri: Uri = Uri.fromFile(image)
|
||||
mediaScanIntent.data = contentUri
|
||||
requireActivity().sendBroadcast(mediaScanIntent)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val IMAGE_VALUE: String = "image"
|
||||
private var bitmap: Bitmap? = null
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.AlertDialog
|
||||
import android.content.DialogInterface
|
||||
import android.widget.ImageView
|
||||
|
||||
|
||||
class SetApprovalDialog constructor(
|
||||
var statusCode: Int,
|
||||
private val activity: Activity,
|
||||
private val userId: String?,
|
||||
position: Int,
|
||||
private val imageView: ImageView
|
||||
) {
|
||||
private val groupNames: Array<String> = arrayOf("Pending", "Denied", "Approved")
|
||||
private val approvalNameString: String
|
||||
fun init() {
|
||||
val checkedItem: Int
|
||||
when (statusCode) {
|
||||
FirebaseClass.APPROVAL_PENDING -> checkedItem = 0
|
||||
FirebaseClass.APPROVAL_DENIED -> checkedItem = 1
|
||||
FirebaseClass.APPROVED -> checkedItem = 2
|
||||
else -> checkedItem = -1
|
||||
}
|
||||
val alertBuilder: AlertDialog.Builder = AlertDialog.Builder(
|
||||
activity
|
||||
)
|
||||
alertBuilder.setSingleChoiceItems(groupNames, checkedItem, singleChoiceListener)
|
||||
// .setPositiveButton(android.R.string.ok, submit);
|
||||
alertBuilder.create().ownerActivity
|
||||
alertBuilder.show()
|
||||
}
|
||||
|
||||
var singleChoiceListener: DialogInterface.OnClickListener =
|
||||
object : DialogInterface.OnClickListener {
|
||||
override fun onClick(dialog: DialogInterface, which: Int) {
|
||||
when (which) {
|
||||
0 -> {
|
||||
statusCode = FirebaseClass.APPROVAL_PENDING
|
||||
publishStatuscode(statusCode, dialog)
|
||||
return
|
||||
}
|
||||
1 -> {
|
||||
statusCode = FirebaseClass.APPROVAL_DENIED
|
||||
publishStatuscode(statusCode, dialog)
|
||||
return
|
||||
}
|
||||
2 -> {
|
||||
statusCode = FirebaseClass.APPROVED
|
||||
publishStatuscode(statusCode, dialog)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun publishStatuscode(status: Int, dialog: DialogInterface) {
|
||||
|
||||
// if (!(approvalNameString == "")) {
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
|
||||
// (userId)!!
|
||||
// ).child(FirebaseClass.USER_APPROVALS).child(approvalNameString)
|
||||
// .setValue(status).addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// Toast.makeText(activity, "Status change successful", Toast.LENGTH_SHORT)
|
||||
// .show()
|
||||
// imageView.setImageResource(
|
||||
// MainActivity.approvalsClass!!.setImageResource(
|
||||
// status
|
||||
// )
|
||||
// )
|
||||
// dialog.dismiss()
|
||||
// } else {
|
||||
// Toast.makeText(
|
||||
// activity,
|
||||
// "Status change unsuccessful",
|
||||
// Toast.LENGTH_SHORT
|
||||
// ).show()
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// } else {
|
||||
// Toast.makeText(activity, "Could not push status", Toast.LENGTH_SHORT).show()
|
||||
// }
|
||||
}
|
||||
|
||||
private fun getElement(i: Int): String {
|
||||
var element: String = ""
|
||||
when (i) {
|
||||
0 -> element =
|
||||
FirebaseClass.DRIVER_DETAILS_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
1 -> element =
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
2 -> element =
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
3 -> element =
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
4 -> element =
|
||||
FirebaseClass.INSURANCE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
5 -> element =
|
||||
FirebaseClass.MOT_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
6 -> element =
|
||||
FirebaseClass.LOG_BOOK_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
7 -> element =
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE + FirebaseClass.APPROVAL_CONSTANT
|
||||
}
|
||||
return element
|
||||
}
|
||||
|
||||
init {
|
||||
approvalNameString = getElement(position)
|
||||
init()
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class ApprovalsObject {
|
||||
var driver_details_approval: Int = 0
|
||||
var driver_license_approval: Int = 0
|
||||
var private_hire_approval: Int = 0
|
||||
var vehicle_details_approval: Int = 0
|
||||
var mot_details_approval: Int = 0
|
||||
var insurance_details_approval: Int = 0
|
||||
var log_book_approval: Int = 0
|
||||
var ph_car_approval: Int = 0
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
driver_details_approval: Int,
|
||||
driver_license_approval: Int,
|
||||
private_hire_approval: Int,
|
||||
vehicle_details_approval: Int,
|
||||
mot_details_approval: Int,
|
||||
insurance_details_approval: Int,
|
||||
log_book_approval: Int,
|
||||
private_hire_vehicle_approval: Int
|
||||
) {
|
||||
this.driver_details_approval = driver_details_approval
|
||||
this.driver_license_approval = driver_license_approval
|
||||
this.private_hire_approval = private_hire_approval
|
||||
this.vehicle_details_approval = vehicle_details_approval
|
||||
this.mot_details_approval = mot_details_approval
|
||||
this.insurance_details_approval = insurance_details_approval
|
||||
this.log_book_approval = log_book_approval
|
||||
ph_car_approval = private_hire_vehicle_approval
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
import java.util.*
|
||||
|
||||
class ArchiveObject {
|
||||
var driver_license: HashMap<String, DriversLicenseObject>? = null
|
||||
var private_hire: HashMap<String, PrivateHireObject>? = null
|
||||
var vehicle_details: HashMap<String, VehicleProfileObject>? = null
|
||||
var insurance_details: HashMap<String, InsuranceObject>? = null
|
||||
var mot_details: HashMap<String, MotObject>? = null
|
||||
var log_book: HashMap<String, LogbookObject>? = null
|
||||
var ph_car: HashMap<String, PrivateHireVehicleObject>? = null
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
driver_license: HashMap<String, DriversLicenseObject>?,
|
||||
private_hire: HashMap<String, PrivateHireObject>?,
|
||||
vehicle_details: HashMap<String, VehicleProfileObject>?,
|
||||
insurance_details: HashMap<String, InsuranceObject>?,
|
||||
mot_details: HashMap<String, MotObject>?,
|
||||
log_book: HashMap<String, LogbookObject>?,
|
||||
private_hire_vehicle: HashMap<String, PrivateHireVehicleObject>?
|
||||
) {
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
this.vehicle_details = vehicle_details
|
||||
this.insurance_details = insurance_details
|
||||
this.mot_details = mot_details
|
||||
this.log_book = log_book
|
||||
this.ph_car = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class LogbookObject {
|
||||
var photoString: String? = null
|
||||
var v5cnumber: String? = null
|
||||
|
||||
constructor(photoString: String?, v5cnumber: String?) {
|
||||
this.photoString = photoString
|
||||
this.v5cnumber = v5cnumber
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class UserObject {
|
||||
var profileName: String? = null
|
||||
var profileEmail: String? = null
|
||||
var profilePicString: String? = null
|
||||
|
||||
constructor()
|
||||
constructor(profileName: String?, profileEmail: String?, profilePicString: String?) {
|
||||
this.profileName = profileName
|
||||
this.profileEmail = profileEmail
|
||||
this.profilePicString = profilePicString
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.DriverProfile
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile
|
||||
|
||||
|
||||
class WholeDriverObject {
|
||||
var driver_profile: DriverProfile? = null
|
||||
var role: String? = null
|
||||
var archive: ArchiveObject? = null
|
||||
var user_details: UserObject? = null
|
||||
var vehicle_profile: VehicleProfile? = null
|
||||
var approvalsObject: ApprovalsObject? = null
|
||||
var driver_number: String? = null
|
||||
|
||||
constructor(
|
||||
driver_profile: DriverProfile?,
|
||||
role: String?,
|
||||
archive: ArchiveObject?,
|
||||
user_details: UserObject?,
|
||||
vehicle_profile: VehicleProfile?,
|
||||
approvalsObject: ApprovalsObject?,
|
||||
driver_number: String?
|
||||
) {
|
||||
this.driver_profile = driver_profile
|
||||
this.role = role
|
||||
this.archive = archive
|
||||
this.user_details = user_details
|
||||
this.vehicle_profile = vehicle_profile
|
||||
this.approvalsObject = approvalsObject
|
||||
this.driver_number = driver_number
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects.WholeObject
|
||||
|
||||
import h_mal.appttude.com.driver.model.DriverProfileObject
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
|
||||
|
||||
class DriverProfile {
|
||||
var driver_profile: DriverProfileObject? = null
|
||||
var driver_license: DriversLicenseObject? = null
|
||||
var private_hire: PrivateHireObject? = null
|
||||
|
||||
constructor(
|
||||
driver_profile: DriverProfileObject?,
|
||||
driver_license: DriversLicenseObject?,
|
||||
private_hire: PrivateHireObject?
|
||||
) {
|
||||
this.driver_profile = driver_profile
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects.WholeObject
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
import h_mal.appttude.com.driver.Objects.WholeDriverObject
|
||||
|
||||
|
||||
class MappedObject : Parcelable {
|
||||
var userId: String? = null
|
||||
var wholeDriverObject: WholeDriverObject? = null
|
||||
|
||||
constructor(userId: String?, wholeDriverObject: WholeDriverObject?) {
|
||||
this.userId = userId
|
||||
this.wholeDriverObject = wholeDriverObject
|
||||
}
|
||||
|
||||
constructor()
|
||||
protected constructor(`in`: Parcel) {
|
||||
userId = `in`.readString()
|
||||
}
|
||||
|
||||
override fun describeContents(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) {
|
||||
dest.writeString(userId)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val CREATOR: Parcelable.Creator<MappedObject?> = object : Parcelable.Creator<MappedObject?> {
|
||||
override fun createFromParcel(`in`: Parcel): MappedObject? {
|
||||
return MappedObject(`in`)
|
||||
}
|
||||
|
||||
override fun newArray(size: Int): Array<MappedObject?> {
|
||||
return arrayOfNulls(size)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects.WholeObject
|
||||
|
||||
import h_mal.appttude.com.driver.Objects.InsuranceObject
|
||||
import h_mal.appttude.com.driver.Objects.LogbookObject
|
||||
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
|
||||
|
||||
class VehicleProfile {
|
||||
var insurance_details: InsuranceObject? = null
|
||||
var log_book: LogbookObject? = null
|
||||
var mot_details: MotObject? = null
|
||||
var vehicle_details: VehicleProfileObject? = null
|
||||
var privateHireVehicleObject: PrivateHireVehicleObject? = null
|
||||
|
||||
constructor()
|
||||
|
||||
// public VehicleProfile(InsuranceObject insurance_details, LogbookObject log_book, MotObject mot_details, VehicleProfileObject vehicle_details) {
|
||||
// this.insurance_details = insurance_details;
|
||||
// this.log_book = log_book;
|
||||
// this.mot_details = mot_details;
|
||||
// this.vehicle_details = vehicle_details;
|
||||
// }
|
||||
constructor(
|
||||
insurance_details: InsuranceObject?,
|
||||
log_book: LogbookObject?,
|
||||
mot_details: MotObject?,
|
||||
vehicle_details: VehicleProfileObject?,
|
||||
private_hire_vehicle: PrivateHireVehicleObject?
|
||||
) {
|
||||
this.insurance_details = insurance_details
|
||||
this.log_book = log_book
|
||||
this.mot_details = mot_details
|
||||
this.vehicle_details = vehicle_details
|
||||
privateHireVehicleObject = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,205 +0,0 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.Global.FirebaseClass
|
||||
import h_mal.appttude.com.driver.Global.SetApprovalDialog
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.InsuranceFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.driverprofile.DriverLicenseFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.driverprofile.DriverProfileFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.driverprofile.PrivateHireLicenseFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.LogbookFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.MotFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.PrivateHireVehicleFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.VehicleProfileFragment
|
||||
|
||||
|
||||
class ApprovalListAdapter(
|
||||
val activity: Activity,
|
||||
objects: Array<MappedObject>
|
||||
): ArrayAdapter<MappedObject?>(activity, 0, objects) {
|
||||
|
||||
var mappedObject: MappedObject = objects[0]
|
||||
|
||||
var names: Array<String> = arrayOf(
|
||||
"Driver Profile",
|
||||
"Driver License",
|
||||
"Private Hire",
|
||||
"Vehicle Profile",
|
||||
"Insurance",
|
||||
"MOT",
|
||||
"Logbook",
|
||||
"P/H Vehicle"
|
||||
)
|
||||
|
||||
|
||||
var approvalCode: Int = 0
|
||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
var listItemView: View? = convertView
|
||||
if (listItemView == null) {
|
||||
listItemView = LayoutInflater.from(activity).inflate(
|
||||
R.layout.approval_list_grid_item, parent, false
|
||||
)
|
||||
}
|
||||
// approvalCode = getApprovalStatusCode(position)
|
||||
// val textView: TextView = listItemView!!.findViewById(R.id.approval_text)
|
||||
// textView.text = names.get(position)
|
||||
// val imageView: ImageView = listItemView.findViewById(R.id.approval_iv)
|
||||
// imageView.setImageResource(
|
||||
// MainActivity.approvalsClass!!.setImageResource(
|
||||
// approvalCode
|
||||
// )
|
||||
// )
|
||||
// imageView.setOnClickListener {
|
||||
// SetApprovalDialog(
|
||||
// approvalCode,
|
||||
// activity,
|
||||
// mappedObject.userId,
|
||||
// position,
|
||||
// imageView
|
||||
// )
|
||||
// }
|
||||
// val archiveImage: ImageView = listItemView.findViewById(R.id.archive_icon)
|
||||
// mappedObject.wholeDriverObject?.archive?.let {
|
||||
//
|
||||
//
|
||||
// archiveImage.visibility = getArchive(
|
||||
// position,
|
||||
// it
|
||||
// )
|
||||
// archiveImage.setOnClickListener {
|
||||
// var s: String? = null
|
||||
// when (position) {
|
||||
// 1 -> s = FirebaseClass.DRIVERS_LICENSE_FIREBASE
|
||||
// 2 -> s = FirebaseClass.PRIVATE_HIRE_FIREBASE
|
||||
// 3 -> s = FirebaseClass.VEHICLE_DETAILS_FIREBASE
|
||||
// 4 -> s = FirebaseClass.INSURANCE_FIREBASE
|
||||
// 5 -> s = FirebaseClass.MOT_FIREBASE
|
||||
// 6 -> s = FirebaseClass.LOG_BOOK_FIREBASE
|
||||
// 7 -> s = FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE
|
||||
// }
|
||||
//// executeFragment(ArchiveFragment(), mappedObject.userId, s)
|
||||
// }
|
||||
// }
|
||||
// listItemView.setOnClickListener(View.OnClickListener { getFragment(position) })
|
||||
// listItemView.minimumHeight = parent.height / 4
|
||||
// listItemView.setPadding(
|
||||
// convertDpToPixel(9f, context).toInt(),
|
||||
// convertDpToPixel(9f, context).toInt(),
|
||||
// convertDpToPixel(9f, context).toInt(),
|
||||
// convertDpToPixel(9f, context).toInt()
|
||||
// )
|
||||
return (listItemView)!!
|
||||
}
|
||||
|
||||
// override fun getCount(): Int {
|
||||
// return 8
|
||||
// }
|
||||
//
|
||||
// private fun getArchive(i: Int, archiveObject: ArchiveObject?): Int {
|
||||
// var o: Any? = null
|
||||
// val visible: Int
|
||||
// when (i) {
|
||||
// 0 -> { }
|
||||
// 1 -> o = archiveObject!!.driver_license
|
||||
// 2 -> o = archiveObject!!.private_hire
|
||||
// 3 -> o = archiveObject!!.vehicle_details
|
||||
// 4 -> o = archiveObject!!.insurance_details
|
||||
// 5 -> o = archiveObject!!.mot_details
|
||||
// 6 -> o = archiveObject!!.log_book
|
||||
// 7 -> o = archiveObject!!.ph_car
|
||||
// }
|
||||
// if (o != null) {
|
||||
// visible = View.VISIBLE
|
||||
// } else {
|
||||
// visible = View.GONE
|
||||
// }
|
||||
// return visible
|
||||
// }
|
||||
//
|
||||
// private fun getFragment(i: Int) {
|
||||
// lateinit var f: Fragment
|
||||
// val driverProfile by lazy { mappedObject.wholeDriverObject?.driver_profile }
|
||||
// val vehicleProfile by lazy { mappedObject.wholeDriverObject?.vehicle_profile }
|
||||
// val o: Any? = when (i) {
|
||||
// 0 -> {
|
||||
// f = DriverProfileFragment()
|
||||
// driverProfile?.driver_profile
|
||||
// }
|
||||
// 1 -> {
|
||||
// f = DriverLicenseFragment()
|
||||
// driverProfile?.driver_license
|
||||
// }
|
||||
// 2 -> {
|
||||
// f = PrivateHireLicenseFragment()
|
||||
// driverProfile?.private_hire
|
||||
// }
|
||||
// 3 -> {
|
||||
// f = VehicleProfileFragment()
|
||||
// vehicleProfile?.vehicle_details
|
||||
// }
|
||||
// 4 -> {
|
||||
// f = InsuranceFragment()
|
||||
// vehicleProfile?.insurance_details
|
||||
// }
|
||||
// 5 -> {
|
||||
// f = MotFragment()
|
||||
// vehicleProfile?.insurance_details
|
||||
// }
|
||||
// 6 -> {
|
||||
// f = LogbookFragment()
|
||||
// vehicleProfile?.log_book
|
||||
// }
|
||||
// 7 -> {
|
||||
// f = PrivateHireVehicleFragment()
|
||||
// vehicleProfile?.privateHireVehicleObject
|
||||
// }
|
||||
// else -> null
|
||||
// }
|
||||
// if (o == null) {
|
||||
//// executeFragment(f, mappedObject.userId)
|
||||
// } else {
|
||||
// MainActivity.archiveClass.openDialogArchive(
|
||||
// context, o, mappedObject.userId, f
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private fun getApprovalStatusCode(i: Int): Int {
|
||||
// val statusCode = mappedObject.wholeDriverObject?.approvalsObject?.let{
|
||||
// when (i) {
|
||||
// 0 -> it.driver_details_approval
|
||||
// 1 -> it.driver_license_approval
|
||||
// 2 -> it.private_hire_approval
|
||||
// 3 -> it.vehicle_details_approval
|
||||
// 4 -> it.insurance_details_approval
|
||||
// 5 -> it.mot_details_approval
|
||||
// 6 -> it.log_book_approval
|
||||
// 7 -> it.ph_car_approval
|
||||
// else -> FirebaseClass.NO_DATE_PRESENT
|
||||
// }
|
||||
// }
|
||||
// return statusCode ?: FirebaseClass.NO_DATE_PRESENT
|
||||
// }
|
||||
//
|
||||
// companion object {
|
||||
// fun convertDpToPixel(dp: Float, context: Context): Float {
|
||||
// return dp * (context.resources
|
||||
// .displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.cardview.widget.CardView
|
||||
|
||||
|
||||
class DriverStatusClass : View.OnClickListener {
|
||||
var userId: String? = null
|
||||
var cardView: CardView? = null
|
||||
var context: Context? = null
|
||||
var currentSelection: Boolean = false
|
||||
override fun onClick(v: View) {
|
||||
val choices: Array<String> = arrayOf("Active", "Inactive")
|
||||
val alertDialog: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
var selection: Int = -1
|
||||
if (currentSelection) {
|
||||
selection = 0
|
||||
} else if (!currentSelection) {
|
||||
selection = 1
|
||||
}
|
||||
alertDialog.setSingleChoiceItems(
|
||||
choices,
|
||||
selection
|
||||
) { dialog, which -> }
|
||||
alertDialog.create().show()
|
||||
}
|
||||
|
||||
private fun SetStatus(status: Boolean) {
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE)
|
||||
// .child((userId)!!).child(FirebaseClass.DRIVER_STATUS).setValue(status)
|
||||
// .addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// cardView!!.setBackgroundColor(setStatusColour(status))
|
||||
// } else {
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
private fun setStatusColour(b: Boolean): Int {
|
||||
if (b) {
|
||||
return android.R.color.holo_green_dark
|
||||
} else {
|
||||
return android.R.color.holo_red_dark
|
||||
}
|
||||
} // public int getOverApprovalStatusCode(WholeDriverObject wholeDriverObject){
|
||||
//
|
||||
// if (wholeDriverObject.approvalsObject != null){
|
||||
// ApprovalsObject approvalsObject = wholeDriverObject.approvalsObject;
|
||||
//
|
||||
// int[] ints = new int[]{approvalsObject.getDriver_details_approval(),
|
||||
// approvalsObject.driver_license_approval,
|
||||
// approvalsObject.private_hire_approval,
|
||||
// approvalsObject.vehicle_details_approval,
|
||||
// approvalsObject.insurance_details_approval,
|
||||
// approvalsObject.mot_details_approval,
|
||||
// approvalsObject.log_book_approval,
|
||||
// approvalsObject.ph_car_approval};
|
||||
//
|
||||
//
|
||||
// return setImageResource(mode(ints));
|
||||
// }
|
||||
//
|
||||
// return setImageResource(NO_DATE_PRESENT);
|
||||
// }
|
||||
//
|
||||
// public void setStatusCode(String userId,String approvalNameString,int status){
|
||||
//
|
||||
// if (!approvalNameString.equals("")) {
|
||||
// mDatabase.child(USER_FIREBASE).child(userId).child(USER_APPROVALS).child(approvalNameString)
|
||||
// .setValue(status).addOnCompleteListener(new OnCompleteListener<Void>() {
|
||||
// @Override
|
||||
// public void onComplete(@NonNull Task<Void> task) {
|
||||
// if (task.isSuccessful()) {
|
||||
//
|
||||
// } else {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// public int setImageResource(int statusCode){
|
||||
// int imageResource;
|
||||
//
|
||||
// switch (statusCode){
|
||||
// case APPROVAL_PENDING:
|
||||
// imageResource = R.drawable.pending;
|
||||
// break;
|
||||
// case APPROVAL_DENIED:
|
||||
// imageResource = R.drawable.denied;
|
||||
// break;
|
||||
// case APPROVED:
|
||||
// imageResource = R.drawable.approved;
|
||||
// break;
|
||||
// default:
|
||||
// imageResource = R.drawable.zero;
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// return imageResource;
|
||||
// }
|
||||
}
|
||||
@@ -1,103 +0,0 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.squareup.picasso.Picasso
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.UserObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class RecyclerViewAdapter constructor(var context: Context?, var objects: List<MappedObject>?) :
|
||||
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): RecyclerView.ViewHolder {
|
||||
val viewCurrent: View =
|
||||
LayoutInflater.from(context).inflate(R.layout.list_item_layout, viewGroup, false)
|
||||
return ViewHolderMain(viewCurrent)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, i: Int) {
|
||||
val viewHolderCurrent: ViewHolderMain = viewHolder as ViewHolderMain
|
||||
val mappedObject: MappedObject = objects!!.get(i)
|
||||
val `object`: UserObject? = mappedObject.wholeDriverObject?.user_details
|
||||
if (`object`!!.profilePicString != null) {
|
||||
Picasso.get()
|
||||
.load(`object`.profilePicString)
|
||||
.resize(128, 128)
|
||||
.placeholder(R.drawable.choice_img_round)
|
||||
.into(viewHolderCurrent.profilePicImage)
|
||||
} else {
|
||||
viewHolderCurrent.profilePicImage.setImageResource(R.drawable.choice_img_round)
|
||||
}
|
||||
viewHolderCurrent.userNameTextView.setText(`object`.profileName)
|
||||
viewHolderCurrent.userEmailTextView.setText(`object`.profileEmail)
|
||||
if (mappedObject.wholeDriverObject?.driver_number == null) {
|
||||
viewHolderCurrent.driverNo.text = "0"
|
||||
} else {
|
||||
val s: String = mappedObject.wholeDriverObject?.driver_number.toString()
|
||||
viewHolderCurrent.driverNo.text = s
|
||||
}
|
||||
viewHolderCurrent.driverNo.setOnClickListener {
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(
|
||||
context
|
||||
)
|
||||
val input: EditText = EditText(context)
|
||||
val layout: LinearLayout = LinearLayout(context)
|
||||
layout.orientation = LinearLayout.VERTICAL
|
||||
layout.setPadding(28, 0, 56, 0)
|
||||
input.setText(viewHolderCurrent.driverNo.text.toString())
|
||||
input.setSelectAllOnFocus(true)
|
||||
layout.addView(input)
|
||||
builder.setTitle("Change Driver Number")
|
||||
.setView(layout)
|
||||
.setPositiveButton(
|
||||
"Submit"
|
||||
) { dialog, which ->
|
||||
|
||||
}.create()
|
||||
.show()
|
||||
}
|
||||
// viewHolderCurrent.profileApprovalImage.setImageResource(
|
||||
// MainActivity.approvalsClass!!.getOverApprovalStatusCode(mappedObject.wholeDriverObject)
|
||||
// )
|
||||
viewHolderCurrent.itemView.setOnClickListener {
|
||||
val bundle: Bundle = Bundle()
|
||||
bundle.putParcelable("mapped", mappedObject)
|
||||
// executeFragment(UserMainFragment(), bundle)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return objects!!.size
|
||||
}
|
||||
|
||||
internal inner class ViewHolderMain constructor(listItemView: View) :
|
||||
RecyclerView.ViewHolder(listItemView) {
|
||||
var profilePicImage: ImageView
|
||||
var userNameTextView: TextView
|
||||
var userEmailTextView: TextView
|
||||
|
||||
// CardView statusCard;
|
||||
var profileApprovalImage: ImageView
|
||||
var driverNo: TextView
|
||||
|
||||
init {
|
||||
profilePicImage = listItemView.findViewById(R.id.driverPic)
|
||||
userNameTextView = listItemView.findViewById(R.id.username_text)
|
||||
// statusCard = listItemView.findViewById(R.id.status_icon);
|
||||
userEmailTextView = listItemView.findViewById(R.id.emailaddress_text)
|
||||
profileApprovalImage = listItemView.findViewById(R.id.approval_iv)
|
||||
driverNo = listItemView.findViewById(R.id.driver_no)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.GridView
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class UserMainFragment : Fragment() {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
val view: View = inflater.inflate(R.layout.fragment_user_main, container, false)
|
||||
Log.i("UserMain", "onCreateView: height = " + view.height)
|
||||
val mappedObject: MappedObject = requireArguments().getParcelable<MappedObject>("mapped")
|
||||
activity?.title = mappedObject.wholeDriverObject?.user_details?.profileName
|
||||
|
||||
val listView: GridView = view.findViewById(R.id.approvals_list)
|
||||
listView.adapter = ApprovalListAdapter(requireActivity(), arrayOf(mappedObject))
|
||||
return view
|
||||
}
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.DialogInterface
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.*
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.ValueEventListener
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.WholeDriverObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import kotlinx.android.synthetic.main.fragment_home_super_user.*
|
||||
import java.io.IOException
|
||||
import java.util.*
|
||||
|
||||
|
||||
class homeSuperUserFragment : Fragment() {
|
||||
var users: DatabaseReference? = null
|
||||
var mappedObjectList: MutableList<MappedObject>? = null
|
||||
private var sharedPreferences: SharedPreferences? = null
|
||||
private var sortOrder: Int = 0
|
||||
private val sortDesc: Boolean = false
|
||||
private var recyclerViewAdapter: RecyclerViewAdapter? = null
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
mappedObjectList = ArrayList()
|
||||
users!!.addValueEventListener(valueEventListener)
|
||||
sharedPreferences = requireActivity().getSharedPreferences("PREFS", 0)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
val view: View = inflater.inflate(R.layout.fragment_home_super_user, container, false)
|
||||
|
||||
recycler_view.apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
recyclerViewAdapter = RecyclerViewAdapter(context, mappedObjectList)
|
||||
adapter = recyclerViewAdapter
|
||||
}
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
var valueEventListener: ValueEventListener = object : ValueEventListener {
|
||||
override fun onDataChange(snapshot: DataSnapshot) {
|
||||
mappedObjectList!!.clear()
|
||||
Log.i("Count ", "" + snapshot.childrenCount)
|
||||
for (postSnapshot: DataSnapshot in snapshot.children) {
|
||||
if ((postSnapshot.child("role").value.toString() == "driver")) {
|
||||
mappedObjectList!!.add(
|
||||
MappedObject(
|
||||
postSnapshot.key, postSnapshot.getValue(
|
||||
WholeDriverObject::class.java
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
sortDate(sortOrder, sortDesc)
|
||||
|
||||
}
|
||||
|
||||
override fun onCancelled(databaseError: DatabaseError) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.menu_calls_fragment, menu)
|
||||
super.onCreateOptionsMenu(menu, inflater)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (item.itemId == R.id.archive) {
|
||||
val grpname: Array<String> = arrayOf("Driver Name", "Driver Number", "Approval")
|
||||
sortOrder = sharedPreferences!!.getInt(SORT, 0)
|
||||
val checkedItem: Int = sortOrder
|
||||
var compareInt = 0
|
||||
val click = DialogInterface.OnClickListener { dialog, _ ->
|
||||
sortDate(compareInt, false)
|
||||
dialog.dismiss()
|
||||
}
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
builder.setTitle("Sort by:")
|
||||
.setSingleChoiceItems(
|
||||
grpname,
|
||||
checkedItem
|
||||
) { _, pos -> compareInt = pos }
|
||||
.setPositiveButton("Ascending", click)
|
||||
.setNegativeButton("Descending", click)
|
||||
.create().show()
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
private fun sortDate(compareInt: Int, reversed: Boolean) {
|
||||
val comparator: Comparator<MappedObject> = object : Comparator<MappedObject> {
|
||||
override fun compare(o1: MappedObject, o2: MappedObject): Int {
|
||||
when (compareInt) {
|
||||
0 -> return o1.wholeDriverObject?.user_details?.profileName!!.compareTo(
|
||||
o2.wholeDriverObject?.user_details?.profileName!!
|
||||
)
|
||||
1 -> {
|
||||
var s1: String? = o1.wholeDriverObject?.driver_number
|
||||
var s2: String? = o2.wholeDriverObject?.driver_number
|
||||
if (o1.wholeDriverObject?.driver_number == null || (o1.wholeDriverObject!!
|
||||
.driver_number == "0")
|
||||
) {
|
||||
s1 = ";"
|
||||
}
|
||||
if (o2.wholeDriverObject?.driver_number == null || (o2.wholeDriverObject!!
|
||||
.driver_number == "0")
|
||||
) {
|
||||
s2 = ";"
|
||||
}
|
||||
return s1!!.compareTo((s2)!!)
|
||||
}
|
||||
else -> { throw IOException("dfdfs") }
|
||||
// 2 -> return MainActivity.approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
|
||||
// MainActivity.approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject)
|
||||
// else -> return MainActivity.approvalsClass.getOverApprovalStatusCode(
|
||||
// o1.wholeDriverObject
|
||||
// ) - MainActivity.approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject)
|
||||
}
|
||||
}
|
||||
}
|
||||
sharedPreferences!!.edit().putInt(SORT, compareInt).apply()
|
||||
sharedPreferences!!.edit().putBoolean(REVERSED, reversed).apply()
|
||||
if (reversed) {
|
||||
Collections.sort(mappedObjectList, comparator.reversed())
|
||||
} else {
|
||||
Collections.sort(mappedObjectList, comparator)
|
||||
}
|
||||
recyclerViewAdapter!!.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val SORT: String = "SORT"
|
||||
private val REVERSED: String = "REVERSED"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
enum class Roles(name: String) {
|
||||
Driver("driver"),
|
||||
SuperUser("super_user")
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
|
||||
|
||||
import kotlinx.android.synthetic.main.fragment_driver_overall.*
|
||||
|
||||
class DriverOverallFragment : BaseFragment<DriverLicenseViewModel>() {
|
||||
|
||||
private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
|
||||
override fun getViewModel(): DriverLicenseViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_driver_overall
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
driver_prof.setOnClickListener {
|
||||
it.navigateTo(R.id.to_driverProfileFragment)
|
||||
}
|
||||
private_hire.setOnClickListener {
|
||||
it.navigateTo(R.id.to_privateHireLicenseFragment2)
|
||||
}
|
||||
drivers_license.setOnClickListener {
|
||||
it.navigateTo(R.id.to_driverLicenseFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
|
||||
import kotlinx.android.synthetic.main.fragment_home_driver.*
|
||||
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? = inflater.inflate(R.layout.fragment_home_driver, container, false)
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
driver.setOnClickListener {
|
||||
view.navigateTo(R.id.to_driverOverallFragment)
|
||||
}
|
||||
car.setOnClickListener {
|
||||
view.navigateTo(R.id.to_vehicleOverallFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver
|
||||
|
||||
import android.Manifest
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.ui.AppBarConfiguration
|
||||
import androidx.navigation.ui.navigateUp
|
||||
import androidx.navigation.ui.setupActionBarWithNavController
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.google.android.material.navigation.NavigationView
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import com.squareup.picasso.Picasso.LoadedFrom
|
||||
import com.squareup.picasso.Target
|
||||
import h_mal.appttude.com.driver.Global.ApprovalsClass
|
||||
import h_mal.appttude.com.driver.Global.ArchiveClass
|
||||
import h_mal.appttude.com.driver.Global.ImageViewClass
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.dialogs.ExitDialog.displayExitDialog
|
||||
import h_mal.appttude.com.driver.ui.user.LoginActivity
|
||||
import h_mal.appttude.com.driver.utils.ActivityIntentBuilder.createIntent
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.MainViewModel
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import kotlinx.android.synthetic.main.app_bar_main.*
|
||||
import kotlinx.android.synthetic.main.nav_header_main.view.*
|
||||
|
||||
|
||||
class MainActivity : BaseActivity<MainViewModel>(),
|
||||
NavigationView.OnNavigationItemSelectedListener {
|
||||
|
||||
private val vm by createLazyViewModel<MainViewModel>()
|
||||
override fun getViewModel(): MainViewModel = vm
|
||||
override val layoutId: Int = R.layout.activity_main
|
||||
|
||||
lateinit var navController: NavController
|
||||
lateinit var appBarConfiguration: AppBarConfiguration
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setSupportActionBar(toolbar)
|
||||
navController = findNavController(R.id.container)
|
||||
|
||||
appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
|
||||
nav_view.setupWithNavController(navController)
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
|
||||
getViewModel().getUserDetails()
|
||||
setupLogoutInDrawer()
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
|
||||
}
|
||||
|
||||
override fun setTitle(title: CharSequence) {
|
||||
toolbar.title = title
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer_layout.closeDrawer(GravityCompat.START)
|
||||
} else {
|
||||
val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
|
||||
navHostFragment?.childFragmentManager?.backStackEntryCount?.takeIf { it > 1 }?.let {
|
||||
return super.onBackPressed()
|
||||
}
|
||||
displayExitDialog()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
when(data){
|
||||
is FirebaseUser -> {
|
||||
setupDrawer(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupDrawer(user: FirebaseUser) {
|
||||
val header: View = nav_view.getHeaderView(0)
|
||||
header.driver_email.text = user.email
|
||||
header.driver_name.text = user.displayName
|
||||
header.profileImage.setPicassoImage(user.photoUrl)
|
||||
}
|
||||
|
||||
private fun setupLogoutInDrawer(){
|
||||
logout.setOnClickListener {
|
||||
getViewModel().logOut()
|
||||
startActivity(createIntent<LoginActivity>())
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNavigationItemSelected(item: MenuItem): Boolean {
|
||||
// Handle navigation view item clicks here.
|
||||
when (item.itemId) {
|
||||
R.id.nav_user_settings -> { }
|
||||
}
|
||||
drawer_layout.closeDrawer(GravityCompat.START)
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_vehicle_overall.*
|
||||
|
||||
|
||||
class VehicleOverallFragment : BaseFragment<DriverLicenseViewModel>() {
|
||||
|
||||
private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
|
||||
override fun getViewModel(): DriverLicenseViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_vehicle_overall
|
||||
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
vehicle_prof.setOnClickListener { it.navigateTo(R.id.to_vehicleSetupFragment) }
|
||||
insurance.setOnClickListener { it.navigateTo(R.id.to_insuranceFragment) }
|
||||
mot.setOnClickListener { it.navigateTo(R.id.to_motFragment) }
|
||||
logbook.setOnClickListener { it.navigateTo(R.id.to_logbookFragment) }
|
||||
private_hire_vehicle_license.setOnClickListener { it.navigateTo(R.id.to_privateHireVehicleFragment) }
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.driverprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_driver_license.*
|
||||
|
||||
class DriverLicenseFragment : DataSubmissionBaseFragment<DriverLicenseViewModel, DriversLicenseObject>() {
|
||||
|
||||
private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
|
||||
override fun getViewModel(): DriverLicenseViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_driver_license
|
||||
override var model = DriversLicenseObject()
|
||||
|
||||
private var imageUri: Uri? = null
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
lic_expiry.apply {
|
||||
setTextOnChange{ model.licenseExpiry = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
lic_no.setTextOnChange{ model.licenseNumber = it }
|
||||
|
||||
upload_lic.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit.setOnClickListener{ submit() }
|
||||
}
|
||||
|
||||
override fun submit(){
|
||||
validateEditTexts(lic_expiry,lic_no).takeIf { !it }?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model, imageUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: DriversLicenseObject) {
|
||||
super.setFields(data)
|
||||
driversli_img.setPicassoImage(data.licenseImageString)
|
||||
lic_no.setText(data.licenseNumber)
|
||||
lic_expiry.setText(data.licenseExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
this.imageUri = imageUri
|
||||
driversli_img.setPicassoImage(imageUri)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.driverprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.model.DriverProfileObject
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.DriverProfileViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_driver_profile.*
|
||||
|
||||
|
||||
class DriverProfileFragment: DataSubmissionBaseFragment<DriverProfileViewModel, DriverProfileObject>() {
|
||||
|
||||
var localUri: Uri? = null
|
||||
|
||||
private val viewmodel by getFragmentViewModel<DriverProfileViewModel>()
|
||||
override fun getViewModel(): DriverProfileViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_driver_profile
|
||||
override var model = DriverProfileObject()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
names_input.setTextOnChange{ model.forenames = it }
|
||||
address_input.setTextOnChange{ model.address = it }
|
||||
postcode_input.setTextOnChange{ model.postcode = it }
|
||||
dob_input.apply {
|
||||
setTextOnChange{ model.dob = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
ni_number.setTextOnChange{ model.ni = it }
|
||||
date_first.apply {
|
||||
setTextOnChange{ model.dateFirst = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
add_driver_pic.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit_driver.setOnClickListener{ submit() }
|
||||
}
|
||||
|
||||
override fun submit(){
|
||||
validateEditTexts(names_input, address_input, postcode_input,
|
||||
dob_input, ni_number, date_first)
|
||||
.takeIf { !it }
|
||||
?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model, localUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: DriverProfileObject) {
|
||||
super.setFields(data)
|
||||
driver_pic.setPicassoImage(data.driverPic)
|
||||
names_input.setText(data.forenames)
|
||||
address_input.setText(data.address)
|
||||
postcode_input.setText(data.postcode)
|
||||
dob_input.setText(data.dob)
|
||||
ni_number.setText(data.ni)
|
||||
date_first.setText(data.dateFirst)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
localUri = imageUri
|
||||
driver_pic.setPicassoImage(imageUri)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.driverprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.PrivateHireLicenseViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_private_hire_license.*
|
||||
|
||||
|
||||
class PrivateHireLicenseFragment : DataSubmissionBaseFragment<PrivateHireLicenseViewModel, PrivateHireObject>() {
|
||||
|
||||
val viewmodel by getFragmentViewModel<PrivateHireLicenseViewModel>()
|
||||
override fun getViewModel(): PrivateHireLicenseViewModel = viewmodel
|
||||
override var model = PrivateHireObject()
|
||||
override fun getLayoutId(): Int = R.layout.fragment_private_hire_license
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
ph_no.setTextOnChange{ model.phNumber = it }
|
||||
ph_expiry.apply {
|
||||
setTextOnChange{ model.phExpiry = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
|
||||
uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit.setOnClickListener{ submit() }
|
||||
}
|
||||
|
||||
override fun submit(){
|
||||
validateEditTexts(ph_no,ph_expiry).takeIf { !it }?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: PrivateHireObject) {
|
||||
super.setFields(data)
|
||||
imageView2.setPicassoImage(data.phImageString)
|
||||
ph_no.setText(data.phNumber)
|
||||
ph_expiry.setText(data.phExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
imageView2.setPicassoImage(imageUri)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.Objects.InsuranceObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.InsuranceViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_insurance.*
|
||||
|
||||
|
||||
class InsuranceFragment : DataSubmissionBaseFragment<InsuranceViewModel, InsuranceObject>() {
|
||||
|
||||
private var selectedImages: List<Uri>? = listOf()
|
||||
|
||||
private val viewmodel: InsuranceViewModel by getFragmentViewModel()
|
||||
override fun getViewModel(): InsuranceViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_insurance
|
||||
override var model = InsuranceObject()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setImageSelectionAsMultiple()
|
||||
|
||||
insurer.setTextOnChange { model.insurerName = it }
|
||||
insurance_exp.apply {
|
||||
setOnClickListener { DateDialog(this) }
|
||||
setTextOnChange { model.expiryDate = it }
|
||||
}
|
||||
|
||||
uploadInsurance.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit_ins.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
private fun updateImageCarousal(list: List<Any?>) {
|
||||
carouselView.setImageClickListener(null)
|
||||
carouselView.setImageListener { i: Int, imageView: ImageView ->
|
||||
when (list[i]) {
|
||||
is Uri -> { imageView.setPicassoImage(list[i] as Uri) }
|
||||
is String -> imageView.setPicassoImage(list[i] as String)
|
||||
}
|
||||
}
|
||||
carouselView.pageCount = list.size
|
||||
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(insurer, insurance_exp).takeIf { !it }?.let { return }
|
||||
viewmodel.setDataInDatabase(model, selectedImages)
|
||||
}
|
||||
|
||||
override fun setFields(data: InsuranceObject) {
|
||||
super.setFields(data)
|
||||
|
||||
insurer.setText(model.insurerName)
|
||||
insurance_exp.setText(model.expiryDate)
|
||||
model.photoStrings?.let { updateImageCarousal(it) }
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUris: List<Uri>?) {
|
||||
selectedImages = imageUris
|
||||
selectedImages?.let { updateImageCarousal(it) }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.driver.Objects.LogbookObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.LogbookViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_logbook.*
|
||||
|
||||
|
||||
class LogbookFragment : DataSubmissionBaseFragment<LogbookViewModel, LogbookObject>() {
|
||||
|
||||
private val viewmodel by getFragmentViewModel<LogbookViewModel>()
|
||||
override fun getViewModel(): LogbookViewModel = viewmodel
|
||||
override var model = LogbookObject()
|
||||
override fun getLayoutId(): Int = R.layout.fragment_logbook
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
v5c_no.setTextOnChange{ model.v5cnumber = it }
|
||||
upload_lb.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit_lb.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(v5c_no)
|
||||
.takeIf { !it }
|
||||
?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: LogbookObject) {
|
||||
super.setFields(data)
|
||||
|
||||
log_book_img.setPicassoImage(data.photoString)
|
||||
v5c_no.setText(data.v5cnumber)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
|
||||
picUri = imageUri
|
||||
log_book_img.setPicassoImage(picUri)
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.MotViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_mot.*
|
||||
|
||||
|
||||
class MotFragment: DataSubmissionBaseFragment<MotViewModel, MotObject>(){
|
||||
|
||||
private val viewmodel by getFragmentViewModel<MotViewModel>()
|
||||
override fun getViewModel(): MotViewModel = viewmodel
|
||||
override var model = MotObject()
|
||||
override fun getLayoutId(): Int = R.layout.fragment_mot
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
mot_expiry.apply {
|
||||
setTextOnChange{ model.motExpiry = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
|
||||
uploadmot.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit_mot.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(mot_expiry).takeIf { !it }?.let { return }
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: MotObject) {
|
||||
super.setFields(data)
|
||||
mot_img.setPicassoImage(data.motImageString)
|
||||
mot_expiry.setText(data.motExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
mot_img.setPicassoImage(imageUri)
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.PrivateHireVehicleViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_private_hire_vehicle.*
|
||||
|
||||
|
||||
class PrivateHireVehicleFragment: DataSubmissionBaseFragment<PrivateHireVehicleViewModel, PrivateHireVehicleObject>(){
|
||||
|
||||
private val viewmodel by getFragmentViewModel<PrivateHireVehicleViewModel>()
|
||||
override fun getViewModel(): PrivateHireVehicleViewModel = viewmodel
|
||||
override var model = PrivateHireVehicleObject()
|
||||
override fun getLayoutId(): Int = R.layout.fragment_private_hire_vehicle
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
ph_no.setTextOnChange{ model.phCarNumber = it }
|
||||
ph_expiry.apply {
|
||||
setTextOnChange{ model.phCarExpiry = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
|
||||
uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(ph_no, ph_expiry).takeIf { !it }?.let { return }
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: PrivateHireVehicleObject) {
|
||||
super.setFields(data)
|
||||
imageView2.setPicassoImage(data.phCarImageString)
|
||||
ph_no.setText(data.phCarNumber)
|
||||
ph_expiry.setText(data.phCarExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
imageView2.setPicassoImage(imageUri)
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.driver.vehicleprofile
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
|
||||
import h_mal.appttude.com.driver.Global.DateDialog
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
import h_mal.appttude.com.driver.viewmodels.VehicleProfileViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_vehicle_setup.*
|
||||
|
||||
|
||||
class VehicleProfileFragment: DataSubmissionBaseFragment<VehicleProfileViewModel, VehicleProfileObject>(){
|
||||
|
||||
private val viewmodel by getFragmentViewModel<VehicleProfileViewModel>()
|
||||
override fun getViewModel(): VehicleProfileViewModel = viewmodel
|
||||
override var model = VehicleProfileObject()
|
||||
override fun getLayoutId(): Int = R.layout.fragment_vehicle_setup
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
reg.setTextOnChange { model.reg = it }
|
||||
make.setTextOnChange { model.make = it }
|
||||
car_model.setTextOnChange { model.model = it }
|
||||
colour.setTextOnChange { model.colour = it }
|
||||
keeper_name.setTextOnChange { model.keeperName = it }
|
||||
address.setTextOnChange { model.keeperAddress = it }
|
||||
postcode.setTextOnChange { model.keeperPostCode = it }
|
||||
start_date.apply {
|
||||
setTextOnChange{ model.startDate = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this)
|
||||
}
|
||||
}
|
||||
seized_checkbox.setOnCheckedChangeListener { _, res -> model.isSeized = res}
|
||||
|
||||
submit_vehicle.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
validateEditTexts(reg, make, car_model, colour, keeper_name, address, postcode, start_date)
|
||||
.takeIf { !it }
|
||||
?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model)
|
||||
}
|
||||
|
||||
override fun setFields(data: VehicleProfileObject) {
|
||||
super.setFields(data)
|
||||
reg.setText(data.reg)
|
||||
make.setText(data.make)
|
||||
car_model.setText(data.model)
|
||||
colour.setText(data.colour)
|
||||
keeper_name.setText(data.keeperName)
|
||||
address.setText(data.keeperAddress)
|
||||
postcode.setText(data.keeperPostCode)
|
||||
start_date.setText(data.startDate)
|
||||
seized_checkbox.isChecked = data.isSeized
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package h_mal.appttude.com.driver.update
|
||||
|
||||
import android.os.Bundle
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
class UpdateActivity : BaseActivity<UpdateUserViewModel>() {
|
||||
|
||||
override val layoutId: Int = R.layout.update_activity
|
||||
override fun getViewModel(): UpdateUserViewModel? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
createViewModel<UpdateUserViewModel>()
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.main
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
|
||||
class SplashScreenFragment : BaseFragment<UserViewModel>() {
|
||||
|
||||
private val userViewModel by activityViewModels<UserViewModel>()
|
||||
override fun getViewModel(): UserViewModel = userViewModel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_splash_screen
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
userViewModel.splashscreenCheckUserIsLoggedIn()
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
when(data){
|
||||
is FirebaseCompletion.Default -> view?.navigateTo(R.id.to_loginFragment)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.res.Resources
|
||||
import android.net.Uri
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.squareup.picasso.Picasso
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
fun View.show() {
|
||||
this.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
fun View.hide() {
|
||||
this.visibility = View.GONE
|
||||
}
|
||||
|
||||
fun Context.displayToast(message: String) {
|
||||
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
fun Fragment.displayToast(message: String) {
|
||||
requireContext().displayToast(message)
|
||||
}
|
||||
|
||||
fun EditText.setEnterPressedListener(action: () -> Unit) {
|
||||
setOnEditorActionListener(TextView.OnEditorActionListener { _, id, _ ->
|
||||
if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
|
||||
action()
|
||||
return@OnEditorActionListener true
|
||||
}
|
||||
false
|
||||
})
|
||||
}
|
||||
|
||||
fun ImageView.setPicassoImage(
|
||||
url: String?,
|
||||
@DrawableRes placeholderRes: Int = R.drawable.choice_img_round
|
||||
) {
|
||||
|
||||
val creator = Picasso.get()
|
||||
.load(url)
|
||||
viewTreeObserver.addOnPreDrawListener {
|
||||
creator.resize(width, height)
|
||||
true
|
||||
}
|
||||
creator
|
||||
.placeholder(placeholderRes)
|
||||
.into(this)
|
||||
}
|
||||
|
||||
fun ImageView.setPicassoImage(
|
||||
url: Uri?,
|
||||
@DrawableRes placeholderRes: Int = R.drawable.choice_img_round
|
||||
) {
|
||||
val creator = Picasso.get()
|
||||
.load(url)
|
||||
viewTreeObserver.addOnPreDrawListener {
|
||||
creator.resize(width, height)
|
||||
true
|
||||
}
|
||||
creator
|
||||
.placeholder(placeholderRes)
|
||||
.into(this)
|
||||
}
|
||||
|
||||
fun ViewGroup.generateView(layoutId: Int): View = LayoutInflater
|
||||
.from(context)
|
||||
.inflate(layoutId, this, false)
|
||||
|
||||
fun Int.dpToPx(): Int = (this * Resources.getSystem().displayMetrics.density).toInt()
|
||||
|
||||
fun SearchView.onSubmitListener(searchSubmit: (String) -> Unit) {
|
||||
this.setOnQueryTextListener(object :
|
||||
SearchView.OnQueryTextListener {
|
||||
override fun onQueryTextSubmit(s: String): Boolean {
|
||||
searchSubmit.invoke(s)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onQueryTextChange(s: String): Boolean {
|
||||
return true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun Fragment.hideKeyboard() {
|
||||
val imm = context?.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
|
||||
imm?.hideSoftInputFromWindow(view?.windowToken, 0)
|
||||
}
|
||||
|
||||
fun EditText.extractString(): String = text.toString().trim()
|
||||
@@ -1,75 +0,0 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import h_mal.appttude.com.driver.base.BaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import java.io.IOException
|
||||
|
||||
class UpdateUserViewModel(
|
||||
private val auth: FirebaseAuthentication,
|
||||
private val storage: FirebaseStorageSource
|
||||
) : BaseViewModel() {
|
||||
|
||||
fun updateEmail(oldEmail: String, password: String, newEmail: String) = io {
|
||||
doTryOperation("Failed to update email"){
|
||||
auth.reauthenticate(oldEmail, password)?.await()
|
||||
val complete = auth.updateEmail(newEmail)?.await()
|
||||
complete?.postResult("Email address")
|
||||
}
|
||||
}
|
||||
|
||||
fun updatePassword(oldEmail: String, password: String, newPassword: String) = io {
|
||||
doTryOperation("Failed to update password"){
|
||||
auth.reauthenticate(oldEmail, password)?.await()
|
||||
val complete = auth.updatePassword(newPassword)?.await()
|
||||
complete?.postResult("Password")
|
||||
}
|
||||
}
|
||||
|
||||
fun updateProfile(name: String?, localImageUri: Uri?) = io {
|
||||
if (name.isNullOrBlank() && localImageUri == null) return@io
|
||||
doTryOperation("Failed to update User"){
|
||||
|
||||
val profilePicUrl = localImageUri?.let {
|
||||
val storageRef = storage.profileImageStorageRef(auth.getUid()!!)
|
||||
storage.uploadImage(it, storageRef, "profile_pic")
|
||||
}
|
||||
|
||||
val complete = auth.updateProfile(name, profilePicUrl)?.await()
|
||||
complete.postResult("Profile updated")
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteProfile(oldEmail: String, password: String) = io {
|
||||
doTryOperation("Failed to delete profile"){
|
||||
auth.reauthenticate(oldEmail, password)?.await()
|
||||
val complete = auth.deleteProfile()?.await()
|
||||
complete?.let {
|
||||
onSuccess(FirebaseCompletion.ProfileDeleted("Profile deleted"))
|
||||
return@doTryOperation
|
||||
}
|
||||
throw IOException("Failed to complete")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun getUser(): Boolean {
|
||||
return auth.getUser()?.let {
|
||||
onSuccess(it)
|
||||
true
|
||||
} ?: false
|
||||
}
|
||||
|
||||
private fun Void?.postResult(section: String){
|
||||
this?.let {
|
||||
onSuccess(FirebaseCompletion.Changed("$section has been updated"))
|
||||
return
|
||||
}
|
||||
throw IOException("Failed to complete")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package h_mal.appttude.com.espresso
|
||||
|
||||
import androidx.test.espresso.idling.CountingIdlingResource
|
||||
|
||||
object IdlingResourceClass {
|
||||
private val CLASS_NAME = "IdlingResourceClass"
|
||||
|
||||
private const val RESOURCE = "GLOBAL"
|
||||
|
||||
@JvmField val countingIdlingResource = CountingIdlingResource(RESOURCE)
|
||||
|
||||
fun increment() {
|
||||
if (!countingIdlingResource.isIdleNow) {
|
||||
countingIdlingResource.increment()
|
||||
}
|
||||
}
|
||||
|
||||
fun decrement() {
|
||||
if (countingIdlingResource.isIdleNow) {
|
||||
countingIdlingResource.decrement()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.model
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.model
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
data class DriversLicenseObject(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
data class LogbookObject(
|
||||
var photoString: String? = null,
|
||||
var v5cnumber: String? = null
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.model
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.model
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.model
|
||||
package h_mal.appttude.com.model
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
package h_mal.appttude.com.driver.update
|
||||
package h_mal.appttude.com.ui.update
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_update_email.*
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_delete_profile.*
|
||||
|
||||
|
||||
class DeleteProfileFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
class DeleteProfileFragment : BaseFragment<UpdateUserViewModel>(R.layout.fragment_delete_profile) {
|
||||
|
||||
private val viewmodel: UpdateUserViewModel by activityViewModels()
|
||||
override fun getViewModel(): UpdateUserViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_delete_profile
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -0,0 +1,26 @@
|
||||
package h_mal.appttude.com.ui.update
|
||||
|
||||
import android.os.Bundle
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseActivity
|
||||
import h_mal.appttude.com.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.utils.displayToast
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
|
||||
class UpdateActivity : BaseActivity<UpdateUserViewModel>() {
|
||||
|
||||
override val layoutId: Int = R.layout.update_activity
|
||||
override fun getViewModel(): UpdateUserViewModel? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
createViewModel<UpdateUserViewModel>()
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
when(data){
|
||||
is FirebaseCompletion.Changed -> displayToast(data.message)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,21 @@
|
||||
package h_mal.appttude.com.driver.update
|
||||
package h_mal.appttude.com.ui.update
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_update_email.*
|
||||
|
||||
|
||||
class UpdateEmailFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
class UpdateEmailFragment : BaseFragment<UpdateUserViewModel>(R.layout.fragment_update_email) {
|
||||
|
||||
private val viewmodel: UpdateUserViewModel by activityViewModels()
|
||||
override fun getViewModel(): UpdateUserViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_update_email
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -1,19 +1,18 @@
|
||||
package h_mal.appttude.com.driver.update
|
||||
package h_mal.appttude.com.ui.update
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import kotlinx.android.synthetic.main.update_overview_fragment.*
|
||||
|
||||
class UpdateOverviewFragment : BaseFragment<UpdateUserViewModel>(), View.OnClickListener {
|
||||
class UpdateOverviewFragment : BaseFragment<UpdateUserViewModel>(R.layout.update_overview_fragment), View.OnClickListener {
|
||||
|
||||
private val vm by activityViewModels<UpdateUserViewModel>()
|
||||
override fun getViewModel(): UpdateUserViewModel = vm
|
||||
override fun getLayoutId(): Int = R.layout.update_overview_fragment
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -21,6 +20,7 @@ class UpdateOverviewFragment : BaseFragment<UpdateUserViewModel>(), View.OnClick
|
||||
update_email_button.setOnClickListener(this)
|
||||
update_password_button.setOnClickListener(this)
|
||||
update_profile_button.setOnClickListener(this)
|
||||
delete_profile.setOnClickListener(this)
|
||||
}
|
||||
|
||||
private fun View.submit(){
|
||||
@@ -1,23 +1,22 @@
|
||||
package h_mal.appttude.com.driver.update
|
||||
package h_mal.appttude.com.ui.update
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_update_password.*
|
||||
|
||||
|
||||
class UpdatePasswordFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
class UpdatePasswordFragment :
|
||||
BaseFragment<UpdateUserViewModel>(R.layout.fragment_update_password) {
|
||||
|
||||
private val viewmodel: UpdateUserViewModel by activityViewModels()
|
||||
override fun getViewModel(): UpdateUserViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_update_password
|
||||
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -26,7 +25,7 @@ class UpdatePasswordFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
email_sign_up.setOnClickListener { registerUser() }
|
||||
}
|
||||
|
||||
private fun registerUser(){
|
||||
private fun registerUser() {
|
||||
val emailString = email_update.validatePasswordEditText() ?: return
|
||||
val passwordText = password_top.validatePasswordEditText() ?: return
|
||||
val newPassword = password_bottom.validateEmailEditText() ?: return
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.update
|
||||
package h_mal.appttude.com.ui.update
|
||||
|
||||
import android.Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
import android.net.Uri
|
||||
@@ -7,21 +7,22 @@ import android.view.View
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.utils.setPicassoImage
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.utils.setGlideImage
|
||||
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_update_profile.*
|
||||
|
||||
const val TAG_CONST = "non-user"
|
||||
private const val IMAGE_PERMISSION_RESULT = 402
|
||||
class UpdateProfileFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
|
||||
class UpdateProfileFragment : BaseFragment<UpdateUserViewModel>(R.layout.fragment_update_profile) {
|
||||
|
||||
private val viewmodel: UpdateUserViewModel by activityViewModels()
|
||||
override fun getViewModel(): UpdateUserViewModel = viewmodel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_update_profile
|
||||
|
||||
private var imageChangeListener: Boolean = false
|
||||
private var nameChangeListener: Boolean = false
|
||||
@@ -75,7 +76,7 @@ class UpdateProfileFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
}
|
||||
|
||||
private fun setFields(firebaseUser: FirebaseUser) {
|
||||
profile_img.setPicassoImage(firebaseUser.photoUrl)
|
||||
profile_img.setGlideImage(firebaseUser.photoUrl)
|
||||
update_name.apply {
|
||||
setText(firebaseUser.displayName)
|
||||
tag = TAG_CONST
|
||||
@@ -85,7 +86,7 @@ class UpdateProfileFragment : BaseFragment<UpdateUserViewModel>() {
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
this.imageUri = imageUri
|
||||
profile_img.setPicassoImage(imageUri)
|
||||
profile_img.setGlideImage(imageUri)
|
||||
imageChangeListener = true
|
||||
}
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
package h_mal.appttude.com.driver.user
|
||||
package h_mal.appttude.com.ui.user
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_forgot_password.*
|
||||
|
||||
|
||||
class ForgotPasswordFragment : BaseFragment<UserViewModel>() {
|
||||
class ForgotPasswordFragment : BaseFragment<UserViewModel>(R.layout.fragment_forgot_password) {
|
||||
|
||||
private val userViewModel: UserViewModel by activityViewModels()
|
||||
|
||||
override fun getViewModel(): UserViewModel = userViewModel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_forgot_password
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -1,14 +1,14 @@
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
package h_mal.appttude.com.ui.user
|
||||
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import com.google.firebase.auth.AuthResult
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.ui.MainActivity
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseActivity
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
|
||||
|
||||
/**
|
||||
@@ -20,8 +20,8 @@ class LoginActivity : BaseActivity<UserViewModel>() {
|
||||
override val layoutId: Int = R.layout.activity_login
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
createViewModel<UserViewModel>()
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
@@ -1,22 +1,21 @@
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
package h_mal.appttude.com.ui.user
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_login.*
|
||||
|
||||
class LoginFragment : BaseFragment<UserViewModel>() {
|
||||
class LoginFragment : BaseFragment<UserViewModel>(R.layout.fragment_login) {
|
||||
|
||||
private val userViewModel: UserViewModel by activityViewModels()
|
||||
override fun getViewModel(): UserViewModel = userViewModel
|
||||
override fun getLayoutId(): Int = R.layout.fragment_login
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -1,19 +1,18 @@
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
package h_mal.appttude.com.ui.user
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_register.*
|
||||
|
||||
class RegisterFragment : BaseFragment<UserViewModel>() {
|
||||
class RegisterFragment : BaseFragment<UserViewModel>(R.layout.fragment_register) {
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.fragment_register
|
||||
override fun getViewModel(): UserViewModel {
|
||||
val userViewModel: UserViewModel by activityViewModels()
|
||||
return userViewModel
|
||||
@@ -0,0 +1,29 @@
|
||||
package h_mal.appttude.com.ui.user
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
|
||||
|
||||
class SplashScreenFragment : BaseFragment<UserViewModel>(R.layout.fragment_splash_screen) {
|
||||
|
||||
private val userViewModel by activityViewModels<UserViewModel>()
|
||||
override fun getViewModel(): UserViewModel = userViewModel
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
userViewModel.splashscreenCheckUserIsLoggedIn()
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
if (data is FirebaseCompletion.Default) view?.navigateTo(R.id.to_loginFragment)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.view.View
|
||||
import android.view.animation.Animation
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.icu.util.Calendar
|
||||
import java.text.ParseException
|
||||
@@ -1,10 +1,10 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.ValueEventListener
|
||||
import h_mal.appttude.com.driver.data.EventResponse
|
||||
import h_mal.appttude.com.data.EventResponse
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
|
||||
open class Event<out T>(private val content: T) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
enum class Navigations(val value: String) {
|
||||
Main("MainActivity");
|
||||
@@ -1,9 +1,10 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.pm.PackageManager.*
|
||||
import android.net.Uri
|
||||
import android.provider.Settings
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
@@ -23,7 +24,7 @@ object PermissionsUtils {
|
||||
fun Context.isPermissionsAllowed(permission: String): Boolean {
|
||||
return ContextCompat.checkSelfPermission(
|
||||
this, permission
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) == PERMISSION_GRANTED
|
||||
}
|
||||
|
||||
|
||||
@@ -43,8 +44,7 @@ object PermissionsUtils {
|
||||
requireActivity().askForPermissions(permission, requestCode)
|
||||
|
||||
fun isGranted(grantResults: IntArray): Boolean =
|
||||
grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED
|
||||
|
||||
grantResults.getOrNull(0)?.equals(PERMISSION_GRANTED) ?: false
|
||||
|
||||
private fun Context.showPermissionDeniedDialog() {
|
||||
AlertDialog.Builder(this)
|
||||
@@ -1,7 +1,7 @@
|
||||
package h_mal.appttude.com.driver.utils
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.widget.EditText
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.R
|
||||
|
||||
|
||||
object TextValidationUtils {
|
||||
152
app/src/main/java/h_mal/appttude/com/utils/ViewUtils.kt
Normal file
152
app/src/main/java/h_mal/appttude/com/utils/ViewUtils.kt
Normal file
@@ -0,0 +1,152 @@
|
||||
package h_mal.appttude.com.utils
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.DataSource
|
||||
import com.bumptech.glide.load.engine.GlideException
|
||||
import com.bumptech.glide.request.RequestListener
|
||||
import com.squareup.picasso.Picasso
|
||||
import com.squareup.picasso.Target
|
||||
import h_mal.appttude.com.R
|
||||
import com.bumptech.glide.request.target.Target as GlideRequestTarget
|
||||
|
||||
fun View.show() {
|
||||
this.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
fun View.hide() {
|
||||
this.visibility = View.GONE
|
||||
}
|
||||
|
||||
fun Context.displayToast(message: String) {
|
||||
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
fun Fragment.displayToast(message: String) {
|
||||
requireContext().displayToast(message)
|
||||
}
|
||||
|
||||
fun EditText.setEnterPressedListener(action: () -> Unit) {
|
||||
setOnEditorActionListener(TextView.OnEditorActionListener { _, id, _ ->
|
||||
if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
|
||||
action()
|
||||
return@OnEditorActionListener true
|
||||
}
|
||||
false
|
||||
})
|
||||
}
|
||||
|
||||
fun ImageView.setGlideImage(
|
||||
url: String?,
|
||||
@DrawableRes placeholderRes: Int = R.drawable.choice_img_round
|
||||
) {
|
||||
|
||||
val c = Glide.with(this)
|
||||
.load(url)
|
||||
viewTreeObserver.addOnPreDrawListener {
|
||||
c.override(width, height)
|
||||
true
|
||||
}
|
||||
c.placeholder(placeholderRes)
|
||||
.fitCenter()
|
||||
.into(this)
|
||||
}
|
||||
|
||||
fun ImageView.setGlideImage(
|
||||
url: Uri?,
|
||||
@DrawableRes placeholderRes: Int = R.drawable.choice_img_round
|
||||
) {
|
||||
val c = Glide.with(this)
|
||||
.load(url)
|
||||
viewTreeObserver.addOnPreDrawListener {
|
||||
c.override(width, height)
|
||||
true
|
||||
}
|
||||
c.placeholder(placeholderRes)
|
||||
.into(this)
|
||||
}
|
||||
|
||||
fun ImageView.setPicassoImage(
|
||||
url: String?,
|
||||
@DrawableRes placeholderRes: Int = R.drawable.choice_img_round
|
||||
) {
|
||||
|
||||
val creator = Picasso.get()
|
||||
.load(url)
|
||||
viewTreeObserver.addOnPreDrawListener {
|
||||
creator.resize(width, height)
|
||||
true
|
||||
}
|
||||
creator
|
||||
.placeholder(placeholderRes)
|
||||
.into(object : Target {
|
||||
override fun onBitmapLoaded(bitmap: Bitmap?, from: Picasso.LoadedFrom?) {
|
||||
setImageBitmap(bitmap)
|
||||
setOnClickListener {
|
||||
context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
|
||||
}
|
||||
}
|
||||
override fun onBitmapFailed(e: Exception?, errorDrawable: Drawable?) {}
|
||||
override fun onPrepareLoad(placeHolderDrawable: Drawable?) {}
|
||||
})
|
||||
}
|
||||
|
||||
fun ImageView.setPicassoImage(
|
||||
url: Uri?,
|
||||
@DrawableRes placeholderRes: Int = R.drawable.choice_img_round
|
||||
) {
|
||||
val creator = Picasso.get()
|
||||
.load(url)
|
||||
viewTreeObserver.addOnPreDrawListener {
|
||||
creator.resize(width, height)
|
||||
true
|
||||
}
|
||||
creator
|
||||
.placeholder(placeholderRes)
|
||||
.into(this)
|
||||
}
|
||||
|
||||
fun ViewGroup.generateView(layoutId: Int): View = LayoutInflater
|
||||
.from(context)
|
||||
.inflate(layoutId, this, false)
|
||||
|
||||
fun Int.dpToPx(): Int = (this * Resources.getSystem().displayMetrics.density).toInt()
|
||||
|
||||
fun SearchView.onSubmitListener(searchSubmit: (String) -> Unit) {
|
||||
this.setOnQueryTextListener(object :
|
||||
SearchView.OnQueryTextListener {
|
||||
override fun onQueryTextSubmit(s: String): Boolean {
|
||||
searchSubmit.invoke(s)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onQueryTextChange(s: String): Boolean {
|
||||
return true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun Fragment.hideKeyboard() {
|
||||
val imm = context?.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
|
||||
imm?.hideSoftInputFromWindow(view?.windowToken, 0)
|
||||
}
|
||||
|
||||
fun EditText.extractString(): String = text.toString().trim()
|
||||
@@ -1,21 +1,20 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
|
||||
class DriverLicenseViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<DriversLicenseObject>(database, storage) {
|
||||
val uid = auth.getUid()!!
|
||||
) : DataSubmissionBaseViewModel<DriversLicenseObject>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getDriverLicenseRef(uid)
|
||||
override val storageRef: StorageReference = storage.driversLicenseStorageRef(uid)
|
||||
@@ -1,21 +1,20 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.DriverProfileObject
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.model.DriverProfileObject
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
|
||||
class DriverProfileViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<DriverProfileObject>(database, storage) {
|
||||
val uid = auth.getUid()!!
|
||||
) : DataSubmissionBaseViewModel<DriverProfileObject>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getDriverDetailsRef(uid)
|
||||
override val storageRef: StorageReference = storage.profileImageStorageRef(uid)
|
||||
@@ -1,21 +1,20 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.Objects.InsuranceObject
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.model.InsuranceObject
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
|
||||
class InsuranceViewModel (
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<InsuranceObject>(database, storage) {
|
||||
val uid = auth.getUid()!!
|
||||
) : DataSubmissionBaseViewModel<InsuranceObject>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getInsuranceDetailsRef(uid)
|
||||
override val storageRef: StorageReference? = storage.insuranceStorageRef(uid)
|
||||
@@ -1,21 +1,21 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.Objects.LogbookObject
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.model.LogbookObject
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
|
||||
class LogbookViewModel (
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<LogbookObject>(database, storage) {
|
||||
val uid = auth.getUid()!!
|
||||
) : DataSubmissionBaseViewModel<LogbookObject>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getLogbookRef(uid)
|
||||
override val storageRef: StorageReference = storage.logBookStorageRef(uid)
|
||||
override val objectName: String = "Log book"
|
||||
@@ -1,24 +1,22 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import h_mal.appttude.com.driver.base.BaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.driver.utils.getDataFromDatabaseRef
|
||||
import h_mal.appttude.com.base.BaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
import h_mal.appttude.com.utils.getDataFromDatabaseRef
|
||||
|
||||
class MainViewModel(
|
||||
private val firebaseAuth: FirebaseAuthentication,
|
||||
private val firebaseDatabase: FirebaseDatabaseSource
|
||||
) : BaseViewModel(){
|
||||
|
||||
val uid = firebaseAuth.getUid()!!
|
||||
|
||||
fun getRole() = io {
|
||||
doTryOperation("failed to retrieve data") {
|
||||
val uid = firebaseAuth.getUid() ?: return@doTryOperation
|
||||
val ref = firebaseDatabase.getUserRoleRef(uid)
|
||||
val role = ref.getDataFromDatabaseRef<String>()
|
||||
role?.apply { onSuccess(this) } ?: onError("No role found")
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.model.MotObject
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
|
||||
class MotViewModel (
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<MotObject>(database, storage) {
|
||||
val uid = auth.getUid()!!
|
||||
) : DataSubmissionBaseViewModel<MotObject>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getMotDetailsRef(uid)
|
||||
override val storageRef: StorageReference? = storage.motStorageRef(uid)
|
||||
@@ -1,21 +1,20 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
package h_mal.appttude.com.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.model.PrivateHireObject
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
|
||||
class PrivateHireLicenseViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<PrivateHireObject>(database, storage) {
|
||||
val uid = auth.getUid()!!
|
||||
) : DataSubmissionBaseViewModel<PrivateHireObject>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getPrivateHireRef(uid)
|
||||
override val storageRef: StorageReference = storage.privateHireStorageRef(uid)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user