diff --git a/.idea/other.xml b/.idea/other.xml
index 720dd0e..dba9935 100644
--- a/.idea/other.xml
+++ b/.idea/other.xml
@@ -124,6 +124,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 282e5e2..70a777e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
applicationId "in.sminnovations.smiadmin"
minSdk 26
targetSdk 34
- versionCode 3
- versionName "1.3"
+ versionCode 4
+ versionName "1.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cd084a3..1ce7bde 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,9 +17,9 @@
android:requestLegacyExternalStorage="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
- android:icon="@mipmap/ic_launcher"
+ android:icon="@drawable/smi_logo"
android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
+ android:roundIcon="@drawable/smi_logo"
android:supportsRtl="true"
android:theme="@style/Theme.SMIAdmin"
tools:targetApi="31">
diff --git a/app/src/main/java/in/sminnovations/smiadmin/MainActivity.kt b/app/src/main/java/in/sminnovations/smiadmin/MainActivity.kt
index f58bd42..81ca4e8 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/MainActivity.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/MainActivity.kt
@@ -1,6 +1,7 @@
package `in`.sminnovations.smiadmin
import android.os.Bundle
+import android.view.View
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
@@ -29,7 +30,21 @@ class MainActivity : AppCompatActivity() {
navController = navHostFragment.navController
// Setup the bottom navigation with the NavController
- binding.navView.setupWithNavController(navController)
+ binding.navView?.let { bottomNav ->
+ bottomNav.setupWithNavController(navController)
+
+ // Hide bottom nav on specific destinations
+ navController.addOnDestinationChangedListener { _, destination, _ ->
+ when (destination.id) {
+ R.id.navigation_login -> {
+ bottomNav.visibility = View.GONE
+ }
+ else -> {
+ bottomNav.visibility = View.VISIBLE
+ }
+ }
+ }
+ }
// Set up navigation item selection listener
binding.navView.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/in/sminnovations/smiadmin/data/Employee.kt b/app/src/main/java/in/sminnovations/smiadmin/data/Employee.kt
index d8f7406..83a7f93 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/data/Employee.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/data/Employee.kt
@@ -2,7 +2,7 @@ package `in`.sminnovations.smiadmin.data
data class Employee(
var Id: String = "",
- val Name: String = "",
+ var Name: String = "",
var EmployeeStatus: Boolean = false,
var Designation:String = "",
var DateOfJoining: String = "",
@@ -10,4 +10,6 @@ data class Employee(
var Mobile: String = "",
var Email: String = "",
var CreatedAt: String = "",
+ var from: String="",
+ var role:String= "user"
)
diff --git a/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeListAdapter.kt b/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeListAdapter.kt
index 4ed5788..f135f9f 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeListAdapter.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeListAdapter.kt
@@ -10,7 +10,7 @@ import `in`.sminnovations.smiadmin.R
import `in`.sminnovations.smiadmin.data.Employee
class EmployeeListAdapter(
- private val employees: MutableList = mutableListOf(),
+ val employees: MutableList = mutableListOf(),
private val onStatusChanged: (Employee, Boolean) -> Unit
) : RecyclerView.Adapter() {
@@ -32,7 +32,7 @@ class EmployeeListAdapter(
holder.statusSwitch.setOnCheckedChangeListener(null)
// Set the text and switch state
- holder.nameTextView.text = employee.Name
+ holder.nameTextView.text = employee.Name + " (" + employee.from + ")"
holder.statusSwitch.isChecked = employee.EmployeeStatus
// Set up the new listener after setting the checked state
diff --git a/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeQrAdapter.kt b/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeQrAdapter.kt
index db625c2..42a844b 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeQrAdapter.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeQrAdapter.kt
@@ -34,7 +34,7 @@ class EmployeeQrAdapter(
fun bind(employee: Employee) {
binding.apply {
- textEmployeeName.text = employee.Name
+ textEmployeeName.text = employee.Name + " (" + employee.from + ")"
textEmployeeId.text = employee.Id
buttonShare.setOnClickListener { onShareClick(employee) }
diff --git a/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeStatusListAdapter.kt b/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeStatusListAdapter.kt
index aea14c4..1c328c2 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeStatusListAdapter.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/ui/adapter/EmployeeStatusListAdapter.kt
@@ -26,7 +26,7 @@ class EmployeeStatusListAdapter(
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val employee = employees[position]
- holder.nameTextView.text = employee.Name
+ holder.nameTextView.text = employee.Name + " (" + employee.from + ")"
holder.itemView.setOnClickListener {
onEmployeeClick(employee)
}
diff --git a/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/AddEmployeeFragment.kt b/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/AddEmployeeFragment.kt
index d4cca60..70607a0 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/AddEmployeeFragment.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/AddEmployeeFragment.kt
@@ -6,6 +6,7 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.navigation.fragment.findNavController
import com.google.firebase.firestore.FirebaseFirestore
@@ -38,7 +39,12 @@ class AddEmployeeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ val items = arrayOf("IISc", "SMI")
+ val adapter = ArrayAdapter(requireActivity(), R.layout.list_item, items)
+ binding.etEmployeeFrom.setAdapter(adapter)
+ binding.etEmployeeFrom.isFocusable = false
+ binding.etEmployeeFrom.isClickable = true
setupDatePickers()
setupSubmitButton()
}
@@ -138,7 +144,8 @@ class AddEmployeeFragment : Fragment() {
Designation = binding.etEmployeePosition.text.toString().trim(),
dateOfBirth = dateFormatter.format(dateOfBirth?.time ?: Date()),
DateOfJoining = dateFormatter.format(dateOfJoining?.time ?: Date()),
- CreatedAt = dateFormatter.format(Date()) // Current date in dd/MM/yyyy format
+ CreatedAt = dateFormatter.format(Date()), // Current date in dd/MM/yyyy format
+ from = binding.etEmployeeFrom.text.toString().trim(),
)
db.collection("employees")
diff --git a/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/HomeFragment.kt b/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/HomeFragment.kt
index 0119ef2..85d35f9 100644
--- a/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/HomeFragment.kt
+++ b/app/src/main/java/in/sminnovations/smiadmin/ui/fragments/HomeFragment.kt
@@ -1,7 +1,9 @@
package `in`.sminnovations.smiadmin.ui.fragments
import android.Manifest
+import android.app.AlertDialog
import android.app.ProgressDialog
+import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
@@ -12,6 +14,8 @@ import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
+import android.widget.RadioGroup
import android.widget.Toast
import androidx.cardview.widget.CardView
import androidx.core.content.ContextCompat
@@ -64,12 +68,39 @@ class HomeFragment : Fragment() {
private fun showMonthYearPicker() {
MonthYearPickerDialog().apply {
setOnDateSelectedListener { year, month ->
- downloadAttendanceReport(year, month)
+ showReportDialog(year, month, requireActivity())
+ //downloadAttendanceReport(year, month)
}
}.show(parentFragmentManager, "MonthYearPicker")
}
+ private fun showReportDialog(year: Int, month: Int, context: Context) {
+ val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_report_source, null)
+ val dialog = AlertDialog.Builder(context)
+ .setView(dialogView)
+ .setCancelable(true)
+ .create()
- private fun downloadAttendanceReport(year: Int, month: Int) {
+ val radioGroup = dialogView.findViewById(R.id.rgSource)
+ val downloadButton = dialogView.findViewById