From 948d1bfcccf5fec83876942cd497e58973991545 Mon Sep 17 00:00:00 2001 From: tyrannusss Date: Tue, 23 Sep 2025 17:28:23 -0600 Subject: [PATCH] Componentes --- app/(private)/BitacoraSanciones/page.tsx | 199 +----------------- .../BitacoraSanciones/BitacoraAlumno.tsx | 41 ++++ .../BitacoraSanciones/BitacoraEquipo.tsx | 61 ++++++ .../BitacoraSanciones/BitacoraMesas.tsx | 49 +++++ .../BitacoraSanciones/Page.module.css | 69 ++++++ .../BitacoraSanciones/Sanciones.tsx | 97 +++++++++ .../QuitarSancion/QuitarSancion.tsx | 18 +- app/lib/getSanciones.ts | 17 ++ middleware.ts | 19 +- 9 files changed, 354 insertions(+), 216 deletions(-) create mode 100644 app/Components/BitacoraSanciones/BitacoraAlumno.tsx create mode 100644 app/Components/BitacoraSanciones/BitacoraEquipo.tsx create mode 100644 app/Components/BitacoraSanciones/BitacoraMesas.tsx create mode 100644 app/Components/BitacoraSanciones/Page.module.css create mode 100644 app/Components/BitacoraSanciones/Sanciones.tsx create mode 100644 app/lib/getSanciones.ts diff --git a/app/(private)/BitacoraSanciones/page.tsx b/app/(private)/BitacoraSanciones/page.tsx index 08e3747..5d68131 100644 --- a/app/(private)/BitacoraSanciones/page.tsx +++ b/app/(private)/BitacoraSanciones/page.tsx @@ -1,49 +1,12 @@ "use client"; -import styles from "./Page.module.css"; import Toggle from "@/app/Components/Toggle/Toggle"; -import SearchDate from "@/app/Components/SearchDate/SearchDate"; -import Information from "@/app/Components/Information/information"; -import SearchUser from "@/app/Components/SearchUser/searchUser"; -import { useState } from "react"; +import Sanciones from "@/app/Components/BitacoraSanciones/Sanciones"; +import BitacoraMesas from "@/app/Components/BitacoraSanciones/BitacoraMesas"; +import BitacoraAlumno from "@/app/Components/BitacoraSanciones/BitacoraAlumno"; +import BitacoraEquipo from "@/app/Components/BitacoraSanciones/BitacoraEquipo"; export default function Page() { - const [usuario_sanciones] = useState([ - { - no_cuenta: "425530275 ", - motivo: "Motivos", - duracion: "5", - fecha_sancion: "15/10/2025", - utilizar_hasta: "25/10/2025", - }, - ]); - - const [machines] = useState([ - { - hora_entrada: "10 ", - min_utilizados: "20", - hora_salida: "10:15", - cuenta_asociada: "15", - }, - ]); - const [tables] = useState([ - { - no_mesa: "10 ", - no_cuenta: "425530275", - hora_entrada: "10:15", - tiempo_asignado: "15", - hora_salida: "10:30", - }, - ]); - - const [alumnos] = useState([ - { - tiempo_entrada: "10:10 ", - tiempo_asignado: "15", - Ubicacion_equipo: "2", - }, - ]); - const [ubicacion_equipo, setUbicacionEquipo] = useState(""); return (

BITACORA Y SANCIONES

@@ -53,78 +16,19 @@ export default function Page() { options={[ { key: "1", - label: "Bitacora de equipo", + label: "Bitacora equipo", content: ( <> - - -
- - -
- - -
-
-
- - - - - - - - - - - {machines.map((machine, index) => ( - - - - - - - ))} - -
Hora EntradaMinutos utilizadosHora salidaCuenta asociada
{machine.hora_entrada}{machine.min_utilizados}{machine.hora_salida}{machine.cuenta_asociada}
-
+ ), }, { key: "2", - label: "Bitacora de alumno", + label: "Bitacora alumno", content: ( <> - -
- - - - - - - - - - {alumnos.map((alumno, index) => ( - - - - - - ))} - -
Tiempo EntradaTiempo AsignadoUbicacion del equipo
{alumno.tiempo_entrada}{alumno.tiempo_asignado}{alumno.Ubicacion_equipo}
-
+ ), }, @@ -133,31 +37,7 @@ export default function Page() { label: "Bitacora mesas", content: ( <> - -
- - - - - - - - - - - - {tables.map((table, index) => ( - - - - - - - - ))} - -
MesaCuentaHora EntradaTiempo AsignadoHora Salida
{table.no_mesa}{table.no_cuenta}{table.hora_entrada}{table.tiempo_asignado}{table.hora_salida}
-
+ ), }, @@ -166,66 +46,7 @@ export default function Page() { label: "Sanciones", content: ( <> - - - - -
- - -
- - -
-
-
- - - - - - - - - - - - {usuario_sanciones.map((sancion, index) => ( - - - - - - - - ))} - -
CuentaMotivo de la sancionDuracion (Semanas) Fecha SancionPodra utilizar el servicio hasta
{sancion.no_cuenta}{sancion.motivo}{sancion.fecha_sancion}{sancion.duracion}{sancion.utilizar_hasta}
-
-
-
- - -
-
+ ), }, diff --git a/app/Components/BitacoraSanciones/BitacoraAlumno.tsx b/app/Components/BitacoraSanciones/BitacoraAlumno.tsx new file mode 100644 index 0000000..f5e8ff5 --- /dev/null +++ b/app/Components/BitacoraSanciones/BitacoraAlumno.tsx @@ -0,0 +1,41 @@ +"use client"; +import { useState } from "react"; +import styles from "./Page.module.css"; +import SearchDate from "../SearchDate/SearchDate"; + +interface alumnos { + tiempo_entrada: string; + tiempo_asignado: string; + Ubicacion_equipo: number; +} + +function BitacoraAlumno() { + const [alumnos, setAlumnos] = useState([]); + return ( + <> + +
+ + + + + + + + + + {alumnos.map((alumno, index) => ( + + + + + + ))} + +
Tiempo EntradaTiempo AsignadoUbicacion del equipo
{alumno.tiempo_entrada}{alumno.tiempo_asignado}{alumno.Ubicacion_equipo}
+
+ + ); +} + +export default BitacoraAlumno; diff --git a/app/Components/BitacoraSanciones/BitacoraEquipo.tsx b/app/Components/BitacoraSanciones/BitacoraEquipo.tsx new file mode 100644 index 0000000..29bdac9 --- /dev/null +++ b/app/Components/BitacoraSanciones/BitacoraEquipo.tsx @@ -0,0 +1,61 @@ +"use client"; +import { useState } from "react"; +import styles from "./Page.module.css"; +import SearchDate from "../SearchDate/SearchDate"; + +interface equipos { + hora_entrada: string; + min_utilizados: number; + hora_salida: string; + cuenta_asociada: number; +} + +function BitacoraEquipo() { + const [equipo, setEquipo] = useState([]); + const [ubicacion_equipo, setUbicacionEquipo] = useState(""); + return ( + <> + +
+ + +
+ + +
+
+
+ + + + + + + + + + + {equipo.map((equipo, index) => ( + + + + + + + ))} + +
Hora EntradaMinutos utilizadosHora salidaCuenta asociada
{equipo.hora_entrada}{equipo.min_utilizados}{equipo.hora_salida}{equipo.cuenta_asociada}
+
+ + ); +} + +export default BitacoraEquipo; diff --git a/app/Components/BitacoraSanciones/BitacoraMesas.tsx b/app/Components/BitacoraSanciones/BitacoraMesas.tsx new file mode 100644 index 0000000..9d5a712 --- /dev/null +++ b/app/Components/BitacoraSanciones/BitacoraMesas.tsx @@ -0,0 +1,49 @@ +"use client"; +import { useState } from "react"; +import styles from "./Page.module.css"; + +import SearchDate from "../SearchDate/SearchDate"; + +interface tables { + no_mesa: number; + no_cuenta: number; + hora_entrada: string; + tiempo_asignado: number; + hora_salida: string; +} + +function BitacoraMesas() { + const [tables, setTables] = useState([]); + const [ubicacion_equipo, setUbicacionEquipo] = useState(""); + return ( + <> + +
+ + + + + + + + + + + + {tables.map((table, index) => ( + + + + + + + + ))} + +
MesaCuentaHora EntradaTiempo AsignadoHora Salida
{table.no_mesa}{table.no_cuenta}{table.hora_entrada}{table.tiempo_asignado}{table.hora_salida}
+
+ + ); +} + +export default BitacoraMesas; diff --git a/app/Components/BitacoraSanciones/Page.module.css b/app/Components/BitacoraSanciones/Page.module.css new file mode 100644 index 0000000..d48a3c1 --- /dev/null +++ b/app/Components/BitacoraSanciones/Page.module.css @@ -0,0 +1,69 @@ +.tableContainer { + overflow-y: auto; + overflow-x: auto; + border-radius: 4px; + border: 1px solid #cfcfcf; + max-height: 430px; + scrollbar-color: rgb(1, 92, 184) rgba(0, 0, 0, 0); + background-color: #f9f9f9; + width: 100%; +} + +.machineTable { + width: 100%; + border-collapse: collapse; + table-layout: auto; +} + +.machineTable th, +.machineTable td { + padding: 10px; + text-align: center; + border-bottom: 1px solid #cfcfcf; + word-wrap: break-word; + overflow-wrap: break-word; +} + +.machineTable th { + position: sticky; + top: 0px; + background-color: rgb(1, 92, 184); + color: white; +} + +.machineTable tr { + min-width: 400px; +} + +.disponible { + display: flex; + width: 100%; + height: 100%; + background-color: green; + color: green; + font-weight: bold; +} + +.ocupado { + color: red; + font-weight: bold; +} + +.actions { + text-align: center; +} + +.resetButton { + padding: 8px 16px; + background-color: #ff4d4d; + color: white; + border: none; + border-radius: 6px; + cursor: pointer; + font-weight: bold; + transition: 0.3s; +} + +.resetButton:hover { + background-color: #cc0000; +} diff --git a/app/Components/BitacoraSanciones/Sanciones.tsx b/app/Components/BitacoraSanciones/Sanciones.tsx new file mode 100644 index 0000000..696b989 --- /dev/null +++ b/app/Components/BitacoraSanciones/Sanciones.tsx @@ -0,0 +1,97 @@ +"use client"; +import { useEffect, useState } from "react"; +import styles from "./Page.module.css"; +import SearchUser from "../SearchUser/searchUser"; +import Information from "../Information/information"; +import { GetStudent } from "@/app/lib/getStudent"; +import { envConfig } from "@/app/lib/config"; + +interface sancion { + no_cuenta: number; + nombre: string; + motivo: string; + duracion: number; + fecha_sancion: string; + utilizar_hasta: number; +} + +export default function Sanciones() { + const [sanciones, setSanciones] = useState([]); + const [ubicacion_equipo, setUbicacionEquipo] = useState(""); + const [no_cuenta, setNo_cuenta] = useState(""); + + useEffect(() => { + fetch(`${envConfig.apiUrl}/student/${no_cuenta}`).then( + ( + response // Revisar + ) => response.json().then((data) => setNo_cuenta(data[0].sancion)) + ); + }, [no_cuenta]); + + return ( + <> + + + {/* */} + +
+ + +
+ + +
+
+ +
+ + + + + + + + + + + + {sanciones.map((sancion, index) => ( + + + + + + + + ))} + +
CuentaMotivo de la sancionDuracion (Semanas) Fecha SancionPodra utilizar el servicio hasta
{sancion.no_cuenta}{sancion.motivo}{sancion.fecha_sancion}{sancion.duracion}{sancion.utilizar_hasta}
+
+
+
+ + +
+
+ + ); +} diff --git a/app/Components/QuitarSancion/QuitarSancion.tsx b/app/Components/QuitarSancion/QuitarSancion.tsx index 2a17bcf..1a5b660 100644 --- a/app/Components/QuitarSancion/QuitarSancion.tsx +++ b/app/Components/QuitarSancion/QuitarSancion.tsx @@ -2,7 +2,7 @@ import { useState } from "react"; import styles from "./Page.module.css"; -interface sancion { +interface quitarSanciones { id: number; nombre: string; motivo: string; @@ -12,7 +12,7 @@ interface sancion { } function QuitarSancion() { - const [sanciones, setSanciones] = useState([]); + const [quitarSanciones, SetQuitarSanciones] = useState([]); return (
@@ -28,14 +28,14 @@ function QuitarSancion() { - {sanciones.map((sancion, index) => ( + {quitarSanciones.map((quitarSanciones, index) => ( - {sancion.id} - {sancion.nombre} - {sancion.motivo} - {sancion.duracion} - {sancion.fecha_sancion} - {sancion.utilizar_equipo} + {quitarSanciones.id} + {quitarSanciones.nombre} + {quitarSanciones.motivo} + {quitarSanciones.duracion} + {quitarSanciones.fecha_sancion} + {quitarSanciones.utilizar_equipo} ))} diff --git a/app/lib/getSanciones.ts b/app/lib/getSanciones.ts new file mode 100644 index 0000000..46fcbd0 --- /dev/null +++ b/app/lib/getSanciones.ts @@ -0,0 +1,17 @@ +import axios from "axios"; +import { envConfig } from "./config"; + +export async function GetSanciones(numAcount: number) { + try { + const response = await axios.get( + `${envConfig.apiUrl}/alumno-sancion/${numAcount}` + ); + return response.data; + } catch (error: any) { + const msg = + error.response?.data?.message || + error.message || + "Error desconocido al obtener estudiante"; + return { error: msg }; + } +} diff --git a/middleware.ts b/middleware.ts index 0f47ec8..f068a83 100644 --- a/middleware.ts +++ b/middleware.ts @@ -13,23 +13,6 @@ export function middleware(request: NextRequest) { } export const config = { - matcher: [ - "/Reportes", - "/Monitor", - "/QuitarSancion", - "/Programas", - "/Mensajes", - "/Inscritos", - "/Inscripciones", - "/InformacionEquipo", - "/Impresiones", - "/CambiarPass", - "/BitacoraSanciones", - "/AsignacionMesas", - "/AsignacionEquipo", - "/Alta", - "/AgregarTiempo", - "/ActivosMantenimiento", - ], + matcher: [], }; //IO