Skip to content
Snippets Groups Projects
Commit a1d6df5c authored by Vieri Firdaus's avatar Vieri Firdaus
Browse files

feat : input data

parent 0f9e61f1
1 merge request!8Dev
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application <application
android:name=".MainApp" android:name=".MainApp"
...@@ -21,6 +23,15 @@ ...@@ -21,6 +23,15 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.PSI" android:theme="@style/Theme.PSI"
tools:targetApi="31"> tools:targetApi="31">
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<activity <activity
android:name=".TransactionDetailActivity" android:name=".TransactionDetailActivity"
android:exported="false" /> android:exported="false" />
......
...@@ -12,6 +12,7 @@ import android.view.LayoutInflater ...@@ -12,6 +12,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.core.content.FileProvider
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
...@@ -92,23 +93,25 @@ class SettingsFragment : Fragment() { ...@@ -92,23 +93,25 @@ class SettingsFragment : Fragment() {
val transList = ArrayList(transactions) val transList = ArrayList(transactions)
Log.d("button_export", "MASUKKK") Log.d("button_export", "MASUKKK")
Log.d("TransactionList", "TransactionList: $transList") Log.d("TransactionList", "TransactionList: $transList")
exportTransactionsToExcel(transList) try {
exportTransactionsToExcel(transList)
} catch (e: Exception) {
Log.d("error_excel", "Error: $e")
}
} }
} }
} }
private fun exportTransactionsToExcel(transactions: List<TransactionEntity>) { private fun exportTransactionsToExcel(transactions: List<TransactionEntity>) {
val sdf = SimpleDateFormat("yyyy-MM-dd_HH:mm:ss", Locale.getDefault()) val sdf = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault())
val currentDateTime = sdf.format(Date()) val currentDateTime = sdf.format(Date())
val excelFileName = "Transaction_Report_$currentDateTime.xlsx" val excelFileName = "Transaction_Report_$currentDateTime.xlsx"
val excelFilePath = "${requireContext().externalCacheDir}/$excelFileName" val excelFile = File(requireContext().externalCacheDir, excelFileName)
// Write transactions data to Excel file // Write transactions data to Excel file
val outputStream = FileOutputStream(excelFilePath) FileOutputStream(excelFile).use { fileOut ->
outputStream.use { fileOut ->
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val sheet = workbook.createSheet("Transactions") val sheet = workbook.createSheet("Transactions")
...@@ -139,16 +142,23 @@ class SettingsFragment : Fragment() { ...@@ -139,16 +142,23 @@ class SettingsFragment : Fragment() {
workbook.close() workbook.close()
} }
val downloadManager = requireContext().getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager // Notify the user that the file has been saved
val uri = Uri.fromFile(File(excelFilePath)) Toast.makeText(requireContext(), "Transaction report is saved", Toast.LENGTH_SHORT).show()
val request = DownloadManager.Request(uri).apply {
setTitle("Transaction Report") // Generate content URI using FileProvider
setDescription("Downloading transaction report") val uri = FileProvider.getUriForFile(
setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) requireContext(),
setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, excelFileName) "${requireContext().packageName}.fileprovider",
} excelFile
downloadManager.enqueue(request) )
Toast.makeText(requireContext(), "Transaction report is being downloaded", Toast.LENGTH_SHORT).show() // Launch the file using an appropriate application
val intent = Intent(Intent.ACTION_VIEW).apply {
setDataAndType(uri, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
startActivity(intent)
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment