mirror of
https://github.com/hmalik144/Driver.git
synced 2026-03-18 15:36:03 +00:00
- refactoring of admin app
- file structure updated Took 34 hours 38 minutes
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="h_mal.appttude.com.driver">
|
||||
|
||||
<application
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round">
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,74 @@
|
||||
package h_mal.appttude.com.driver.application
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.data.prefs.PreferenceProvider
|
||||
import h_mal.appttude.com.driver.viewmodels.*
|
||||
|
||||
class ApplicationViewModelFactory(
|
||||
private val auth: FirebaseAuthSource,
|
||||
private val database: FirebaseDatabaseSource,
|
||||
private val storage: FirebaseStorageSource,
|
||||
private val preferences: PreferenceProvider
|
||||
) : ViewModelProvider.Factory {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||
with(modelClass) {
|
||||
return when {
|
||||
isAssignableFrom(UserViewModel::class.java) -> UserViewModel(auth)
|
||||
isAssignableFrom(MainViewModel::class.java) -> MainViewModel(auth, database)
|
||||
isAssignableFrom(UpdateUserViewModel::class.java) -> UpdateUserViewModel(
|
||||
auth,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(RoleViewModel::class.java) -> RoleViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(DriverLicenseViewModel::class.java) -> DriverLicenseViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(DriverProfileViewModel::class.java) -> DriverProfileViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(PrivateHireLicenseViewModel::class.java) -> PrivateHireLicenseViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(VehicleProfileViewModel::class.java) -> VehicleProfileViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(InsuranceViewModel::class.java) -> InsuranceViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(MotViewModel::class.java) -> MotViewModel(auth, database, storage)
|
||||
isAssignableFrom(LogbookViewModel::class.java) -> LogbookViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
isAssignableFrom(PrivateHireVehicleViewModel::class.java) -> PrivateHireVehicleViewModel(
|
||||
auth,
|
||||
database,
|
||||
storage
|
||||
)
|
||||
else -> throw IllegalArgumentException("Unknown ViewModel class")
|
||||
} as T
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.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.DriversLicense
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class DriverLicenseViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<DriversLicense>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getDriverLicenseRef(uid)
|
||||
override val storageRef: StorageReference = storage.driversLicenseStorageRef(uid)
|
||||
override val objectName: String = "drivers license"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<DriversLicense>()
|
||||
|
||||
override fun setDataInDatabase(data: DriversLicense, localImageUri: Uri?) = io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
val imageUrl = getImageUrl(localImageUri, data.licenseImageString)
|
||||
data.licenseImageString = imageUrl
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.DriverProfile
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class DriverProfileViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<DriverProfile>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getDriverDetailsRef(uid)
|
||||
override val storageRef: StorageReference = storage.profileImageStorageRef(uid)
|
||||
override val objectName: String = "drivers profile"
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<DriverProfile>()
|
||||
|
||||
override fun setDataInDatabase(data: DriverProfile, localImageUri: Uri?) = io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
|
||||
val imageUrl = getImageUrl(localImageUri, data.driverPic)
|
||||
data.driverPic = imageUrl
|
||||
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.Insurance
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class InsuranceViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<Insurance>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getInsuranceDetailsRef(uid)
|
||||
override val storageRef: StorageReference = storage.insuranceStorageRef(uid)
|
||||
override val objectName: String = "insurance"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<Insurance>()
|
||||
|
||||
override fun setDataInDatabase(data: Insurance, localImageUris: List<Uri?>?) = io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
val imageUrls = if (!localImageUris.isNullOrEmpty()) {
|
||||
getImageUrls(localImageUris).toMutableList()
|
||||
} else {
|
||||
data.photoStrings
|
||||
}
|
||||
if (imageUrls.isNullOrEmpty()) {
|
||||
onError("no images selected")
|
||||
return@doTryOperation
|
||||
}
|
||||
|
||||
data.photoStrings = imageUrls
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.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.Logbook
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class LogbookViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<Logbook>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getLogbookRef(uid)
|
||||
override val storageRef: StorageReference = storage.logBookStorageRef(uid)
|
||||
override val objectName: String = "Log book"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<Logbook>()
|
||||
|
||||
override fun setDataInDatabase(data: Logbook, localImageUri: Uri?) = io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
val imageUrl = getImageUrl(localImageUri, data.photoString)
|
||||
data.photoString = imageUrl
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.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.Mot
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class MotViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<Mot>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getMotDetailsRef(uid)
|
||||
override val storageRef: StorageReference? = storage.motStorageRef(uid)
|
||||
override val objectName: String = "vehicle profile"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<Mot>()
|
||||
|
||||
override fun setDataInDatabase(data: Mot, localImageUri: Uri?) = io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
val imageUrl = getImageUrl(localImageUri, data.motImageString)
|
||||
data.motImageString = imageUrl
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.PrivateHireLicense
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class PrivateHireLicenseViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<PrivateHireLicense>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getPrivateHireRef(uid)
|
||||
override val storageRef: StorageReference = storage.privateHireStorageRef(uid)
|
||||
override val objectName: String = "private hire license"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<PrivateHireLicense>()
|
||||
|
||||
override fun setDataInDatabase(data: PrivateHireLicense, localImageUri: Uri?) = io {
|
||||
doTryOperation("Failed to upload private hire license") {
|
||||
val imageUrl = getImageUrl(localImageUri, data.phImageString)
|
||||
val driverLicense = PrivateHireLicense(
|
||||
phExpiry = data.phExpiry,
|
||||
phNumber = data.phNumber,
|
||||
phImageString = imageUrl
|
||||
)
|
||||
|
||||
postDataToDatabase(driverLicense)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.PrivateHireVehicle
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class PrivateHireVehicleViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<PrivateHireVehicle>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getPrivateHireVehicleRef(uid)
|
||||
override val storageRef: StorageReference = storage.privateHireVehicleStorageRef(uid)
|
||||
override val objectName: String = "private hire vehicle license"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<PrivateHireVehicle>()
|
||||
|
||||
override fun setDataInDatabase(data: PrivateHireVehicle, localImageUri: Uri?) = io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
val imageUrl = getImageUrl(localImageUri, data.phCarImageString)
|
||||
data.phCarImageString = imageUrl
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package h_mal.appttude.com.driver.viewmodels
|
||||
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.base.DataSubmissionBaseViewModel
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.model.VehicleProfile
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
|
||||
class VehicleProfileViewModel(
|
||||
auth: FirebaseAuthentication,
|
||||
database: FirebaseDatabaseSource,
|
||||
storage: FirebaseStorageSource
|
||||
) : DataSubmissionBaseViewModel<VehicleProfile>(auth, database, storage) {
|
||||
|
||||
override val databaseRef: DatabaseReference = database.getVehicleDetailsRef(uid)
|
||||
override val storageRef: StorageReference? = null
|
||||
override val objectName: String = "vehicle profile"
|
||||
|
||||
override fun getDataFromDatabase() = retrieveDataFromDatabase<VehicleProfile>()
|
||||
|
||||
override fun setDataInDatabase(data: VehicleProfile) {
|
||||
io {
|
||||
doTryOperation("Failed to upload $objectName") {
|
||||
postDataToDatabase(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
46
app/src/driver/res/layout/activity_main.xml
Normal file
46
app/src/driver/res/layout/activity_main.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:openDrawer="start">
|
||||
|
||||
<include
|
||||
android:id="@+id/app_bar_layout"
|
||||
layout="@layout/app_bar_main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:fitsSystemWindows="true"
|
||||
app:itemTextColor="@android:color/white"
|
||||
app:headerLayout="@layout/nav_header_main"
|
||||
app:menu="@menu/activity_main_drawer">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/logout"
|
||||
style="@style/headerStyle"
|
||||
android:background="@color/colour_nine"
|
||||
android:textSize="14sp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/logout"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
</com.google.android.material.navigation.NavigationView>
|
||||
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
@@ -1,4 +1,3 @@
|
||||
<resources>
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
<string name="app_name">Driver Choice cars</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user