created PDFGenerator daily.kt

This commit is contained in:
sathwikcs
2025-03-18 17:44:14 +05:30
parent 811f71049d
commit 53149d0361

View File

@@ -23,12 +23,16 @@ import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import `in`.sminnovations.smiadmin.data.Constant.STORAGE_PERMISSION_CODE
import `in`.sminnovations.smiadmin.R
import `in`.sminnovations.smiadmin.ui.utils.DailyMonthYearPickerDialog
import `in`.sminnovations.smiadmin.ui.utils.ExportTask
import `in`.sminnovations.smiadmin.ui.utils.MonthYearPickerDialog
import `in`.sminnovations.smiadmin.ui.utils.dailyReportExport
import kotlinx.coroutines.Job
import java.util.Calendar
class HomeFragment : Fragment() {
private lateinit var exportTask: ExportTask
private lateinit var dailyReportExport: dailyReportExport
private var currentExcelTask: Job? = null
override fun onCreateView(
@@ -37,9 +41,10 @@ class HomeFragment : Fragment() {
savedInstanceState: Bundle?
): View? {
exportTask = ExportTask(this)
dailyReportExport = dailyReportExport(this)
return inflater.inflate(R.layout.fragment_home, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -63,6 +68,13 @@ class HomeFragment : Fragment() {
requestStoragePermission()
}
}
view.findViewById<CardView>(R.id.cardDownloadDailyReport).setOnClickListener{
if(checkStoragePermission()){
showDailyMonthYearPicker()
}else{
requestStoragePermission()
}
}
}
private fun showMonthYearPicker() {
@@ -73,6 +85,15 @@ class HomeFragment : Fragment() {
}
}.show(parentFragmentManager, "MonthYearPicker")
}
private fun showDailyMonthYearPicker(){
DailyMonthYearPickerDialog().apply {
setOnDateSelectedListener {
showDailyReportDialog(it,requireContext())
}
}.show(parentFragmentManager,"Daily Date Picker")
}
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)
@@ -112,6 +133,19 @@ class HomeFragment : Fragment() {
progressDialog.dismiss()
}
private fun downloadAttendanceDailyReport(date : Calendar, source: String) {
currentExcelTask?.cancel()
val progressDialog = ProgressDialog(requireContext()).apply {
setMessage("Generating report...")
setCancelable(false)
show()
}
dailyReportExport.exportAttendance(date =date,source =source)
progressDialog.dismiss()
}
private fun checkStoragePermission(): Boolean {
return if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) {
ContextCompat.checkSelfPermission(
@@ -154,6 +188,7 @@ class HomeFragment : Fragment() {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted, now show the picker
showMonthYearPicker()
} else {
Toast.makeText(
requireContext(),
@@ -163,8 +198,36 @@ class HomeFragment : Fragment() {
}
}
}
private fun showDailyReportDialog(date : Calendar, context: Context) {
val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_report_source, null)
val dialog = AlertDialog.Builder(context)
.setView(dialogView)
.setCancelable(true)
.create()
val radioGroup = dialogView.findViewById<RadioGroup>(R.id.rgSource)
val downloadButton = dialogView.findViewById<Button>(R.id.btnDownload)
downloadButton.setOnClickListener {
val selectedSource = when (radioGroup.checkedRadioButtonId) {
R.id.rbSMI -> "SMI"
R.id.rbIISC -> "IISc"
else -> null
}
if (selectedSource != null) {
downloadAttendanceDailyReport(date, selectedSource)
dialog.dismiss()
} else {
Toast.makeText(context, "Please select a source", Toast.LENGTH_SHORT).show()
}
}
dialog.show()
}
override fun onDestroy() {
super.onDestroy()
dailyReportExport.cleanup()
exportTask.cleanup()
}
}