diff --git a/Server/ActasNacimiento/SIU241008_ActaN.pdf b/Server/ActasNacimiento/SIU241008_ActaN.pdf index 36464c7..0313993 100644 Binary files a/Server/ActasNacimiento/SIU241008_ActaN.pdf and b/Server/ActasNacimiento/SIU241008_ActaN.pdf differ diff --git a/Server/Controller/DAO.js b/Server/Controller/DAO.js index 63008dd..7c17740 100644 --- a/Server/Controller/DAO.js +++ b/Server/Controller/DAO.js @@ -4,16 +4,19 @@ import Mensaje from '../Model/Mensaje.js'; // Asegúrate de tener la ruta correc import DAORegistro from './DAORegistro.js'; class DAO { - static async dameAlumnos() { + + static async matriculas() { const conexion = new Conexion(); const conexionEstablecida = await conexion.conectar(); try { - const sql = `SELECT id, nombre, apellido, matricula FROM usuario`; + const sql = `SELECT id, matricula FROM usuario where inscrito = 1`; const [rows] = await conexionEstablecida.query(sql); - const resultado = rows.map(row => new Usuario(row.id, row.nombre, row.apellido, row.matricula)); + const resultado = rows.map(row => { + return { id: row.id, matricula: row.matricula }; + }); return resultado; } catch (error) { - console.error(error); + console.error(error); s return []; } finally { conexion.cerrarConexion(); @@ -155,6 +158,61 @@ class DAO { } return usuario; } + static async editarAlumnoInscrito(data) { + const conexion = new Conexion(); + const conexionEstablecida = await conexion.conectar(); + try { + const sql = `UPDATE usuario SET inscrito = ? WHERE id = ?`; + const [result] = await conexionEstablecida.query(sql, [ + 1, data.idUsuario + ]); + return result.affectedRows > 0; + + } catch (error) { + + } finally { + conexion.cerrarConexion(); + } + } + + static async traeTodosLosDatosUsuario(id) { + const conexion = new Conexion(); + const conexionEstablecida = await conexion.conectar(); + let usuario = null; + try { + const sql = `SELECT U.id,U.nombre,U.apellido,matricula,correo,nacionalidad,tipoSangre,fecha_nacimiento,curp,inscrito, T.nombre as tutorNombre, T.apellido as tutorApellido, T.numeroDeTelefono,C.nombre as carreraNombre FROM usuario U, tutor T, carrera C where C.id= U.idCarrera and U.id = T.idUsuario and inscrito =1 and U.id =?;`; + const [rows] = await conexionEstablecida.query(sql, [id]); + if (rows.length > 0) { + const row = rows[0]; + + // Convertir la fecha al formato "yyyy-MM-dd" + const fechaNacimiento = new Date(row.fecha_nacimiento); + const formattedDate = fechaNacimiento.toISOString().split('T')[0]; // "yyyy-MM-dd" + + usuario = { + id: row.id, + nombre: row.nombre, + apellido: row.apellido, + matricula: row.matricula, + correo: row.correo, + nacionalidad: row.nacionalidad, + tipoSangre: row.tipoSangre, + fecha_nacimiento: formattedDate, + curp: row.curp, + inscrito: row.inscrito, + tutorNombre: row.tutorNombre, + tutorApellido: row.tutorApellido, + numeroDeTelefono: row.numeroDeTelefono, + carreraNombre: row.carreraNombre + } + } + } catch (error) { + console.error(error); + } finally { + conexion.cerrarConexion(); + } + return usuario; + } } export default DAO; diff --git a/Server/server.js b/Server/server.js index edc4cb4..d167e60 100644 --- a/Server/server.js +++ b/Server/server.js @@ -1,5 +1,6 @@ import express from 'express'; import bodyParser from 'body-parser'; +import cors from 'cors'; import DAO from './Controller/DAO.js'; // Importa tus controladores DAO import DAOTutor from './Controller/DAOTutor.js'; import DAOCarreras from './Controller/DAOCarrera.js'; @@ -31,18 +32,18 @@ const fileUpload = multer({ app.use(bodyParser.json()); // Configuración de CORS -app.use((req, res, next) => { - res.header("Access-Control-Allow-Origin", "http://localhost:5173"); - res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); - res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); - res.header("Access-Control-Allow-Credentials", "true"); - next(); -}); +app.use(cors({ + origin: 'http://localhost:5173', // Especifica el origen permitido + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], + allowedHeaders: ['Origin', 'X-Requested-With', 'Content-Type', 'Accept'], + credentials: true +})); +app.use(express.static(path.join(__dirname,'ActasNacimiento'))) // Rutas -app.get("/todosLosAlumnos", async (req, res) => { +app.get("/matriculas", async (req, res) => { try { - const alumnos = await DAO.dameAlumnos(); + const alumnos = await DAO.matriculas(); res.json(alumnos); } catch (error) { res.status(500).json({ error: error.message }); @@ -159,9 +160,14 @@ app.post("/agregarDocumentoAN", fileUpload, async (req, res) => { const guardado = await DAODocumento.agregarDocumento(data, file); if (guardado) { - res.json({ message: "Archivo guardado correctamente" }); + const cambiar = await DAO.editarAlumnoInscrito(data); + if (cambiar) { + res.json({ message: true }); + } else { + res.json({ message: false }); + } } else { - res.json({ message: "No se pudo guardar el archivo" }); + res.json({ message: false }); } } catch (error) { res.status(500).json({ error: error.message }); @@ -178,3 +184,13 @@ app.use((err, req, res, next) => { app.listen(port, () => { console.log(`App listening at http://localhost:${port}`); }); + +app.post("/traerTodosDatosAlumno", async (req, res) => { + try { + const usuario = req.body; + const datos = await DAO.traeTodosLosDatosUsuario(usuario.id); + res.json(datos); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); diff --git a/frontend/src/Views/Inscripcion.jsx b/frontend/src/Views/Inscripcion.jsx index da81bca..5a826a5 100644 --- a/frontend/src/Views/Inscripcion.jsx +++ b/frontend/src/Views/Inscripcion.jsx @@ -18,7 +18,8 @@ const Inscripcion = () => { tipoSangre: "", fecha_nacimiento: "", curp: "", - idCarrera: 0 + idCarrera: 0, + inscrito:0 }); const [tutor, setTutor] = useState({ @@ -53,7 +54,8 @@ const Inscripcion = () => { tipoSangre: resUsuario.data.tipoSangre || "", fecha_nacimiento: resUsuario.data.fecha_nacimiento || "", curp: resUsuario.data.curp || "", - idCarrera: resUsuario.data.idCarrera || 0 + idCarrera: resUsuario.data.idCarrera || 0, + inscrito: resUsuario.data.inscrito || 0 })); } else { console.log('Error: No hay usuario'); @@ -157,155 +159,162 @@ const Inscripcion = () => { formData.append('titulo', `${usuario.matricula}_ActaN`); formData.append('archivo', actaN.archivo); formData.append('idUsuario', usuario.id); - fetch('http://localhost:3000/agregarDocumentoAN',{ - method: 'POST', - body: formData - }).then(res=>res.text()) - .then(res => console.log(res)) - .catch(err=>{ - console.error(err) - }) - setActaN(null) + const reqs = await axios.post('/agregarDocumentoAN', formData,{ + headers: { + 'Content-Type': 'multipart/form-data', + }, + }); + if (reqs){ + window.location.reload(); + } } catch (error) { console.error('Error al subir los datos:', error); - //window.location.reload(); } }; - return ( -
-
-
-
-
Datos Personales
- - - - - -
Fecha de Nacimiento
- - + <> + {usuario.inscrito !== 1 ? ( +
+
+ +
+
Datos Personales
+ + + + + +
Fecha de Nacimiento
+ + +
+
+
Datos del Tutor
+ + + +
+
+
Carrera
+ +
+
+
Documentación
+
Acta De Nacimiento
+ +
+ +
-
-
Datos del Tutor
- - - -
-
-
Carrera
- -
-
-
Documentación
-
Acta De Nacimiento
- -
- - -
-
+
+ ) : ( +
+
+ Inscripción en Proceso, Validando los datos por favor revisa esta página dentro de una semana +
+
+ )} + ); }; diff --git a/frontend/src/Views/ValidacionAdm.jsx b/frontend/src/Views/ValidacionAdm.jsx index 25d4e27..73749f7 100644 --- a/frontend/src/Views/ValidacionAdm.jsx +++ b/frontend/src/Views/ValidacionAdm.jsx @@ -1,47 +1,100 @@ -import React, { useState } from 'react'; - - +import axios from 'axios'; +import React, { useState, useEffect } from 'react'; const ValidacionAdm = () => { const [loading, setLoading] = useState(true); + const [alumno, setAlumno] = useState({}); + const [matriculas, setMatriculas] = useState([]); + const [currentMatriculaIndex, setCurrentMatriculaIndex] = useState(0); - const handleLoad = () => { - setLoading(false); + useEffect(() => { + const fetchData = async () => { + try { + const resMatriculas = await axios.get('http://localhost:3000/matriculas'); + if (resMatriculas.status === 200 && resMatriculas.data.length > 0) { + setMatriculas(resMatriculas.data); + await fetchAlumnoData(resMatriculas.data[0].id); + } + } catch (error) { + console.log(error); + } finally { + setLoading(false); + } + }; + + fetchData(); + }, []); + + const fetchAlumnoData = async (id) => { + try { + const resAlumno = await axios.post('http://localhost:3000/traerTodosDatosAlumno', { id: parseInt(id, 10) }); + if (resAlumno.status === 200) { + setAlumno(resAlumno.data); + } + } catch (error) { + console.log(error); + } }; + const handlePreviousMatricula = () => { + if (currentMatriculaIndex > 0) { + const newIndex = currentMatriculaIndex - 1; + setCurrentMatriculaIndex(newIndex); + fetchAlumnoData(matriculas[newIndex].id); + } + }; + + const handleNextMatricula = () => { + if (currentMatriculaIndex < matriculas.length - 1) { + const newIndex = currentMatriculaIndex + 1; + setCurrentMatriculaIndex(newIndex); + fetchAlumnoData(matriculas[newIndex].id); + } + }; + + if (loading) { + return
Loading...
; + } + return (
-

Validacion Administrativa

+

Validación Administrativa

-
- +
-
-

Datos del Alumno

-

Nombre: { }

-

Apellido:{ }

-

Matricula: { }

-

Correo:{ }

-

Nacionalidad:{ }

-

Tipo de sangre:{ }

-

Fecha de nacimiento:{ }

-

CURP:{ }

-

Carrera:{ }

+

Nombre: {alumno.nombre}

+

Apellido: {alumno.apellido}

+

Matricula: {alumno.matricula}

+

Correo: {alumno.correo}

+

Nacionalidad: {alumno.nacionalidad}

+

Tipo de sangre: {alumno.tipoSangre}

+

Fecha de nacimiento: {alumno.fecha_nacimiento}

+

CURP: {alumno.curp}

+

Carrera: {alumno.carreraNombre}

@@ -52,9 +105,9 @@ const ValidacionAdm = () => {

Datos del Tutor

-

Nombre: { }

-

Apellido:{ }

-

Teléfono:{ }

+

Nombre: {alumno.tutorNombre}

+

Apellido: {alumno.tutorApellido}

+

Teléfono: {alumno.numeroDeTelefono}

@@ -62,35 +115,33 @@ const ValidacionAdm = () => {
-

Documentos de Alumno

+

Documentos del Alumno

-

Acta de Nacimiento:

- +

Acta de Nacimiento:

+
-

Constancia de estudios :

- +

Constancia de estudios:

+
-

Fotografia:

- +

Fotografía:

+
-
-
); };