diff --git a/diplomas/src/components/Diploma.jsx b/diplomas/src/components/Diploma.jsx index 5c2af03..104fdfa 100644 --- a/diplomas/src/components/Diploma.jsx +++ b/diplomas/src/components/Diploma.jsx @@ -35,7 +35,13 @@ const styles = StyleSheet.create({ }, }); -export default function Diploma({ alumno, curso, competencias = [], fecha }) { +export default function Diploma({ alumno, formacion, fecha }) { + // formacion: { tipo, nombre, competencias } + let tipoTexto = "formación"; + if (formacion?.tipo === "curso") tipoTexto = "curso"; + else if (formacion?.tipo === "inyeccion") tipoTexto = "inyección"; + else if (formacion?.tipo === "pildora") tipoTexto = "píldora educativa"; + return ( @@ -45,12 +51,29 @@ export default function Diploma({ alumno, curso, competencias = [], fecha }) { a: {alumno?.nombre} - Por su asistencia a la píldora educativa - - {curso?.nombre || "Sin curso"} - - con duración de 2 horas, modalidad remota + Por su asistencia{" "} + {formacion?.tipo === "curso" + ? "al curso" + : formacion?.tipo === "inyeccion" + ? "a la inyección" + : formacion?.tipo === "pildora" + ? "a la píldora educativa" + : "a la formación"} + {formacion?.nombre || "Sin formación"} + {(formacion?.tipo === "curso" || formacion?.tipo === "inyeccion") && + formacion?.competencias?.length > 0 && ( + + + Competencias acreditadas: + + {formacion.competencias.map((comp) => ( + + - {comp.descripcion} + + ))} + + )} Se expide en la ciudad de Xalapa, Ver., {fecha} diff --git a/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx b/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx index 936cfcc..fb7d2cc 100644 --- a/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx +++ b/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx @@ -97,23 +97,63 @@ function VistaPreviaDiplomaDialog({ }; useEffect(() => { - if (alumno && alumno.curso?.id) { - supabaseClient - .from("curso_competencia") - .select("competencia(id, descripcion)") - .eq("curso_id", alumno.curso.id) - .then(({ data }) => { - const comps = data?.map((c) => c.competencia).filter(Boolean) || []; - setCompetencias(comps); - }); + if (alumno) { + if (alumno.tipo_formacion === "curso" && alumno.curso?.id) { + supabaseClient + .from("curso_competencia") + .select("competencia(id, descripcion)") + .eq("curso_id", alumno.curso.id) + .then(({ data }) => { + const comps = data?.map((c) => c.competencia).filter(Boolean) || []; + setCompetencias(comps); + }); + } else if ( + alumno.tipo_formacion === "inyeccion" && + alumno.inyeccion?.id + ) { + supabaseClient + .from("inyeccion_competencia_inyeccion") + .select("competencia_inyeccion(id, descripcion)") + .eq("inyeccion_id", alumno.inyeccion.id) + .then(({ data }) => { + const comps = + data?.map((c) => c.competencia_inyeccion).filter(Boolean) || []; + setCompetencias(comps); + }); + } else { + setCompetencias([]); + } } }, [alumno]); if (!alumno) return null; - const competenciasMostradas = competenciasAcreditadas - ? competencias.filter((comp) => competenciasAcreditadas.includes(comp.id)) - : competencias; + // Mostrar solo competencias acreditadas si corresponde + const competenciasMostradas = + alumno.tipo_formacion === "curso" || alumno.tipo_formacion === "inyeccion" + ? competenciasAcreditadas + ? competencias.filter((comp) => + competenciasAcreditadas.includes(comp.id) + ) + : competencias + : []; + + // Obtener nombre de la formación según tipo + let nombreFormacion = ""; + if (alumno.tipo_formacion === "curso") { + nombreFormacion = alumno.curso?.nombre || "Sin curso"; + } else if (alumno.tipo_formacion === "inyeccion") { + nombreFormacion = alumno.inyeccion?.nombre || "Sin inyección"; + } else if (alumno.tipo_formacion === "pildora") { + nombreFormacion = alumno.pildoras?.nombre || "Sin píldora"; + } + + // Para el PDF, pasar el nombre y tipo de formación + const datosFormacion = { + tipo: alumno.tipo_formacion, + nombre: nombreFormacion, + competencias: competenciasMostradas, + }; const handleEnviar = async () => { setEnviando(true); @@ -165,7 +205,7 @@ function VistaPreviaDiplomaDialog({ return ( - + Diploma @@ -173,16 +213,29 @@ function VistaPreviaDiplomaDialog({ Alumno: {alumno.nombre}
- Curso: {alumno.curso?.nombre || "Sin curso"} -
-
- Competencias Acreditadas: -
    - {competenciasMostradas.map((comp) => ( -
  • {comp.descripcion}
  • - ))} -
+ + {alumno.tipo_formacion === "curso" + ? "Curso" + : alumno.tipo_formacion === "inyeccion" + ? "Inyección" + : alumno.tipo_formacion === "pildora" + ? "Píldora" + : "Formación"} + : + {" "} + {nombreFormacion}
+ {(alumno.tipo_formacion === "curso" || + alumno.tipo_formacion === "inyeccion") && ( +
+ Competencias Acreditadas: +
    + {competenciasMostradas.map((comp) => ( +
  • {comp.descripcion}
  • + ))} +
+
+ )}
Fecha: {fecha || new Date().toLocaleDateString()}
@@ -214,8 +267,7 @@ function VistaPreviaDiplomaDialog({ document={ } @@ -268,12 +320,11 @@ function VistaPreviaDiplomaDialog({ {mostrarVistaPrevia && (
-
+
diff --git a/diplomas/src/pages/diplomasVista.jsx b/diplomas/src/pages/diplomasVista.jsx index 995abc3..26e85c3 100644 --- a/diplomas/src/pages/diplomasVista.jsx +++ b/diplomas/src/pages/diplomasVista.jsx @@ -18,7 +18,8 @@ export default function DiplomasVista() { const cargarAlumnos = async () => { const { data, error } = await supabaseClient .from("alumno") - .select(` + .select( + ` id, nombre, correo, @@ -30,7 +31,8 @@ export default function DiplomasVista() { inyeccion(id, nombre), pildoras_id, pildoras(id, nombre) - `) + ` + ) .order("id", { ascending: true }); setAlumnos(data || []); }; @@ -97,8 +99,10 @@ export default function DiplomasVista() { {alumno.tipo_formacion === "curso" && alumno.curso?.nombre} - {alumno.tipo_formacion === "inyeccion" && alumno.inyeccion?.nombre} - {alumno.tipo_formacion === "pildora" && alumno.pildoras?.nombre} + {alumno.tipo_formacion === "inyeccion" && + alumno.inyeccion?.nombre} + {alumno.tipo_formacion === "pildora" && + alumno.pildoras?.nombre}