From 55f700f20a0557a0106966bc43dde2a551ebc630 Mon Sep 17 00:00:00 2001 From: IO <320154041@pcpuma.acatlan.unam.mx> Date: Mon, 2 Mar 2026 11:36:46 -0600 Subject: [PATCH] fixed checkboxMesa to separate bitacora --- .../AsignacionEquipo/PlaticaGate.tsx | 13 +- app/(private)/AsignacionMesas/asignacion.css | 10 ++ app/(private)/AsignacionMesas/page.tsx | 6 +- .../BitacoraSanciones/ApplySanction.tsx | 14 +- .../BitacoraSanciones/BitacoraMesas.tsx | 6 +- app/Components/CheckBoxMesa.tsx | 150 +++++++++++------- app/Components/auth/Logout/Logout.css | 2 +- 7 files changed, 133 insertions(+), 68 deletions(-) create mode 100644 app/(private)/AsignacionMesas/asignacion.css diff --git a/app/(private)/AsignacionEquipo/PlaticaGate.tsx b/app/(private)/AsignacionEquipo/PlaticaGate.tsx index 5e49a78..c15c6ab 100644 --- a/app/(private)/AsignacionEquipo/PlaticaGate.tsx +++ b/app/(private)/AsignacionEquipo/PlaticaGate.tsx @@ -25,7 +25,7 @@ export default function PlaticaGate({ inscripcion, numAcount }: Props) { const [open, setOpen] = useState(false); const [tiempo, setTiempo] = useState(15); const [bitacora, setBitacora] = useState<[] | null>([]); - const [error, setError] = useState(); + const [error, setError] = useState("Equipo"); const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; @@ -40,8 +40,15 @@ export default function PlaticaGate({ inscripcion, numAcount }: Props) { setBitacora(null); } else { setBitacora([]); - if (!result?.error) setError("Equipo"); - if (!resultMesa?.error) setError("Mesa"); + if (!result?.error) { + setError("Equipo"); + return; + } + + if (!resultMesa?.error) { + setError("Mesa"); + return; + } } }; diff --git a/app/(private)/AsignacionMesas/asignacion.css b/app/(private)/AsignacionMesas/asignacion.css new file mode 100644 index 0000000..4643e33 --- /dev/null +++ b/app/(private)/AsignacionMesas/asignacion.css @@ -0,0 +1,10 @@ +.tableTable{ + margin: 0.1rem; + width: 100%; + max-width: 250px; +} +.asignacion{ + display: flex; + flex-wrap: wrap; + gap: 1rem; +} \ No newline at end of file diff --git a/app/(private)/AsignacionMesas/page.tsx b/app/(private)/AsignacionMesas/page.tsx index b884fb1..8ef7dda 100644 --- a/app/(private)/AsignacionMesas/page.tsx +++ b/app/(private)/AsignacionMesas/page.tsx @@ -9,6 +9,8 @@ import { GetRegisterStudent } from "@/app/lib/getRegisterStudent"; import { GetRegisterStudentSancion } from "@/app/lib/GetRegisterStudentSancion"; import TableTable from "../Monitor/TableTable"; +import './asignacion.css' + export default async function Page(props: { searchParams?: Promise<{ key?: string; @@ -56,7 +58,7 @@ export default async function Page(props: {

ASIGNACIÓN DE MESAS

-
+
-
+
diff --git a/app/Components/BitacoraSanciones/ApplySanction.tsx b/app/Components/BitacoraSanciones/ApplySanction.tsx index 0aed87a..99c4c49 100644 --- a/app/Components/BitacoraSanciones/ApplySanction.tsx +++ b/app/Components/BitacoraSanciones/ApplySanction.tsx @@ -25,15 +25,15 @@ export default function ApplySanction({ idCuenta }: { idCuenta: number }) { const headers = { Authorization: `Bearer ${token}` }; const fetchAlumnoSanciones = async () => { - try { - const res = await GetSancionByStudent(idCuenta); + const res = await GetSancionByStudent(idCuenta); - setAlumno(res.student ?? null); - setAlumnoSanciones(res.alusancion ?? []); - } catch { - } finally { - setLoadingTable(true) + setAlumno(res.student ?? null); + setAlumnoSanciones(res.alusancion ?? []); + setLoadingTable(true) + + if (res.error) { + setLoadingTable(false) } }; diff --git a/app/Components/BitacoraSanciones/BitacoraMesas.tsx b/app/Components/BitacoraSanciones/BitacoraMesas.tsx index d49c79f..0692c43 100644 --- a/app/Components/BitacoraSanciones/BitacoraMesas.tsx +++ b/app/Components/BitacoraSanciones/BitacoraMesas.tsx @@ -1,10 +1,12 @@ "use client"; -import SearchDate from "../SearchDate/SearchDate"; import { useEffect, useState } from "react"; import { useSearchParams } from "next/navigation"; -import axios from "axios"; import { envConfig } from "@/app/lib/config"; +import SearchDate from "../SearchDate/SearchDate"; +import axios from "axios"; +import Cookies from "js-cookie"; + interface Tables { no_mesa: number; no_cuenta: number; diff --git a/app/Components/CheckBoxMesa.tsx b/app/Components/CheckBoxMesa.tsx index 0cbb602..527b189 100644 --- a/app/Components/CheckBoxMesa.tsx +++ b/app/Components/CheckBoxMesa.tsx @@ -20,13 +20,16 @@ interface props { export default function CheckBoxMesa({ numAcount, table }: props) { const [modo, setModo] = useState<"Mesa" | "Cuenta" | null>("Cuenta"); - const [bitacora, setBitacora] = useState(null); + const [bitacoraMesa, setBitacoraMesa] = useState(null); + const [bitacoraCuenta, setBitacoraCuenta] = useState(null); const [tiempoRestante, setTiempoRestante] = useState(""); const [minutos, setMinutos] = useState(); const [errorMesa, setErrorMesa] = useState() const [errorCount, setErrorCount] = useState() const [loading, setLoading] = useState(false) + const bitacora = modo === "Cuenta" ? bitacoraCuenta : bitacoraMesa; + const router = useRouter(); const fetchByCuenta = async (idCuenta: number) => { @@ -34,9 +37,9 @@ export default function CheckBoxMesa({ numAcount, table }: props) { if (result?.error) { setErrorCount(result.error); - setBitacora(null); + setBitacoraCuenta(null); } else { - setBitacora(result); + setBitacoraCuenta(result); } }; @@ -45,9 +48,9 @@ export default function CheckBoxMesa({ numAcount, table }: props) { if (result?.error) { setErrorMesa(result.error); - setBitacora(null); + setBitacoraMesa(null); } else { - setBitacora(result); + setBitacoraMesa(result); } }; @@ -73,19 +76,32 @@ export default function CheckBoxMesa({ numAcount, table }: props) { const entrada = new Date(bitacora.tiempo_entrada).getTime(); const asignadoMs = bitacora.tiempo_asignado * 60 * 1000; - const interval = setInterval(() => { + const updateTimer = () => { const ahora = Date.now(); const restante = entrada + asignadoMs - ahora; if (restante <= 0) { setTiempoRestante("agotado"); - clearInterval(interval); - } else { - const minutos = Math.floor(restante / 60000); - setMinutos(minutos + 1); - const segundos = Math.floor((restante % 60000) / 1000); - setTiempoRestante(`${minutos} minutos con ${segundos} segundos`); + setMinutos(0); + return false; } + + const minutosRestantes = Math.floor(restante / 60000); + const segundos = Math.floor((restante % 60000) / 1000); + + setMinutos(minutosRestantes); + setTiempoRestante( + `${minutosRestantes} minuto(s) con ${segundos} segundo(s)` + ); + + return true; + }; + + updateTimer(); + + const interval = setInterval(() => { + const sigue = updateTimer(); + if (!sigue) clearInterval(interval); }, 1000); return () => clearInterval(interval); @@ -93,35 +109,43 @@ export default function CheckBoxMesa({ numAcount, table }: props) { const handleButton = async (e: React.MouseEvent) => { e.preventDefault(); - setLoading(false) + setLoading(true); const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; - await axios.patch( - `${envConfig.apiUrl}/bitacora-mesa/cancelar/${bitacora.id_bitacora_mesa}`, - { tiempo_asignado: minutos }, - { headers }, - ); + try { + if (!bitacora) return; - Swal.fire({ - title: "Tiempo cancelado correctamente!", - icon: "success", - draggable: true, - }); + await axios.patch( + `${envConfig.apiUrl}/bitacora-mesa/cancelar/${bitacora.id_bitacora_mesa}`, + { tiempo_asignado: minutos ?? 0 }, + { headers } + ); - if (modo === "Cuenta" && numAcount) { - fetchByCuenta(parseInt(numAcount)); + Swal.fire({ + title: "Tiempo cancelado correctamente!", + icon: "success", + }); + + if (modo === "Cuenta" && numAcount) { + fetchByCuenta(parseInt(numAcount)); + } + + if (modo === "Mesa" && table) { + fetchByMesa(table); + } + + router.refresh(); + } catch (error) { + Swal.fire({ + title: "Error al cancelar tiempo", + icon: "error", + }); + } finally { + setLoading(false); } - - if (modo === "Mesa" && table) { - fetchByMesa(table); - } - - router.refresh(); - setLoading(true) }; - return ( <>
@@ -152,34 +176,54 @@ export default function CheckBoxMesa({ numAcount, table }: props) { <>

{errorCount}

+ + {bitacoraCuenta && tiempoRestante !== "agotado" && ( + <> + + + + + )} } {modo === "Mesa" && <>

{errorMesa}

+ + {bitacoraMesa && tiempoRestante !== "agotado" && ( + <> + + + + + )} } - - {bitacora && tiempoRestante !== "agotado" && ( - <> - - - - - )} ); } diff --git a/app/Components/auth/Logout/Logout.css b/app/Components/auth/Logout/Logout.css index 9177852..f9efbda 100644 --- a/app/Components/auth/Logout/Logout.css +++ b/app/Components/auth/Logout/Logout.css @@ -26,7 +26,7 @@ z-index: 1; } -@media(max-height: 550px) { +@media(max-height: 800px) { .session { top: 5px; right: 5px;