From 4c115b3e79116a5b95a6680032e70240906959f0 Mon Sep 17 00:00:00 2001 From: mosterTeco Date: Fri, 24 May 2024 11:54:30 -0600 Subject: [PATCH] Funcionalidades:Enviar receta por correo, validar cedula,validar campos en pantalla de registro --- .../medicalhealth/PacienteActivity.kt | 4 ++ .../PacientePrincipalActivity.kt | 32 +++++++++ .../medicalhealth/RegistrarDActivity.kt | 65 +++++++++++++++---- .../adapters/CellClickListener.kt | 1 + .../adapters/RecetaViewAdapter.kt | 4 ++ app/src/main/res/layout/activity_paciente.xml | 2 +- .../layout/activity_paciente_principal.xml | 3 +- .../main/res/layout/activity_principal.xml | 6 +- .../layout/activity_registrar_dactivity.xml | 6 ++ app/src/main/res/layout/rc_receta_item.xml | 17 +++++ 10 files changed, 123 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/terratenientes/medicalhealth/PacienteActivity.kt b/app/src/main/java/com/terratenientes/medicalhealth/PacienteActivity.kt index 3d9f134..9f94f1b 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/PacienteActivity.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/PacienteActivity.kt @@ -64,4 +64,8 @@ class PacienteActivity : AppCompatActivity(), CellClickListener { intent.putExtra("Sexo", paciente.sexo) startActivity(intent) } + + override fun onEnviarCorreoClickListener(position: Int) { + TODO("Not yet implemented") + } } \ No newline at end of file diff --git a/app/src/main/java/com/terratenientes/medicalhealth/PacientePrincipalActivity.kt b/app/src/main/java/com/terratenientes/medicalhealth/PacientePrincipalActivity.kt index 65e5781..15d6bd7 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/PacientePrincipalActivity.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/PacientePrincipalActivity.kt @@ -97,6 +97,38 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener { startActivity(intent) } + override fun onEnviarCorreoClickListener(position: Int) { + val receta = recetas[position] + val nombrePaciente = receta.NombrePaciente + val nombreMedicamento = receta.nombreMedicamento + val dosisMedicamento = receta.dosis + val duracionMedicamento = receta.duracion + val fechaReceta = receta.fecha + val pesoPaciente = receta.pesoPaciente + val edadPaciente = receta.edadPaciente + + val descripcionReceta = """ + Fecha de Consulta: $fechaReceta + Datos Generales del Paciente: + Peso del Paciente: $pesoPaciente + Edad del Paciente: $edadPaciente + Medicamento a Recetar: $nombreMedicamento + Dosis del Medicamento: $dosisMedicamento + Duración del Tratamiento: $duracionMedicamento + """.trimIndent() + + val intent = Intent(Intent.ACTION_SEND).apply { + type = "message/rfc822" + putExtra(Intent.EXTRA_SUBJECT, "Receta Médica de $nombrePaciente") + putExtra(Intent.EXTRA_TEXT, descripcionReceta) + } + try { + startActivity(Intent.createChooser(intent, "Enviar receta a través de:")) + } catch (ex: android.content.ActivityNotFoundException) { + Toast.makeText(this, "No hay clientes de correo instalados.", Toast.LENGTH_SHORT).show() + } + } + // función que valida si los permisos ya estan garantizados por parte del usuario fun permisosPDF() : Boolean{ val permission1= ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) diff --git a/app/src/main/java/com/terratenientes/medicalhealth/RegistrarDActivity.kt b/app/src/main/java/com/terratenientes/medicalhealth/RegistrarDActivity.kt index 3d83802..517c9ee 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/RegistrarDActivity.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/RegistrarDActivity.kt @@ -15,21 +15,64 @@ class RegistrarDActivity : AppCompatActivity() { binding = ActivityRegistrarDactivityBinding.inflate(layoutInflater) val view = binding.root setContentView(view) - db= DoctorDataBaseHelper(this@RegistrarDActivity) + db = DoctorDataBaseHelper(this@RegistrarDActivity) + binding.btnRegistrar.setOnClickListener { - registrarUsuario() + if (validarCampos()) { + registrarUsuario() + } } } - private fun registrarUsuario(){ - val cedula=binding.etCedelaRegistro.text.toString() - val nombre=binding.etNombreRegistro.text.toString() - val apellido=binding.etApellidoRegistro.text.toString() - val telefono=binding.etTelefonoRegisto.text.toString() + private fun validarCampos(): Boolean { + val cedula = binding.etCedelaRegistro.text.toString() + val nombre = binding.etNombreRegistro.text.toString() + val apellido = binding.etApellidoRegistro.text.toString() + val telefono = binding.etTelefonoRegisto.text.toString() val domicilio = binding.etDomicilio.text.toString() - val contrasena= binding.etContrasenaRegistro.text.toString() - val usuario= Doctor(cedula,nombre,apellido,telefono,domicilio.toInt()) - db.agregarDoctores(usuario,contrasena) - Toast.makeText(this@RegistrarDActivity,"USUARIO AGREGADO",Toast.LENGTH_LONG).show() + val contrasena = binding.etContrasenaRegistro.text.toString() + + if (cedula.isEmpty() || nombre.isEmpty() || apellido.isEmpty() || telefono.isEmpty() || domicilio.isEmpty() || contrasena.isEmpty()) { + Toast.makeText(this, "Todos los campos son obligatorios.", Toast.LENGTH_LONG).show() + return false + } + + if (!validarCedula(cedula)) { + Toast.makeText(this, "Cédula profesional no válida.", Toast.LENGTH_LONG).show() + return false + } + + if (!validarTelefono(telefono)) { + Toast.makeText(this, "Número de teléfono no válido.", Toast.LENGTH_LONG).show() + return false + } + + return true + } + + private fun validarCedula(cedula: String): Boolean { + // Expresión regular para validar que la cédula tenga entre 5 y 8 caracteres o exactamente 11 caracteres alfanuméricos + val regex = Regex("^[a-zA-Z0-9]{5,8}$|^[a-zA-Z0-9]{11}$") + return regex.matches(cedula) + } + + private fun validarTelefono(telefono: String): Boolean { + // Expresión regular para validar que el número de teléfono tenga 10 digitos + val regex = Regex("^\\d{10}$") + return regex.matches(telefono) + } + + private fun registrarUsuario() { + val cedula = binding.etCedelaRegistro.text.toString() + val nombre = binding.etNombreRegistro.text.toString() + val apellido = binding.etApellidoRegistro.text.toString() + val telefono = binding.etTelefonoRegisto.text.toString() + val domicilio = binding.etDomicilio.text.toString() + val contrasena = binding.etContrasenaRegistro.text.toString() + + val usuario = Doctor(cedula, nombre, apellido, telefono, domicilio.toInt()) + db.agregarDoctores(usuario, contrasena) + + Toast.makeText(this@RegistrarDActivity, "USUARIO AGREGADO", Toast.LENGTH_LONG).show() finish() } } \ No newline at end of file diff --git a/app/src/main/java/com/terratenientes/medicalhealth/adapters/CellClickListener.kt b/app/src/main/java/com/terratenientes/medicalhealth/adapters/CellClickListener.kt index 2bac3d5..08e905c 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/adapters/CellClickListener.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/adapters/CellClickListener.kt @@ -4,4 +4,5 @@ interface CellClickListener { fun onCellClickListener(position : Int) fun onEliminarClickListener(position: Int) fun onModifyClickListener(position: Int) + fun onEnviarCorreoClickListener(position: Int) } \ No newline at end of file diff --git a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt index a31a22d..5e68ed8 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt @@ -20,6 +20,7 @@ class RecetaViewAdapter(private var notes : List, context: Context, val val btnDescargar : ImageView = itemView.findViewById(R.id.iv_descargar_receta) val btnEliminar: ImageView = itemView.findViewById(R.id.iv_eliminar_receta) val btnModificar : ImageView = itemView.findViewById(R.id.iv_modificar_receta) + val btnEnviar : ImageView = itemView.findViewById(R.id.iv_correo_receta) val pesoReceta : TextView = itemView.findViewById(R.id.tv_peso_paciente) val edadReceta : TextView = itemView.findViewById(R.id.tv_edad_paciente) val dosisReceta : TextView=itemView.findViewById(R.id.tv_dosis_medicamento) @@ -54,6 +55,9 @@ class RecetaViewAdapter(private var notes : List, context: Context, val holder.btnModificar.setOnClickListener { cellClickListener.onModifyClickListener(position) } + holder.btnEnviar.setOnClickListener{ + cellClickListener.onEnviarCorreoClickListener(position) + } } fun refreshData( newNotes : List){ diff --git a/app/src/main/res/layout/activity_paciente.xml b/app/src/main/res/layout/activity_paciente.xml index 85b1785..16d9f8f 100644 --- a/app/src/main/res/layout/activity_paciente.xml +++ b/app/src/main/res/layout/activity_paciente.xml @@ -28,7 +28,7 @@ diff --git a/app/src/main/res/layout/activity_paciente_principal.xml b/app/src/main/res/layout/activity_paciente_principal.xml index df731e6..86a433f 100644 --- a/app/src/main/res/layout/activity_paciente_principal.xml +++ b/app/src/main/res/layout/activity_paciente_principal.xml @@ -13,8 +13,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="vertical" - tools:listitem="@layout/rc_receta_item" - /> + tools:listitem="@layout/rc_receta_item" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_principal.xml b/app/src/main/res/layout/activity_principal.xml index dcfbb85..db2ed2c 100644 --- a/app/src/main/res/layout/activity_principal.xml +++ b/app/src/main/res/layout/activity_principal.xml @@ -18,16 +18,16 @@ android:textSize="30dp"/> - + android:src="@drawable/doctor"/>--> diff --git a/app/src/main/res/layout/activity_registrar_dactivity.xml b/app/src/main/res/layout/activity_registrar_dactivity.xml index 05d0ddc..7d17bf4 100644 --- a/app/src/main/res/layout/activity_registrar_dactivity.xml +++ b/app/src/main/res/layout/activity_registrar_dactivity.xml @@ -42,6 +42,7 @@ android:layout_marginBottom="20dp" android:background="@drawable/radius_tv" android:layout_gravity="center_horizontal" + android:inputType="text" /> @@ -56,6 +57,7 @@ android:layout_marginBottom="20dp" android:background="@drawable/radius_tv" android:textColorHint="@color/black" + android:inputType="text" />