diff --git a/app/(private)/AsignacionMesas/page.tsx b/app/(private)/AsignacionMesas/page.tsx index f0203de..322de7d 100644 --- a/app/(private)/AsignacionMesas/page.tsx +++ b/app/(private)/AsignacionMesas/page.tsx @@ -33,31 +33,34 @@ export default async function Page(props: { const numAcount = params?.numAcount ?? null; let student: any = null; + let platica: any = null; let inscripcion: any[] = []; let errorMessage = ""; if (numAcount) { const idCuenta = parseInt(numAcount); - const result = await axios.get(`${envConfig.apiUrl}/bitacora-mesa/cuenta/${idCuenta}`); - student = result.data + const result = await GetRegisterStudent(idCuenta); + if (result.error) { + errorMessage = `${result.error}`; + } else { + student = result[0]?.alumno as Student; + const rawPlatica = result[0]?.platica; + platica = + rawPlatica?.type === "Buffer" + ? Boolean(rawPlatica.data[0]) + : Boolean(rawPlatica); + console.log(result); + } const inscResult = await getInscripcion(idCuenta); if (!inscResult.error && Array.isArray(inscResult)) { inscripcion = inscResult; + } else { + inscripcion = []; } } - const tableData = Array.isArray(inscripcion) - ? inscripcion.map((ins) => ({ - Inscrito: ins.plataforma?.nombre || "—", - Tiempo: ins.tiempo_disponible - ? `${ins.tiempo_disponible} minutos` - : "—", - Confirmó: ins.platica?.data?.[0] === 1 ? "sí" : "no", - })) - : []; - return (
{errorMessage && } @@ -80,14 +83,12 @@ export default async function Page(props: { )} diff --git a/app/Components/AsignacionMesas.tsx b/app/Components/AsignacionMesas.tsx index 5d16bb6..be0852f 100644 --- a/app/Components/AsignacionMesas.tsx +++ b/app/Components/AsignacionMesas.tsx @@ -3,25 +3,45 @@ import { useEffect, useState } from "react"; import { envConfig } from "@/app/lib/config"; import toast from "react-hot-toast"; +import { getEquipoByCount } from "../lib/getEquipoByCount"; type Props = { inscripcion: any[]; idCuenta: number; }; -export default function AsignacionMesas({ - idCuenta, - inscripcion, -}: Props) { +export default function AsignacionMesas({ idCuenta, inscripcion }: Props) { const [puedeContinuar, setPuedeContinuar] = useState(false); const [mesas, setMesas] = useState([]); const [loadingMesas, setLoadingMesas] = useState(false); + const [mesaSeleccionada, setMesaSeleccionada] = useState(null); + const [tiempo, setTiempo] = useState(15); + const [bitacora, setBitacora] = useState<[] | null>(null); + + const fetchByCuenta = async (idCuenta: number) => { + const result = await getEquipoByCount(idCuenta); + + if (result?.error) { + setBitacora(null); + } else { + setBitacora(result); + toast.error("Ya cuentas con un equipo asignado"); + } + }; + + useEffect(() => { + if (!idCuenta) return; + const Cuenta = idCuenta; + if (isNaN(Cuenta)) return; + + fetchByCuenta(Cuenta); + }, [idCuenta]); useEffect(() => { if (!Array.isArray(inscripcion) || inscripcion.length === 0) return; const todasAsistieron = inscripcion.every( - (ins) => ins.platica?.data?.[0] === 1 + (ins) => ins.platica?.data?.[0] === 1, ); if (!todasAsistieron) { @@ -34,16 +54,16 @@ export default function AsignacionMesas({ }, [inscripcion]); useEffect(() => { + console.log(envConfig.apiUrl); + console.log(puedeContinuar, idCuenta); if (!puedeContinuar || !idCuenta) return; const fetchMesas = async () => { try { setLoadingMesas(true); - - const res = await fetch( - `${envConfig.apiUrl}/mesa/activo`, - { cache: "no-store" } - ); + const res = await fetch(`${envConfig.apiUrl}/mesa/activo`, { + cache: "no-store", + }); if (!res.ok) { throw new Error("No se pudieron cargar las mesas"); @@ -61,37 +81,77 @@ export default function AsignacionMesas({ fetchMesas(); }, [puedeContinuar, idCuenta]); + const submit = async (e: React.MouseEvent) => { + e.preventDefault(); + + if (!mesaSeleccionada) { + toast.error("Selecciona un mesa"); + return; + } + + try { + const body = { + tiempo_asignado: tiempo, + id_mesa: Number(mesaSeleccionada), + id_alumno_inscrito: inscripcion[0].id_alumno_inscrito, + }; + + const res = await fetch(`${envConfig.apiUrl}/bitacora-mesa`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }); + + if (!res.ok) { + throw new Error("Error al asignar mesa"); + } + + setBitacora([]); + toast.success("Mesa asignada correctamente"); + } catch (error) { + toast.error("No se pudo asignar la mesa"); + } + }; + if (!puedeContinuar) return null; + if (bitacora) { + return <>; + } return (
- + - setTiempo(Number(e.target.value))} + > + + + + - +
- setMesaSeleccionada(e.target.value)} + > {loadingMesas && } {!loadingMesas && mesas.length === 0 && ( )} + {!loadingMesas && mesas.map((mesa) => ( - ))} @@ -99,6 +159,7 @@ export default function AsignacionMesas({