diff --git a/diplomas/src/components/dialogs/crearDiplomaDialog.jsx b/diplomas/src/components/dialogs/crearDiplomaDialog.jsx
index 4aebf5c..b9e05df 100644
--- a/diplomas/src/components/dialogs/crearDiplomaDialog.jsx
+++ b/diplomas/src/components/dialogs/crearDiplomaDialog.jsx
@@ -1,9 +1,10 @@
-import { useEffect, useState } from "react";
+import React, { useEffect, useState } from "react";
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
+ DialogDescription,
DialogFooter,
} from "@/components/ui/dialog";
import { Button } from "@/components/ui/button";
@@ -15,7 +16,7 @@ const DISEÑOS = [
{ id: 2, nombre: "Diseño Moderno" },
];
-function CrearDiplomaDialog({
+export default function CrearDiplomaDialog({
open,
onOpenChange,
alumno,
@@ -26,13 +27,13 @@ function CrearDiplomaDialog({
fecha,
setFecha,
}) {
- const [diseñoSeleccionado, setDiseñoSeleccionado] = useState(
- DISEÑOS[0]?.id || null
- );
+ const [diseñoSeleccionado, setDiseñoSeleccionado] = useState(DISEÑOS[0]?.id || null);
const toggleCompetencia = (id) => {
setCompetenciasAcreditadas((prev) =>
- prev.includes(id) ? prev.filter((cid) => cid !== id) : [...prev, id]
+ prev.includes(id)
+ ? prev.filter((cid) => cid !== id)
+ : [...prev, id]
);
};
@@ -43,64 +44,61 @@ function CrearDiplomaDialog({
.select("competencia(id, descripcion)")
.eq("curso_id", alumno.curso.id)
.then(({ data }) => {
- const comps = data?.map((c) => c.competencia) || [];
+ const comps = data?.map((c) => c.competencia).filter(Boolean) || [];
setCompetencias(comps);
setCompetenciasAcreditadas(comps.map((c) => c.id)); // todas seleccionadas por default
});
}
- }, [alumno]);
+ }, [alumno, setCompetencias, setCompetenciasAcreditadas]);
const handleCrearDiploma = async () => {
// Aquí va la lógica para crear el diploma en la base de datos
- // 1. Insertar en Diploma
- // 2. Insertar en Diploma_Competencia
- // 3. (Opcional) Generar PDF y enviar
-
- // Ejemplo de inserción (ajusta según tu lógica real)
- // await supabaseClient.from("Diploma").insert({...});
- // await supabaseClient.from("Diploma_Competencia").insert([...]);
-
onOpenChange(false);
- // Aquí puedes mostrar un mensaje de éxito o iniciar la generación del PDF
};
- if (!alumno) return null;
+ if (!open || !alumno) return null;
return (
-
-
Crear Diploma
-
-
- {competencias.map((comp) => (
-
- toggleCompetencia(comp.id)}
- className="mr-2"
- />
- {comp.descripcion}
-
- ))}
-
-
-
-
-
-
+
);
}
-
-export default CrearDiplomaDialog;
diff --git a/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx b/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx
index 41ff331..82567e6 100644
--- a/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx
+++ b/diplomas/src/components/dialogs/vistaPreviaDiplomaDialog.jsx
@@ -19,12 +19,14 @@ function VistaPreviaDiplomaDialog({
}) {
const [mostrarVistaPrevia, setMostrarVistaPrevia] = useState(false);
- if (!alumno) return null;
+ if (!open || !alumno) return null;
- const competenciasMostradas =
- Array.isArray(competenciasAcreditadas) && competenciasAcreditadas.length > 0
- ? competencias.filter((comp) => competenciasAcreditadas.includes(comp.id))
- : [];
+ // Filtra solo las competencias seleccionadas si se pasa el array de acreditadas
+ const competenciasMostradas = Array.isArray(competenciasAcreditadas)
+ ? (Array.isArray(competencias) ? competencias : []).filter((comp) =>
+ competenciasAcreditadas.includes(comp.id)
+ )
+ : (Array.isArray(competencias) ? competencias : []);
const competenciasParaPDF =
Array.isArray(competenciasMostradas) && competenciasMostradas.length > 0
@@ -32,8 +34,8 @@ function VistaPreviaDiplomaDialog({
: [];
return (
-
-
Diploma
+
+
Diploma
Alumno: {alumno.nombre}
@@ -51,61 +53,9 @@ function VistaPreviaDiplomaDialog({
Fecha: {fecha || new Date().toLocaleDateString()}
-
-
- }
- fileName={`Diploma_${alumno.nombre}.pdf`}
- >
- {({ loading }) =>
- loading ? (
-
- ) : (
-
- )
- }
-
-
+
+ Vista previa
-
- {/* Vista previa del PDF */}
- {mostrarVistaPrevia && (
-
-
-
-
-
-
- )}
);
}
diff --git a/diplomas/src/pages/diplomasVista.jsx b/diplomas/src/pages/diplomasVista.jsx
index 6f2cd19..fe6af1d 100644
--- a/diplomas/src/pages/diplomasVista.jsx
+++ b/diplomas/src/pages/diplomasVista.jsx
@@ -4,7 +4,6 @@ import { supabaseClient } from "@/utils/supabase";
import { Button } from "@/components/ui/button";
import CrearDiplomaDialog from "@/components/dialogs/crearDiplomaDialog";
import VistaPreviaDiplomaDialog from "@/components/dialogs/vistaPreviaDiplomaDialog";
-import { Dialog, DialogContent } from "@/components/ui/dialog";
export default function DiplomasVista() {
const [alumnos, setAlumnos] = useState([]);
@@ -80,33 +79,30 @@ export default function DiplomasVista() {
{/* Dialog para crear diploma y vista previa juntos */}
-