- flavours compartmentalised

Took 10 hours 11 minutes
This commit is contained in:
2023-03-28 21:38:33 +01:00
parent f87d986849
commit 16433d0852
130 changed files with 814 additions and 706 deletions

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round">
</application>
</manifest>

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.objects
package h_mal.appttude.com.driver.admin.objects
class ApprovalsObject {
@@ -29,6 +29,6 @@ class ApprovalsObject {
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
this.ph_car_approval = private_hire_vehicle_approval
}
}

View File

@@ -0,0 +1,33 @@
package h_mal.appttude.com.driver.admin.objects
import h_mal.appttude.com.driver.model.*
import java.util.*
class ArchiveObject {
var driver_license: HashMap<String, DriversLicense>? = null
var private_hire: HashMap<String, PrivateHireLicense>? = null
var vehicle_details: HashMap<String, VehicleProfile>? = null
var insurance_details: HashMap<String, Insurance>? = null
var mot_details: HashMap<String, Mot>? = null
var log_book: HashMap<String, Logbook>? = null
var ph_car: HashMap<String, PrivateHireVehicle>? = null
constructor()
constructor(
driver_license: HashMap<String, DriversLicense>?,
private_hire: HashMap<String, PrivateHireLicense>?,
vehicle_details: HashMap<String, VehicleProfile>?,
insurance_details: HashMap<String, Insurance>?,
mot_details: HashMap<String, Mot>?,
log_book: HashMap<String, Logbook>?,
private_hire_vehicle: HashMap<String, PrivateHireVehicle>?
) {
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
}
}

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.objects
package h_mal.appttude.com.driver.admin.objects
class UserObject {

View File

@@ -1,7 +1,7 @@
package h_mal.appttude.com.objects
package h_mal.appttude.com.driver.admin.objects
import h_mal.appttude.com.objects.wholeObject.DriverProfile
import h_mal.appttude.com.objects.wholeObject.VehicleProfile
import h_mal.appttude.com.driver.admin.objects.wholeObject.DriverProfile
import h_mal.appttude.com.driver.admin.objects.wholeObject.VehicleProfile
class WholeDriverObject {

View File

@@ -0,0 +1,24 @@
package h_mal.appttude.com.driver.admin.objects.wholeObject
import h_mal.appttude.com.driver.model.DriverProfile
import h_mal.appttude.com.driver.model.DriversLicense
import h_mal.appttude.com.driver.model.PrivateHireLicense
class DriverProfile {
var driver_profile: DriverProfile? = null
var driver_license: DriversLicense? = null
var private_hire: PrivateHireLicense? = null
constructor(
driver_profile: DriverProfile?,
driver_license: DriversLicense?,
private_hire: PrivateHireLicense?
) {
this.driver_profile = driver_profile
this.driver_license = driver_license
this.private_hire = private_hire
}
constructor()
}

View File

@@ -1,8 +1,8 @@
package h_mal.appttude.com.objects.wholeObject
package h_mal.appttude.com.driver.admin.objects.wholeObject
import android.os.Parcel
import android.os.Parcelable
import h_mal.appttude.com.objects.WholeDriverObject
import h_mal.appttude.com.driver.admin.objects.WholeDriverObject
class MappedObject : Parcelable {

View File

@@ -0,0 +1,31 @@
package h_mal.appttude.com.driver.admin.objects.wholeObject
import h_mal.appttude.com.driver.model.Insurance
import h_mal.appttude.com.driver.model.Logbook
import h_mal.appttude.com.driver.model.PrivateHireVehicle
import h_mal.appttude.com.driver.model.Mot
import h_mal.appttude.com.driver.model.VehicleProfile
class VehicleProfile {
var insurance_details: Insurance? = null
var log_book: Logbook? = null
var mot_details: Mot? = null
var vehicle_details: VehicleProfile? = null
var privateHireVehicle: PrivateHireVehicle? = null
constructor()
constructor(
insurance_details: Insurance?,
log_book: Logbook?,
mot_details: Mot?,
vehicle_details: VehicleProfile?,
private_hire_vehicle: PrivateHireVehicle?
) {
this.insurance_details = insurance_details
this.log_book = log_book
this.mot_details = mot_details
this.vehicle_details = vehicle_details
this.privateHireVehicle = private_hire_vehicle
}
}

View File

@@ -1,12 +1,12 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import h_mal.appttude.com.objects.wholeObject.MappedObject
import h_mal.appttude.com.R
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
import h_mal.appttude.com.driver.R
class ApprovalListAdapter(

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.app.AlertDialog
import android.content.Context

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.app.AlertDialog
import android.content.DialogInterface
@@ -8,14 +8,14 @@ import android.util.Log
import android.view.*
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
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.objects.WholeDriverObject
import h_mal.appttude.com.objects.wholeObject.MappedObject
import h_mal.appttude.com.R
import kotlinx.android.synthetic.admin.fragment_home_super_user.*
import h_mal.appttude.com.driver.admin.objects.WholeDriverObject
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
import h_mal.appttude.com.driver.R
import java.io.IOException
import java.util.*
@@ -42,7 +42,7 @@ class HomeSuperUserFragment : Fragment() {
// Inflate the layout for this fragment
val view: View = inflater.inflate(R.layout.fragment_home_super_user, container, false)
recycler_view.apply {
view.findViewById<RecyclerView>(R.id.recycler_view).apply {
layoutManager = LinearLayoutManager(context)
recyclerViewAdapter = RecyclerViewAdapter(context, mappedObjectList)
adapter = recyclerViewAdapter

View File

@@ -0,0 +1,50 @@
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import com.google.firebase.auth.FirebaseUser
import h_mal.appttude.com.driver.R
import h_mal.appttude.com.driver.base.DrawerActivity
import h_mal.appttude.com.driver.databinding.ActivityMainBinding
import h_mal.appttude.com.driver.databinding.NavHeaderMainBinding
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.MainViewModel
class MainActivity : DrawerActivity<MainViewModel, ActivityMainBinding>() {
override val containerId: Int = R.id.container
override val drawerLayoutId: Int = R.id.drawer_layout
override val toolbarId: Int = R.id.toolbar
override val navViewId: Int = R.id.nav_view
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel.getUserDetails()
setupLogoutInDrawer()
}
override fun onSuccess(data: Any?) {
super.onSuccess(data)
when (data) {
is FirebaseUser -> {
setupDrawer(data)
}
}
}
private fun setupDrawer(user: FirebaseUser) {
NavHeaderMainBinding.inflate(layoutInflater).apply {
driverEmail.text = user.email
driverName.text = user.displayName
profileImage.setGlideImage(user.photoUrl)
}
}
private fun setupLogoutInDrawer() {
binding.logout.setOnClickListener {
viewModel.logOut()
}
}
}

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.app.AlertDialog
import android.content.Context
@@ -12,9 +12,9 @@ import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.squareup.picasso.Picasso
import h_mal.appttude.com.objects.UserObject
import h_mal.appttude.com.objects.wholeObject.MappedObject
import h_mal.appttude.com.R
import h_mal.appttude.com.driver.admin.objects.UserObject
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
import h_mal.appttude.com.driver.R
class RecyclerViewAdapter constructor(var context: Context?, var objects: List<MappedObject>?) :

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import android.util.Log
@@ -7,8 +7,8 @@ import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import androidx.fragment.app.Fragment
import h_mal.appttude.com.objects.wholeObject.MappedObject
import h_mal.appttude.com.R
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
import h_mal.appttude.com.driver.R
class UserMainFragment : Fragment() {

View File

@@ -1,33 +0,0 @@
package h_mal.appttude.com.objects
import h_mal.appttude.com.model.*
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
}
}

View File

@@ -1,24 +0,0 @@
package h_mal.appttude.com.objects.wholeObject
import h_mal.appttude.com.model.DriverProfileObject
import h_mal.appttude.com.model.DriversLicenseObject
import h_mal.appttude.com.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()
}

View File

@@ -1,38 +0,0 @@
package h_mal.appttude.com.objects.wholeObject
import h_mal.appttude.com.model.InsuranceObject
import h_mal.appttude.com.model.LogbookObject
import h_mal.appttude.com.model.PrivateHireVehicleObject
import h_mal.appttude.com.model.MotObject
import h_mal.appttude.com.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
}
}

View File

@@ -1,101 +0,0 @@
package h_mal.appttude.com.ui
import android.os.Bundle
import android.view.MenuItem
import android.view.View
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 h_mal.appttude.com.R
import h_mal.appttude.com.base.BaseActivity
import h_mal.appttude.com.dialogs.ExitDialog.displayExitDialog
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.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)
supportActionBar?.setDisplayShowTitleEnabled(false)
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.setGlideImage(user.photoUrl)
}
private fun setupLogoutInDrawer() {
logout.setOnClickListener {
getViewModel().logOut()
}
}
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
}
}

View File

@@ -8,7 +8,8 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
tools:listitem="@layout/list_item_layout">
</androidx.recyclerview.widget.RecyclerView>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation 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/main_navigation"
app:startDestination="@id/homeAdminFragment">
<fragment
android:id="@+id/homeAdminFragment"
android:name="h_mal.appttude.com.driver.ui.HomeSuperUserFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home_super_user">
</fragment>
</navigation>