Funcionalidad descargar CSV (Actividad Consultar Pacientes)

This commit is contained in:
AngelSuarez03 2024-04-24 22:32:03 -06:00
parent eada363366
commit 8df8558f37
4 changed files with 60 additions and 4 deletions

View File

@ -2,6 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
¿
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"

View File

@ -1,10 +1,19 @@
package com.terratenientes.medicalhealth
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.terratenientes.medicalhealth.databinding.ActivityConsultarPacientesBinding
import java.io.File
import java.io.FileWriter
class ConsultarPacientesActivity : AppCompatActivity() {
@ -12,7 +21,7 @@ class ConsultarPacientesActivity : AppCompatActivity() {
private lateinit var db: DoctorDataBaseHelper
private lateinit var pacientesList: MutableList<Paciente>
private var pacienteSeleccionado: Paciente? = null
private lateinit var infoPaciente : Array<String>
private val REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -36,6 +45,9 @@ class ConsultarPacientesActivity : AppCompatActivity() {
startActivity(intent)
finish()
}
binding.btnDescargarCsv.setOnClickListener {
exportarCSV(this@ConsultarPacientesActivity, pacientesList)
}
}
private fun cargarListaPacientes() {
@ -64,8 +76,36 @@ class ConsultarPacientesActivity : AppCompatActivity() {
return pacientes
}
private fun guardarDatosPaciente(paciente : Paciente){
infoPaciente = arrayOf(paciente.nombre.toString(), paciente.apellidoPaterno.toString(), paciente.apellidoMaterno.toString(), paciente.domicilio.toString(), paciente.edad.toString(), paciente.sexo.toString())
fun exportarCSV(context : Context, pacientesList : MutableList<Paciente>) {
//Pedir Permisos
ActivityCompat.requestPermissions(this@ConsultarPacientesActivity, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION)
// Verificar si se tienen permisos de escritura externa
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
try {
// Crear el directorio donde se guardará el archivo CSV
val directorio = File(Environment.getExternalStorageDirectory(), "MiApp")
if (!directorio.exists()) {
directorio.mkdirs()
}
// Crear el archivo CSV
val archivoCSV = File(directorio, "pacientes.csv")
archivoCSV.createNewFile()
// Escribir los datos en el archivo CSV
val writer = FileWriter(archivoCSV)
for (paciente in pacientesList) {
writer.append("${paciente.nombre},${paciente.apellidoPaterno},${paciente.apellidoMaterno},${paciente.edad},${paciente.sexo}\n")
}
writer.flush()
writer.close()
Toast.makeText(this@ConsultarPacientesActivity,getString(R.string.res_csv),Toast.LENGTH_LONG).show()
} catch (e: Exception) {
e.printStackTrace()
}
}else{
Toast.makeText(this@ConsultarPacientesActivity,getString(R.string.err_permisos_storage),Toast.LENGTH_LONG).show()
}
}
}

View File

@ -21,10 +21,20 @@
<ListView
android:id="@+id/lista_pacientes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="550dp"
android:layout_marginStart="5dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="5dp"
android:listSelector="@drawable/list_item_selected_background"/>
<Button
android:id="@+id/btn_descargar_csv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_csv"
android:layout_marginTop="35sp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:background="@drawable/radius_btn"/>
</LinearLayout>

View File

@ -24,6 +24,9 @@
<!-- Consultar Pacientes Activity -->
<string name="tv_titulo_consultar">Pacientes</string>
<string name="btn_csv">Descargar</string>
<string name="res_csv">Descarga completa</string>
<string name="err_permisos_storage">Permisos denegados</string>
<!--Registrar Doctor activity-->
<string name="et_activity_registrar_titulo">Registrar</string>
<string name="et_nombre_registrar">Nombre</string>