diff --git a/diplomas/src/pages/alumnosVista.jsx b/diplomas/src/pages/alumnosVista.jsx
index 2951e9d..9093e69 100644
--- a/diplomas/src/pages/alumnosVista.jsx
+++ b/diplomas/src/pages/alumnosVista.jsx
@@ -33,6 +33,10 @@ export default function AlumnosVista() {
const [modalMensaje, setModalMensaje] = useState("");
const [nuevoCurso, setNuevoCurso] = useState("");
const [cursos, setCursos] = useState([]);
+ const [nuevoTipo, setNuevoTipo] = useState("");
+ const [nuevaFormacion, setNuevaFormacion] = useState("");
+ const [inyecciones, setInyecciones] = useState([]);
+ const [pildoras, setPildoras] = useState([]);
// Estado para confirmación de eliminación
const [confirmarEliminar, setConfirmarEliminar] = useState(false);
@@ -41,6 +45,14 @@ export default function AlumnosVista() {
useEffect(() => {
cargarAlumnos();
cargarCursos();
+ supabaseClient
+ .from("pildoras")
+ .select("id, nombre")
+ .then(({ data }) => setPildoras(data || []));
+ supabaseClient
+ .from("inyeccion")
+ .select("id, nombre")
+ .then(({ data }) => setInyecciones(data || []));
}, []);
const cargarCursos = async () => {
@@ -55,13 +67,21 @@ export default function AlumnosVista() {
const cargarAlumnos = async () => {
const { data, error } = await supabaseClient
.from("alumno")
- .select("id, nombre, correo, telefono, curso_id, curso(nombre)")
+ .select(`
+ id,
+ nombre,
+ correo,
+ telefono,
+ tipo_formacion,
+ curso_id,
+ curso(id, nombre),
+ inyeccion_id,
+ inyeccion(id, nombre),
+ pildoras_id,
+ pildoras(id, nombre)
+ `)
.order("id", { ascending: true });
- if (error) {
- console.error("Error al cargar alumnos:", error.message);
- } else {
- setAlumnos(data);
- }
+ setAlumnos(data || []);
};
const {
@@ -83,10 +103,15 @@ export default function AlumnosVista() {
// Iniciar edición
const iniciarEdicion = (alumno) => {
setAlumnoEditando(alumno.id);
- setValue("nombre", alumno.nombre);
- setValue("correo", alumno.correo);
- setValue("telefono", alumno.telefono);
- setValue("cursoSeleccionado", alumno.curso_id?.toString() || "");
+ setNuevoNombre(alumno.nombre || "");
+ setNuevoCorreo(alumno.correo || "");
+ setNuevoNumero(alumno.telefono || "");
+ setNuevoTipo(alumno.tipo_formacion || "");
+ // Detecta la formación actual según el tipo
+ if (alumno.tipo_formacion === "curso") setNuevaFormacion(alumno.curso_id ? String(alumno.curso_id) : "");
+ else if (alumno.tipo_formacion === "inyeccion") setNuevaFormacion(alumno.inyeccion_id ? String(alumno.inyeccion_id) : "");
+ else if (alumno.tipo_formacion === "pildora") setNuevaFormacion(alumno.pildoras_id ? String(alumno.pildoras_id) : "");
+ else setNuevaFormacion("");
};
// Cancelar edición
@@ -96,25 +121,36 @@ export default function AlumnosVista() {
};
// Guardar cambios
- const guardarEdicion = async (data) => {
+ const guardarEdicion = async (id) => {
+ // Prepara el objeto de actualización
+ let updateObj = {
+ tipo_formacion: nuevoTipo,
+ curso_id: null,
+ inyeccion_id: null,
+ pildoras_id: null,
+ nombre: nuevoNombre,
+ correo: nuevoCorreo,
+ telefono: nuevoNumero,
+ };
+
+ if (nuevoTipo === "curso") updateObj.curso_id = Number(nuevaFormacion);
+ if (nuevoTipo === "inyeccion") updateObj.inyeccion_id = Number(nuevaFormacion);
+ if (nuevoTipo === "pildora") updateObj.pildoras_id = Number(nuevaFormacion);
+
const { error } = await supabaseClient
.from("alumno")
- .update({
- nombre: data.nombre,
- correo: data.correo,
- telefono: data.telefono,
- curso_id: data.cursoSeleccionado,
- })
- .eq("id", alumnoEditando);
+ .update(updateObj)
+ .eq("id", id);
- if (error) {
- setModalMensaje("Error al actualizar el alumno");
+ if (!error) {
+ setModalMensaje("Alumno actualizado correctamente");
+ setMostrarModal(true);
+ setAlumnoEditando(null);
+ await cargarAlumnos(); // <--- Refresca la tabla
} else {
- setModalMensaje("Alumno actualizado exitosamente");
- await cargarAlumnos();
- cancelarEdicion();
+ setModalMensaje("Error al actualizar el alumno");
+ setMostrarModal(true);
}
- setMostrarModal(true);
};
// Confirmar eliminación
@@ -154,111 +190,45 @@ export default function AlumnosVista() {
Nombre |
Correo |
Teléfono |
- Curso |
+ Tipo |
+ Formación |
Acciones |
- {alumnos.map((alumno) =>
- alumnoEditando === alumno.id ? (
-
-
- {alumno.id}
- |
-
-
- {errors.nombre && (
-
- {errors.nombre.message}
-
- )}
- |
-
-
- {errors.correo && (
-
- {errors.correo.message}
-
- )}
- |
-
-
- {errors.telefono && (
-
- {errors.telefono.message}
-
- )}
- |
-
-
- {errors.cursoSeleccionado && (
-
- {errors.cursoSeleccionado.message}
-
- )}
- |
-
-
-
- |
-
- ) : (
-
- {alumno.id} |
- {alumno.nombre} |
- {alumno.correo} |
- {alumno.telefono} |
-
- {alumno.curso?.nombre || "Sin curso"}
- |
-
-
-
-
- |
-
- )
- )}
+ {alumnos.map((alumno) => (
+
+ {alumno.id} |
+ {alumno.nombre} |
+ {alumno.correo} |
+ {alumno.telefono} |
+
+ {alumno.tipo_formacion === "curso"
+ ? "Curso"
+ : alumno.tipo_formacion === "inyeccion"
+ ? "Inyección"
+ : alumno.tipo_formacion === "pildora"
+ ? "Píldora"
+ : ""}
+ |
+
+ {alumno.tipo_formacion === "curso" && alumno.curso?.nombre}
+ {alumno.tipo_formacion === "inyeccion" && alumno.inyeccion?.nombre}
+ {alumno.tipo_formacion === "pildora" && alumno.pildoras?.nombre}
+ |
+
+
+ |
+
+ ))}
diff --git a/diplomas/src/pages/diplomasVista.jsx b/diplomas/src/pages/diplomasVista.jsx
index 4539b60..995abc3 100644
--- a/diplomas/src/pages/diplomasVista.jsx
+++ b/diplomas/src/pages/diplomasVista.jsx
@@ -18,9 +18,21 @@ export default function DiplomasVista() {
const cargarAlumnos = async () => {
const { data, error } = await supabaseClient
.from("alumno")
- .select("id, nombre, correo, telefono, curso(id, nombre)")
+ .select(`
+ id,
+ nombre,
+ correo,
+ telefono,
+ tipo_formacion,
+ curso_id,
+ curso(id, nombre),
+ inyeccion_id,
+ inyeccion(id, nombre),
+ pildoras_id,
+ pildoras(id, nombre)
+ `)
.order("id", { ascending: true });
- if (!error) setAlumnos(data);
+ setAlumnos(data || []);
};
cargarAlumnos();
}, []);
@@ -62,7 +74,8 @@ export default function DiplomasVista() {
Nombre |
Correo |
Teléfono |
- Curso |
+ Tipo |
+ Formación |
Acciones |
@@ -74,7 +87,18 @@ export default function DiplomasVista() {
{alumno.correo} |
{alumno.telefono} |
- {alumno.curso?.nombre || "Sin curso"}
+ {alumno.tipo_formacion === "curso"
+ ? "Curso"
+ : alumno.tipo_formacion === "inyeccion"
+ ? "Inyección"
+ : alumno.tipo_formacion === "pildora"
+ ? "Píldora"
+ : ""}
+ |
+
+ {alumno.tipo_formacion === "curso" && alumno.curso?.nombre}
+ {alumno.tipo_formacion === "inyeccion" && alumno.inyeccion?.nombre}
+ {alumno.tipo_formacion === "pildora" && alumno.pildoras?.nombre}
|
|