diff --git a/Base/universidad.sql b/Base/universidad.sql index 833c897..7b9e789 100644 --- a/Base/universidad.sql +++ b/Base/universidad.sql @@ -5,7 +5,7 @@ CREATE USER 'UserRemoto' @'localhost' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON universidad.* TO 'UserRemoto'@'LOCALHOST'; FLUSH PRIVILEGES; - +drop database universidad; use universidad; create table usuario( @@ -21,13 +21,18 @@ create table usuario( curp varchar(18), rol varchar(30) not null, idCarrera integer references carrera, - inscrito BIT + inscrito int ); create table carrera( id integer auto_increment primary key, nombre varchar(40), - area varchar(40) + area varchar(40), + campus VARCHAR(40), + descripcion VARCHAR(600), + mision VARCHAR(600), + vision VARCHAR(600), + objetivo VARCHAR(600) ); create table tutor( @@ -37,20 +42,20 @@ create table tutor( numeroDeTelefono double, idUsuario integer references usuario ); -ALTER TABLE usuario -MODIFY COLUMN inscrito int; create table documento( id integer auto_increment primary key, titulo varchar(40), -archivo blob, +archivo longblob, idUsuario integer references usuario, valido BIT ); + +drop table inscripcion; create table inscripcion( id integer auto_increment primary key, -idUusario integer references usuario, -idDocumento integer references documento +idUsuario integer references usuario, +idCarrera integer references carrera ); create table registro( @@ -64,13 +69,6 @@ INSERT INTO usuario ( 'Juan', 'Perez', 'SIU241001', 'password123', 'juan.perez@example.com', 'Mexicana', 'O+', '1990-05-15', 'JUAP900515HDFLRN03', 'estudiante', 1, 1 ); -ALTER TABLE carrera -ADD COLUMN campus VARCHAR(40), -ADD COLUMN descripcion VARCHAR(600), -ADD COLUMN mision VARCHAR(600), -ADD COLUMN vision VARCHAR(600), -ADD COLUMN objetivo VARCHAR(600); - INSERT INTO carrera (nombre, area) VALUES ('Ingeniería de Sistemas', 'Tecnología'), ('Medicina', 'Salud'), @@ -127,8 +125,6 @@ SET campus = 'Xalapa', objetivo = 'Nuestro objetivo es formar psicólogos con una sólida base científica y habilidades prácticas para evaluar, diagnosticar y tratar problemas psicológicos. Fomentamos el pensamiento crítico, la empatía y la ética profesional, preparando a los estudiantes para contribuir al bienestar mental y emocional de las personas y comunidades que atienden.' WHERE id = 6; -UPDATE `tutor` SET `nombre` = ?, `apellido` = ?, `numeroDeTelefono` = ? WHERE `idUsuario` = ?; - diff --git a/Server/ActasNacimiento/SIU241000_ActaN.pdf b/Server/ActasNacimiento/SIU241000_ActaN.pdf deleted file mode 100644 index 36464c7..0000000 Binary files a/Server/ActasNacimiento/SIU241000_ActaN.pdf and /dev/null differ diff --git a/Server/ActasNacimiento/SIU241008_ActaN.pdf b/Server/ActasNacimiento/SIU241008_ActaN.pdf deleted file mode 100644 index 0313993..0000000 Binary files a/Server/ActasNacimiento/SIU241008_ActaN.pdf and /dev/null differ diff --git a/Server/Controller/Conexion.js b/Server/Controller/Conexion.js index 93e73d6..874b1b0 100644 --- a/Server/Controller/Conexion.js +++ b/Server/Controller/Conexion.js @@ -1,4 +1,5 @@ import mysql from 'mysql2/promise'; // Importa la versión de la biblioteca que soporta promesas +import logger from '../utils/logger.js'; // Importa el logger class Conexion { constructor() { @@ -14,10 +15,10 @@ class Conexion { async conectar() { try { this.conexion = await mysql.createConnection(this.configuracion); - console.log('Conexión exitosa a MySQL'); + logger.info('Conexión exitosa a MySQL'); return this.conexion; } catch (error) { - console.error('Error al conectar con la base de datos:', error.message); + logger.error(`Error al conectar con la base de datos: ${error.message}`); return null; } } @@ -26,13 +27,13 @@ class Conexion { if (this.conexion) { this.conexion.end((err) => { if (err) { - console.error('Error al cerrar la conexión con la base de datos:', err.message); + logger.error(`Error al cerrar la conexión con la base de datos: ${err.message}`); return; } - console.log('Se desconectó de la base de datos'); + logger.info('Se desconectó de la base de datos'); }); } } } -export default Conexion; +export default Conexion; \ No newline at end of file diff --git a/Server/Controller/DAO.js b/Server/Controller/DAO.js index 7c17740..f88b899 100644 --- a/Server/Controller/DAO.js +++ b/Server/Controller/DAO.js @@ -2,6 +2,7 @@ import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al import Usuario from '../Model/Usuario.js'; // Asegúrate de tener la ruta correcta al archivo de Usuario import Mensaje from '../Model/Mensaje.js'; // Asegúrate de tener la ruta correcta al archivo de Mensaje import DAORegistro from './DAORegistro.js'; +import logger from '../utils/logger.js'; // Importa el logger class DAO { @@ -9,14 +10,14 @@ class DAO { const conexion = new Conexion(); const conexionEstablecida = await conexion.conectar(); try { - const sql = `SELECT id, matricula FROM usuario where inscrito = 1`; + const sql = `SELECT U.id, U.matricula FROM usuario U WHERE U.id NOT IN (SELECT I.idUsuario FROM inscripcion I, usuario U WHERE U.id = I.idUsuario) AND U.inscrito = 1;`; const [rows] = await conexionEstablecida.query(sql); const resultado = rows.map(row => { return { id: row.id, matricula: row.matricula }; }); return resultado; } catch (error) { - console.error(error); s + logger.error(`Error en DAO.matriculas: ${error.message}`); return []; } finally { conexion.cerrarConexion(); @@ -31,7 +32,7 @@ class DAO { const [rows] = await conexionEstablecida.query(sql, [alumno.getMatricula(), alumno.getContrasena()]); return rows.length > 0; } catch (error) { - console.error(error); + logger.error(`Error en DAO.validarAlumno: ${error.message}`); return false; } finally { conexion.cerrarConexion(); @@ -52,9 +53,14 @@ class DAO { usuario.nombre, usuario.apellido, usuario.nacionalidad, usuario.matricula, usuario.contrasena, usuario.correo, usuario.rol ]); - return result.affectedRows > 0 ? new Mensaje(true, usuario.matricula, usuario.contrasena) : new Mensaje(false, null); + if (result.affectedRows > 0) { + await DAORegistro.registrar(usuario, "Alumno agregado", new Date()); + return new Mensaje(true, usuario.matricula, usuario.contrasena); + } else { + return new Mensaje(false, null); + } } catch (error) { - console.error(error); + logger.error(`Error en DAO.agregarAlumno: ${error.message}`); return new Mensaje(false, null); } finally { conexion.cerrarConexion(); @@ -71,9 +77,13 @@ class DAO { usuario.nacionalidad, usuario.tipoSangre, usuario.fecha_nacimiento, usuario.curp, usuario.idCarrera, usuario.id ]); - return result.affectedRows > 0; + if (result.affectedRows > 0) { + await DAORegistro.registrar(usuario, "Alumno editado", new Date()); + return true; + } + return false; } catch (error) { - console.error(error); + logger.error(`Error en DAO.editarAlumno: ${error.message}`); return false; } finally { conexion.cerrarConexion(); @@ -99,7 +109,7 @@ class DAO { } return null; } catch (error) { - console.error(error); + logger.error(`Error en DAO.alumnoIniciado: ${error.message}`); return null; } finally { conexion.cerrarConexion(); @@ -114,7 +124,7 @@ class DAO { const [rows] = await conexionEstablecida.query(sql); return rows[0].ultimo_id || -1; } catch (error) { - console.error(error); + logger.error(`Error en DAO.obtenerUltimoID: ${error.message}`); return -1; } finally { conexion.cerrarConexion(); @@ -152,24 +162,31 @@ class DAO { ); } } catch (error) { - console.error(error); + logger.error(`Error en DAO.traeUsuario: ${error.message}`); } finally { conexion.cerrarConexion(); } return usuario; } - static async editarAlumnoInscrito(data) { + + static async editarAlumnoInscrito(data, id) { 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 + id, data.idUsuario ]); - return result.affectedRows > 0; - + if (result.affectedRows > 0) { + const usuario = new Usuario(); + usuario.id = data.idUsuario; + await DAORegistro.registrar(usuario, "Alumno inscrito", new Date()); + return true; + } + return false; } catch (error) { - + logger.error(`Error en DAO.editarAlumnoInscrito: ${error.message}`); + return false; } finally { conexion.cerrarConexion(); } @@ -180,7 +197,7 @@ class DAO { 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 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, C.id as idCarrera 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]; @@ -203,16 +220,61 @@ class DAO { tutorNombre: row.tutorNombre, tutorApellido: row.tutorApellido, numeroDeTelefono: row.numeroDeTelefono, - carreraNombre: row.carreraNombre - } + carreraNombre: row.carreraNombre, + idCarrera: row.idCarrera + }; } } catch (error) { - console.error(error); + logger.error(`Error en DAO.traeTodosLosDatosUsuario: ${error.message}`); } finally { conexion.cerrarConexion(); } return usuario; } + + static async inscribirUsuario(data) { + const conexion = new Conexion(); + const conexionEstablecida = await conexion.conectar(); + try { + const sql = `INSERT INTO inscripcion (idUsuario, idCarrera) VALUES (?, ?);`; + const [result] = await conexionEstablecida.query(sql, [data.id, data.idCarrera]); + if (result.affectedRows > 0) { + const usuario = new Usuario(); + usuario.id = data.id; + await DAORegistro.registrar(usuario, "Usuario inscrito", new Date()); + return true; + } + return false; + } catch (error) { + logger.error(`Error en DAO.inscribirUsuario: ${error.message}`); + return false; + } finally { + conexion.cerrarConexion(); + } + } + + static async editarAlumnoRechazado(data, id) { + const conexion = new Conexion(); + const conexionEstablecida = await conexion.conectar(); + try { + const sql = `UPDATE usuario SET inscrito = ? WHERE id = ?`; + const [result] = await conexionEstablecida.query(sql, [ + id, data.id + ]); + if (result.affectedRows > 0) { + const usuario = new Usuario(); + usuario.id = data.id; + await DAORegistro.registrar(usuario, "Alumno rechazado", new Date()); + return true; + } + return false; + } catch (error) { + logger.error(`Error en DAO.editarAlumnoRechazado: ${error.message}`); + return false; + } finally { + conexion.cerrarConexion(); + } + } } -export default DAO; +export default DAO; \ No newline at end of file diff --git a/Server/Controller/DAOCarrera.js b/Server/Controller/DAOCarrera.js index d18ea20..997727d 100644 --- a/Server/Controller/DAOCarrera.js +++ b/Server/Controller/DAOCarrera.js @@ -1,5 +1,7 @@ import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión import Carrera from '../Model/Carrera.js'; // Asegúrate de tener la ruta correcta al archivo de Carrera +import logger from '../utils/logger.js'; // Importa el logger +import DAORegistro from './DAORegistro.js'; // Asegúrate de tener la ruta correcta al archivo de DAORegistro class DAOCarrera { static async dameCarreras() { @@ -9,9 +11,11 @@ class DAOCarrera { const sql = "SELECT * FROM carrera"; const [rows] = await conexionEstablecida.query(sql); const resultado = rows.map(row => new Carrera(row.id, row.nombre, row.area, row.campus, row.descripcion, row.mision, row.vision, row.objetivo)); + await DAORegistro.registrar({ getMatricula: () => 'SYSTEM' }, 'Consultó carreras', new Date().toISOString()); + return resultado; } catch (error) { - console.error(error); + logger.error(`Error al obtener carreras: ${error.message}`); return []; } finally { conexion.cerrarConexion(); @@ -19,4 +23,4 @@ class DAOCarrera { } } -export default DAOCarrera; +export default DAOCarrera; \ No newline at end of file diff --git a/Server/Controller/DAODocumento.js b/Server/Controller/DAODocumento.js index 4d1dede..6b55d8a 100644 --- a/Server/Controller/DAODocumento.js +++ b/Server/Controller/DAODocumento.js @@ -1,17 +1,25 @@ import Conexion from './Conexion.js'; +import logger from '../utils/logger.js'; // Importa el logger +import DAORegistro from './DAORegistro.js'; // Asegúrate de tener la ruta correcta al archivo de DAORegistro class DAODocumento { static async agregarDocumento(req, file) { const conexion = new Conexion(); - const conexionEstablecida = await conexion.conectar() + const conexionEstablecida = await conexion.conectar(); try { const sql = "INSERT INTO `documento`(`titulo`,`archivo`,`idUsuario`,`valido`) VALUES(?,?,?,?);"; const [result] = await conexionEstablecida.query(sql, [ req.titulo, file, req.idUsuario, 0 ]); + + if (result.affectedRows > 0) { + // Registrar la operación + await DAORegistro.registrar({ getMatricula: () => req.idUsuario }, 'Agregó documento', new Date().toISOString()); + } + return result.affectedRows > 0; } catch (error) { - console.log(error); + logger.error(`Error al agregar documento: ${error.message}`); throw error; } finally { conexion.cerrarConexion(); diff --git a/Server/Controller/DAORegistro.js b/Server/Controller/DAORegistro.js index 290a668..6ccbfba 100644 --- a/Server/Controller/DAORegistro.js +++ b/Server/Controller/DAORegistro.js @@ -1,4 +1,5 @@ import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión +import logger from '../utils/logger.js'; // Importa el logger class DAORegistro { static async registrar(usuario, descripcion, day) { @@ -6,10 +7,10 @@ class DAORegistro { const conexionEstablecida = await conexion.conectar(); try { const sql = "INSERT INTO registro (matricula, descripcion) VALUES (?, ?)"; - const stm = await conexionEstablecida.query(sql, [usuario.getMatricula(), descripcion + day]); + const stm = await conexionEstablecida.query(sql, [usuario, descripcion + day]); return stm.affectedRows > 0; } catch (error) { - console.error(error); + logger.error(`Error en DAORegistro.registrar: ${error.message}`); return false; } finally { conexion.cerrarConexion(); diff --git a/Server/Controller/DAOTutor.js b/Server/Controller/DAOTutor.js index b1f8e65..c9f5f9f 100644 --- a/Server/Controller/DAOTutor.js +++ b/Server/Controller/DAOTutor.js @@ -1,5 +1,7 @@ import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión import Tutor from '../Model/Tutor.js'; // Asegúrate de tener la ruta correcta al archivo de Tutor +import logger from '../utils/logger.js'; // Importa el logger +import DAORegistro from './DAORegistro.js'; // Asegúrate de tener la ruta correcta al archivo de DAORegistro class DAOTutor { @@ -7,11 +9,17 @@ class DAOTutor { const conexion = new Conexion(); const conexionEstablecida = await conexion.conectar(); try { - const sql = `INSERT INTO tutor (nombre,apellido,numeroDeTelefono,idUsuario)VALUES(?,?,?,?);`; + const sql = `INSERT INTO tutor (nombre,apellido,numeroDeTelefono,idUsuario) VALUES (?,?,?,?);`; const [result] = await conexionEstablecida.query(sql, [tutor.nombre, tutor.apellido, tutor.numeroDeTelefono, tutor.idUsuario]); + + if (result.affectedRows > 0) { + // Registrar la operación + await DAORegistro.registrar({ getMatricula: () => tutor.idUsuario }, 'Agregó tutor', new Date().toISOString()); + } + return result.affectedRows > 0; } catch (error) { - console.error(error); + logger.error(`Error al agregar tutor: ${error.message}`); return false; } finally { conexion.cerrarConexion(); @@ -24,9 +32,15 @@ class DAOTutor { try { const sql = `UPDATE tutor SET nombre = ?, apellido = ?, numeroDeTelefono = ? WHERE idUsuario = ?`; const [result] = await conexionEstablecida.query(sql, [tutor.nombre, tutor.apellido, tutor.numeroDeTelefono, tutor.idUsuario]); + + if (result.affectedRows > 0) { + // Registrar la operación + await DAORegistro.registrar({ getMatricula: () => tutor.idUsuario }, 'Editó tutor', new Date().toISOString()); + } + return result.affectedRows > 0; } catch (error) { - console.error(error); + logger.error(`Error al editar tutor: ${error.message}`); return false; } finally { conexion.cerrarConexion(); @@ -46,7 +60,7 @@ class DAOTutor { } return null; } catch (error) { - console.error(error); + logger.error(`Error al traer tutor: ${error.message}`); return null; } finally { conexion.cerrarConexion(); @@ -54,4 +68,4 @@ class DAOTutor { } } -export default DAOTutor; +export default DAOTutor; \ No newline at end of file diff --git a/Server/Documentos/SIU241010_ActaN.pdf b/Server/Documentos/SIU241010_ActaN.pdf new file mode 100644 index 0000000..ea877e6 Binary files /dev/null and b/Server/Documentos/SIU241010_ActaN.pdf differ diff --git a/Server/Documentos/SIU241010_Foto.jpg b/Server/Documentos/SIU241010_Foto.jpg new file mode 100644 index 0000000..68e11b4 Binary files /dev/null and b/Server/Documentos/SIU241010_Foto.jpg differ diff --git a/Server/package-lock.json b/Server/package-lock.json index 270ce5a..6d084e6 100644 --- a/Server/package-lock.json +++ b/Server/package-lock.json @@ -10,12 +10,14 @@ "license": "ISC", "dependencies": { "body-parser": "^1.20.2", + "caller": "^1.1.0", "cors": "^2.8.5", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", "multer": "^1.4.5-lts.1", "mysql": "^2.18.1", "mysql2": "^3.9.7", + "nodemailer": "^6.9.13", "winston": "^3.13.0" }, "devDependencies": { @@ -203,6 +205,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/caller/-/caller-1.1.0.tgz", + "integrity": "sha512-n+21IZC3j06YpCWaxmUy5AnVqhmCIM2bQtqQyy00HJlmStRt6kwDX5F9Z97pqwAB+G/tgSz6q/kUBbNyQzIubw==" + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -1027,9 +1034,9 @@ } }, "node_modules/mysql2": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", - "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", + "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -1082,6 +1089,14 @@ "node": ">= 0.6" } }, + "node_modules/nodemailer": { + "version": "6.9.13", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", + "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemon": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", diff --git a/Server/package.json b/Server/package.json index af45cba..93d2112 100644 --- a/Server/package.json +++ b/Server/package.json @@ -12,12 +12,14 @@ "description": "", "dependencies": { "body-parser": "^1.20.2", + "caller": "^1.1.0", "cors": "^2.8.5", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", "multer": "^1.4.5-lts.1", "mysql": "^2.18.1", "mysql2": "^3.9.7", + "nodemailer": "^6.9.13", "winston": "^3.13.0" }, "devDependencies": { diff --git a/Server/server.js b/Server/server.js index d167e60..9b4fa0b 100644 --- a/Server/server.js +++ b/Server/server.js @@ -1,15 +1,17 @@ import express from 'express'; import bodyParser from 'body-parser'; import cors from 'cors'; -import DAO from './Controller/DAO.js'; // Importa tus controladores DAO +import DAO from './Controller/DAO.js'; import DAOTutor from './Controller/DAOTutor.js'; import DAOCarreras from './Controller/DAOCarrera.js'; -import Usuario from './Model/Usuario.js'; // Importa tus modelos +import Usuario from './Model/Usuario.js'; import multer from 'multer'; import path from 'path'; import { fileURLToPath } from 'url'; import DAODocumento from './Controller/DAODocumento.js'; import fs from 'fs'; +import logger from './utils/logger.js'; +import EmailCtrl from './utils/mailCtrl.js' const app = express(); const port = 3000; @@ -19,7 +21,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const diskStorage = multer.diskStorage({ - destination: path.join(__dirname, '/ActasNacimiento'), + destination: path.join(__dirname, '/Documentos'), filename: (req, file, cb) => { cb(null, file.originalname); } @@ -33,12 +35,12 @@ app.use(bodyParser.json()); // Configuración de CORS app.use(cors({ - origin: 'http://localhost:5173', // Especifica el origen permitido + origin: 'http://localhost:5173', methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Origin', 'X-Requested-With', 'Content-Type', 'Accept'], credentials: true })); -app.use(express.static(path.join(__dirname,'ActasNacimiento'))) +app.use(express.static(path.join(__dirname, 'Documentos'))); // Rutas app.get("/matriculas", async (req, res) => { @@ -46,6 +48,7 @@ app.get("/matriculas", async (req, res) => { const alumnos = await DAO.matriculas(); res.json(alumnos); } catch (error) { + logger.error(`Error en /matriculas: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -57,6 +60,7 @@ app.post("/agregarAlumno", async (req, res) => { const msj = await DAO.agregarAlumno(usuario); res.json(msj); } catch (error) { + logger.error(`Error en /agregarAlumno: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -67,6 +71,7 @@ app.put("/editarUsuario", async (req, res) => { const verificado = await DAO.editarAlumno(usuario); res.json({ Editado: verificado }); } catch (error) { + logger.error(`Error en /editarUsuario: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -77,6 +82,7 @@ app.put("/editarTutor", async (req, res) => { const verificado = await DAOTutor.editarTutor(tutor); res.json({ Editado: verificado }); } catch (error) { + logger.error(`Error en /editarTutor: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -87,6 +93,7 @@ app.post("/agregarTutor", async (req, res) => { const agregado = await DAOTutor.agregarTutor(tutor); res.json({ msj: agregado }); } catch (error) { + logger.error(`Error en /agregarTutor: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -110,6 +117,7 @@ app.post("/alumnoIniciado", async (req, res) => { res.status(401).json({ error: "Credenciales inválidas" }); } } catch (error) { + logger.error(`Error en /alumnoIniciado: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -120,6 +128,7 @@ app.post("/usuarioValido", async (req, res) => { const verificado = await DAO.validarAlumno(usuario); res.json({ existe: verificado }); } catch (error) { + logger.error(`Error en /usuarioValido: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -130,6 +139,7 @@ app.post("/traerDatosAlumno", async (req, res) => { const datos = await DAO.traeUsuario(usuario.id); res.json(datos); } catch (error) { + logger.error(`Error en /traerDatosAlumno: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -139,6 +149,7 @@ app.get("/carreras", async (req, res) => { const carreras = await DAOCarreras.dameCarreras(); res.json(carreras); } catch (error) { + logger.error(`Error en /carreras: ${error.message}`); res.status(500).json({ error: error.message }); } }); @@ -149,18 +160,24 @@ app.post("/traerDatosTutor", async (req, res) => { const datos = await DAOTutor.traerTutor(usuario.id); res.json(datos); } catch (error) { + logger.error(`Error en /traerDatosTutor: ${error.message}`); res.status(500).json({ error: error.message }); } }); -app.post("/agregarDocumentoAN", fileUpload, async (req, res) => { +app.post("/agregarDocumento", fileUpload, async (req, res) => { try { + if (!req.file) { + return res.status(400).json({ error: "No se ha cargado ningún archivo" }); + } const data = req.body; - const file = fs.readFileSync(path.join(__dirname, '/ActasNacimiento/' + req.file.filename)) + const filePath = path.join(__dirname, 'Documentos', req.file.filename); + const file = fs.readFileSync(filePath); + const guardado = await DAODocumento.agregarDocumento(data, file); if (guardado) { - const cambiar = await DAO.editarAlumnoInscrito(data); + const cambiar = await DAO.editarAlumnoInscrito(data, 1); if (cambiar) { res.json({ message: true }); } else { @@ -170,19 +187,19 @@ app.post("/agregarDocumentoAN", fileUpload, async (req, res) => { res.json({ message: false }); } } catch (error) { + logger.error(`Error en /agregarDocumento: ${error.message}`); res.status(500).json({ error: error.message }); + logger.error(error); } }); -// Manejo de errores app.use((err, req, res, next) => { - console.error(err.stack); + logger.error(err.stack); res.status(500).send('Something broke!'); }); -// Iniciar el servidor app.listen(port, () => { - console.log(`App listening at http://localhost:${port}`); + logger.info(`App listening at http://localhost:${port}`); }); app.post("/traerTodosDatosAlumno", async (req, res) => { @@ -191,6 +208,39 @@ app.post("/traerTodosDatosAlumno", async (req, res) => { const datos = await DAO.traeTodosLosDatosUsuario(usuario.id); res.json(datos); } catch (error) { + logger.error(`Error en /traerTodosDatosAlumno: ${error.message}`); res.status(500).json({ error: error.message }); } }); + +app.post("/iscribirAlumno", async (req, res) => { + try { + const usuario = req.body; + const datos = await DAO.iscribirUsuario(usuario); + if (datos) { + res.json({ message: true }); + } else { + res.json({ message: false }); + } + } catch (error) { + logger.error(`Error en /iscribirAlumno: ${error.message}`); + res.status(500).json({ error: error.message, message: false }); + } +}); + +app.post("/regresarAlumno", async (req, res) => { + try { + const data = req.body; + const cambiar = await DAO.editarAlumnoRechazado(data, 0); + if (cambiar) { + res.json({ message: true }); + } else { + res.json({ message: false }); + } + } catch (error) { + logger.error(`Error en /regresarAlumno: ${error.message}`); + res.status(500).json({ error: error.message, message: false }); + } +}); + +app.post('/email', EmailCtrl.sendEmail); diff --git a/Server/utils/logger.js b/Server/utils/logger.js new file mode 100644 index 0000000..cd849fe --- /dev/null +++ b/Server/utils/logger.js @@ -0,0 +1,27 @@ +import { createLogger, format, transports } from 'winston'; +import caller from 'caller'; + +const myFormat = format.printf(info => { + const file = caller(); // Obtiene el archivo que llama al log + return `[${info.timestamp}] [${info.level}] ${info.message}`; +}); + +const logger = createLogger({ + format: format.combine( + format.colorize(), // Agrega color + format.timestamp(), + myFormat + ), + transports: [ + new transports.File({ + maxsize: 5120000, + maxFiles: 5, + filename: `./logs/log-api.log` + }), + new transports.Console({ + level: 'debug' + }) + ] +}); + +export default logger; diff --git a/Server/utils/mailCtrl.js b/Server/utils/mailCtrl.js new file mode 100644 index 0000000..fc62c44 --- /dev/null +++ b/Server/utils/mailCtrl.js @@ -0,0 +1,37 @@ +import nodemailer from 'nodemailer'; +import DAORegistro from '../Controller/DAORegistro.js'; +import logger from '../utils/logger.js'; + +class EmailCtrl { + static async sendEmail(req, res) { + const transporter = nodemailer.createTransport({ + service: 'Gmail', + auth: { + user: 'drannet9@gmail.com', + pass: 'qnjkswqvuonuporj' + } + }); + + const mailOptions = { + from: 'drannet9@gmail.com', + to: req.body.correo, + subject: 'Registro', + text: 'Gracias por registrarse en Dran.net este es tu matricula: ' + req.body.matricula + ' y esta tu contraseña: ' + req.body.contrasena + ' No se te olvide anotarlas bien.' + }; + + try { + const info = await transporter.sendMail(mailOptions); + logger.info(`Email sent: ${info.response}`); + res.status(200).jsonp(req.body); + + const descripcion = `Correo enviado a ${mailOptions.to}`; + const fecha = new Date(); + await DAORegistro.registrar('SYSTEM', descripcion, fecha); + } catch (error) { + logger.error(`Error al enviar el correo: ${error}`); + res.status(500).send(error.message); + } + } +} + +export default EmailCtrl; diff --git a/backend/.vscode/settings.json b/backend/.vscode/settings.json deleted file mode 100644 index c5f3f6b..0000000 --- a/backend/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.configuration.updateBuildConfiguration": "interactive" -} \ No newline at end of file diff --git a/backend/pom.xml b/backend/pom.xml deleted file mode 100644 index 7390a10..0000000 --- a/backend/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - 4.0.0 - - mx.uv - backend - 1.0-SNAPSHOT - - backend - - http://www.example.com - - - UTF-8 - 1.8 - 1.8 - - - - - junit - junit - 4.11 - test - - - - com.sparkjava - spark-core - 2.9.4 - - - - org.slf4j - slf4j-simple - 1.7.21 - - - - com.google.code.gson - gson - 2.10.1 - compile - - - - mysql - mysql-connector-java - 8.0.30 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.8 - 1.8 - - - - maven-assembly-plugin - - - package - - single - - - - - - - jar-with-dependencies - - - - mx.uv.App - - - - - - - \ No newline at end of file diff --git a/backend/src/main/java/mx/uv/App.java b/backend/src/main/java/mx/uv/App.java deleted file mode 100644 index d2571b8..0000000 --- a/backend/src/main/java/mx/uv/App.java +++ /dev/null @@ -1,132 +0,0 @@ -package mx.uv; - -import static spark.Spark.*; - -import java.util.HashMap; - -import com.google.gson.Gson; -import com.google.gson.JsonObject; - -import mx.uv.Controller.DAO; -import mx.uv.Controller.DAOTutor; -import mx.uv.Controller.DAO_Carrrera; -import mx.uv.Model.Mensaje; -import mx.uv.Model.Tutor; -import mx.uv.Model.Usuario; - -public class App { - static Gson gson = new Gson(); - static HashMap usuarios = new HashMap<>(); - - public static void main(String[] args) { - // Configuración de CORS - options("/*", (request, response) -> { - String accessControlRequestHeaders = request.headers("Access-Control-Request-Headers"); - if (accessControlRequestHeaders != null) { - response.header("Access-Control-Allow-Headers", accessControlRequestHeaders); - } - - String accessControlRequestMethod = request.headers("Access-Control-Request-Method"); - if (accessControlRequestMethod != null) { - response.header("Access-Control-Allow-Methods", accessControlRequestMethod); - } - return "OK"; - }); - - before((request, response) -> { - response.header("Access-Control-Allow-Origin", "http://localhost:5173"); - response.header("Access-Control-Allow-Credentials", "true"); - }); - - get("/todosLosAlumnos", (request, response) -> { - response.type("application/json"); - return gson.toJson(DAO.dameAlumnos()); - }); - - post("/agregarAlumno", (request, response) -> { - String payload = request.body(); - Usuario usuario = gson.fromJson(payload, Usuario.class); - usuario.setRol("estudiante"); - Mensaje msj = DAO.agregarAlumno(usuario); - JsonObject respuesta = new JsonObject(); - respuesta.addProperty("contrasena", msj.getUsuario().getContrasena()); - respuesta.addProperty("matricula", msj.getUsuario().getMatricula()); - respuesta.addProperty("verificacion", msj.isVerificacion()); - return respuesta; - }); - - put("/editarUsuario", (request, response) -> { - String payload = request.body(); - Usuario usuario = gson.fromJson(payload, Usuario.class); - boolean verificado = DAO.editarAlumno(usuario); - JsonObject respuesta = new JsonObject(); - respuesta.addProperty("Editado", verificado); - return respuesta; - }); - - put("/editarTutor", (request, response) -> { - String payload = request.body(); - Tutor tutor = gson.fromJson(payload, Tutor.class); - boolean verificado = DAOTutor.editarTutor(tutor); - JsonObject respuesta = new JsonObject(); - respuesta.addProperty("Editado", verificado); - return respuesta; - }); - - post("/agregarTutor", (request, response) -> { - String payload = request.body(); - Tutor tutor = gson.fromJson(payload, Tutor.class); - Boolean agregado = DAOTutor.agregarTutor(tutor); - JsonObject respuesta = new JsonObject(); - respuesta.addProperty("msj", agregado); - return respuesta; - }); - - post("/alumnoIniciado", (request, response) -> { - String payload = request.body(); - response.type("application/json"); - Usuario u = gson.fromJson(payload, Usuario.class); - if (u.getContrasena() == null || u.getMatricula() == null) { - response.status(400); - return gson.toJson("Missing matricula or contrasena"); - } - Usuario usuario = DAO.alumnoIniciado(u.getMatricula(), u.getContrasena()); - JsonObject respuesta = new JsonObject(); - respuesta.addProperty("matricula", usuario.getMatricula()); - respuesta.addProperty("authToken", usuario.crearToken()); - respuesta.addProperty("authRol", usuario.getRol()); - respuesta.addProperty("authId", usuario.getId()); - respuesta.addProperty("message", "Binevenido " + usuario.getNombre()); - return gson.toJson(respuesta); - }); - - post("/usuarioValido", (request, response) -> { - String payload = request.body(); - Usuario usuario = gson.fromJson(payload, Usuario.class); - boolean verificado = DAO.validarAlumno(usuario); - JsonObject respuesta = new JsonObject(); - respuesta.addProperty("existe", verificado); - return respuesta; - }); - - post("/traerDatosAlumno", (request, response) -> { - String payload = request.body(); - response.type("application/json"); - Usuario u = gson.fromJson(payload, Usuario.class); - return gson.toJson(DAO.traeUsuario(u.getId())); - }); - - get("/carreras", (request, response) -> { - response.type("application/json"); - return gson.toJson(DAO_Carrrera.dameCarreras()); - }); - - post("/traerDatosTutor", (request, response) -> { - String payload = request.body(); - response.type("application/json"); - Usuario u = gson.fromJson(payload, Usuario.class); - return gson.toJson(DAOTutor.tarerTutor(u.getId())); - }); - - } -} diff --git a/backend/src/main/java/mx/uv/Controller/Conexion.java b/backend/src/main/java/mx/uv/Controller/Conexion.java deleted file mode 100644 index fb0a76a..0000000 --- a/backend/src/main/java/mx/uv/Controller/Conexion.java +++ /dev/null @@ -1,57 +0,0 @@ -package mx.uv.Controller; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.logging.Logger; - -public class Conexion { - - private static Connection conexion; - private static Conexion instancia; - private static final String url = "jdbc:mysql://localhost:3306/universidad"; - private static final String user = "UserRemoto"; - private static final String password = "password123"; - private static final Logger logger = Logger.getLogger(Conexion.class.getName()); - - private Conexion() { - } - - public static Conexion getInstance() { - if (instancia == null) { - synchronized (Conexion.class) { - if (instancia == null) { - instancia = new Conexion(); - } - } - } - return instancia; - } - - public Connection conectar() { - try { - Class.forName("com.mysql.cj.jdbc.Driver"); - conexion = DriverManager.getConnection(url, user, password); - if (conexion != null) { - logger.info("Conexión exitosa"); - return conexion; - } else { - logger.severe("ERROR: No se pudo conectar"); - } - } catch (Exception e) { - logger.severe("ERROR: " + e.getMessage()); - } - return null; - } - - public void cerrarConexion() { - try { - if (conexion != null && !conexion.isClosed()) { - conexion.close(); - logger.info("Se desconectó de la base de datos"); - } - } catch (SQLException e) { - logger.severe("ERROR: " + e.getMessage()); - } - } -} diff --git a/backend/src/main/java/mx/uv/Controller/DAO.java b/backend/src/main/java/mx/uv/Controller/DAO.java deleted file mode 100644 index 366f1b1..0000000 --- a/backend/src/main/java/mx/uv/Controller/DAO.java +++ /dev/null @@ -1,243 +0,0 @@ -package mx.uv.Controller; - -import java.sql.*; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.google.gson.JsonElement; - -import mx.uv.Model.Usuario; -import mx.uv.Model.Mensaje; -import mx.uv.Model.Registro; - -import java.sql.*; -import java.util.*; -import java.time.LocalDateTime; - -public class DAO { - private static Conexion cn = Conexion.getInstance(); - private static String nombreTabla = "usuario"; - private static String colId = "id"; - private static String colNombre = "nombre"; - private static String colApellido = "apellido"; - private static String colMatricula = "matricula"; - private static String colContrasena = "contrasena"; - private static String colCorreo = "correo"; - private static String colNacionalidad = "nacionalidad"; - private static String colTipoSangre = "tipoSangre"; - private static String colFechaNacimiento = "fecha_nacimiento"; - private static String colCurp = "curp"; - private static String colRol = "rol"; - private static String colIdCarrera = "idCarrera"; - private static String colInscrito = "inscrito"; - - public static List dameAlumnos() { - Statement stm = null; - ResultSet rs = null; - Connection conn = null; - List resultado = new ArrayList<>(); - - conn = cn.conectar(); - - try { - String sql = "SELECT " + colId + " " + colNombre + " " + colApellido + " " + colMatricula + " from " - + nombreTabla; - stm = conn.createStatement(); - rs = stm.executeQuery(sql); - while (rs.next()) { - Usuario u = new Usuario(rs.getInt(colId), rs.getString(colNombre), rs.getString(colApellido), - rs.getString(colMatricula)); - resultado.add(u); - } - } catch (Exception e) { - System.out.println(e); - } finally { - } - return resultado; - } - - public static boolean validarAlumno(Usuario alumno) { - PreparedStatement stm = null; - Connection conn = null; - boolean verificacion = false; - ResultSet rs = null; - conn = cn.conectar(); - try { - String sql = "SELECT * FROM " + nombreTabla + " WHERE " + colMatricula + " = ? AND " + colContrasena - + " = ?"; - stm = conn.prepareStatement(sql); - stm.setString(1, alumno.getMatricula()); - stm.setString(2, alumno.getContrasena()); - rs = stm.executeQuery(); - if (rs.next()) { - verificacion = true; - } else { - verificacion = false; - } - } catch (SQLException ex) { - System.err.println(ex); - } finally { - } - return verificacion; - } - - public static Mensaje agregarAlumno(Usuario usuario) { - Mensaje mensaje = new Mensaje(); - PreparedStatement stm = null; - Connection conn = null; - String matricula = "SIU24" + (1000 + obtenerUltimoID()); - String password = crearContrasena(); - usuario.setContrasena(password); - usuario.setMatricula(matricula); - conn = cn.conectar(); - try { - String sql = "INSERT INTO " + nombreTabla + " (" + colNombre + ", " + colApellido + ", " + colNacionalidad - + ", " + colMatricula + ", " + colContrasena + ", " + colCorreo + ", " + colRol - + ") VALUES (?, ?, ?, ?, ?, ?,?)"; - stm = conn.prepareStatement(sql); - stm.setString(1, usuario.getNombre()); - stm.setString(2, usuario.getApellido()); - stm.setString(3, usuario.getNacionalidad()); - stm.setString(4, usuario.getMatricula()); - stm.setString(5, usuario.getContrasena()); - stm.setString(6, usuario.getCorreo()); - stm.setString(7, usuario.getRol()); - if (stm.executeUpdate() > 0) { - mensaje.setVerificacion(true); - mensaje.setUsuario(usuario); - } else { - mensaje.setVerificacion(false); - } - } catch (Exception e) { - System.out.println(e); - } finally { - } - return mensaje; - } - - public static String crearContrasena() { - Random random = new Random(); - StringBuilder contrasena = new StringBuilder(); - String CARACTERES_PERMITIDOS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#"; - for (int i = 0; i < 10; i++) { - int numero = random.nextInt(CARACTERES_PERMITIDOS.length()); - contrasena.append(CARACTERES_PERMITIDOS.charAt(numero)); - } - return contrasena.toString(); - } - - public static boolean eliminarAlumno(int idAlumno) { - return false; - } - - public static boolean editarAlumno(Usuario usuario) { - PreparedStatement stm = null; - Connection conn = null; - boolean verificacion = false; - conn = cn.conectar(); - try { - String sql = "UPDATE `usuario` SET `nombre` = ?, `apellido` = ?, `correo` = ?, `nacionalidad` = ?, `tipoSangre` = ?, `fecha_nacimiento` = ?, `curp` = ?, `idCarrera` = ? WHERE `id` = ?;"; - stm = conn.prepareStatement(sql); - stm.setString(1, usuario.getNombre()); - stm.setString(2, usuario.getApellido()); - stm.setString(3, usuario.getCorreo()); - stm.setString(4, usuario.getNacionalidad()); - stm.setString(5, usuario.getTipoSangre()); - stm.setString(6, usuario.getFecha_nacimiento()); - stm.setString(7, usuario.getCurp()); - stm.setInt(8, usuario.getIdCarrera()); - stm.setInt(9, usuario.getId()); - if (stm.executeUpdate() > 0) { - verificacion = true; - } - } catch (SQLException ex) { - System.err.println(ex); - } finally { - cn.cerrarConexion(); - } - return verificacion; - } - - public static Usuario alumnoIniciado(String matricula, String contrasena) { - ResultSet rs = null; - Connection conn = null; - Usuario usuario = null; - conn = cn.conectar(); - try { - String sql = "SELECT * FROM " + nombreTabla + " WHERE " + colMatricula + " = ? AND " + colContrasena - + " = ?"; - PreparedStatement stmt = conn.prepareStatement(sql); - stmt.setString(1, matricula); - stmt.setString(2, contrasena); - rs = stmt.executeQuery(); - if (rs.next()) { - usuario = new Usuario(rs.getInt(colId), rs.getString(colNombre), rs.getString(colApellido), - rs.getString(colMatricula), rs.getString(colRol)); - DAORegistro.registrar(usuario, "Inicio Sesión", LocalDateTime.now()); - } - } catch (Exception e) { - System.out.println(e); - } finally { - } - return usuario; - } - - public static int obtenerUltimoID() { - Connection conn = null; - Statement stm = null; - ResultSet rs = null; - int ultimoID = -1; - try { - conn = cn.conectar(); - String sql = "SELECT MAX(" + colId + ") AS ultimo_id FROM " + nombreTabla; - stm = conn.createStatement(); - rs = stm.executeQuery(sql); - if (rs.next()) { - ultimoID = rs.getInt("ultimo_id"); - } - } catch (SQLException ex) { - System.err.println(ex); - } finally { - try { - if (rs != null) - rs.close(); - if (stm != null) - stm.close(); - if (conn != null) - conn.close(); - } catch (SQLException ex) { - System.err.println(ex); - } - } - return ultimoID; - } - - public static Usuario traeUsuario(int id) { - PreparedStatement stm = null; - Connection conn = null; - Usuario user = null; - ResultSet rs = null; - conn = cn.conectar(); - try { - String sql = "SELECT `id`,`nombre`,`apellido`,`matricula`,`correo`,`nacionalidad`,`tipoSangre`,`fecha_nacimiento`,`curp`,`idCarrera`,`inscrito`\n" - + // - "FROM `usuario` where id = ? ;"; - stm = conn.prepareStatement(sql); - stm.setInt(1, id); - rs = stm.executeQuery(); - while (rs.next()) { - user = new Usuario(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), - rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getInt(10), - rs.getInt(11)); - } - - } catch (SQLException ex) { - System.err.println(ex); - } finally { - } - return user; - } - -} diff --git a/backend/src/main/java/mx/uv/Controller/DAORegistro.java b/backend/src/main/java/mx/uv/Controller/DAORegistro.java deleted file mode 100644 index 3d7ae80..0000000 --- a/backend/src/main/java/mx/uv/Controller/DAORegistro.java +++ /dev/null @@ -1,45 +0,0 @@ -package mx.uv.Controller; - -import java.time.LocalDateTime; -import java.sql.*; - -import mx.uv.Model.Usuario; - -public class DAORegistro { - private static Conexion cn = Conexion.getInstance(); - - public static void registrar(Usuario usuario, String descripcion, LocalDateTime day) { - PreparedStatement stm = null; - Connection conn = null; - conn = cn.conectar(); - try { - String sql = "INSERT INTO `registro`(`matricula`,`descripcion`)VALUES(?,?);"; - stm = (PreparedStatement) conn.prepareStatement(sql); - stm.setString(1, usuario.getMatricula()); - stm.setString(2, descripcion + day); - stm.executeUpdate(); - } catch (Exception e) { - System.out.println(e); - } finally { - cerrarConexiones(stm, conn); - } - } - - private static void cerrarConexiones(PreparedStatement stm, Connection conn) { - if (stm != null) { - try { - stm.close(); - } catch (Exception e) { - System.out.println(e); - } - stm = null; - } - try { - conn.close(); - cn.cerrarConexion(); - } catch (Exception e) { - System.out.println(e); - } - } - -} diff --git a/backend/src/main/java/mx/uv/Controller/DAOTutor.java b/backend/src/main/java/mx/uv/Controller/DAOTutor.java deleted file mode 100644 index a713564..0000000 --- a/backend/src/main/java/mx/uv/Controller/DAOTutor.java +++ /dev/null @@ -1,156 +0,0 @@ -package mx.uv.Controller; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; - -import mx.uv.Model.Tutor; - -public class DAOTutor { - - private static Conexion cn = Conexion.getInstance(); - - public static List dameTutores() { - Statement stm = null; - ResultSet rs = null; - Connection conn = null; - List resultado = new ArrayList<>(); - - conn = cn.conectar(); - - try { - String sql = "SELECT * from tutor"; - stm = conn.createStatement(); - rs = stm.executeQuery(sql); - while (rs.next()) { - Tutor u = new Tutor(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getInt(5)); - resultado.add(u); - } - } catch (Exception e) { - System.out.println(e); - } finally { - cerrarConexiones(null, conn); - } - return resultado; - } - - public static boolean validarTutor(Tutor tutor) { - Statement stm = null; - Connection conn = null; - boolean verificacion = false; - ResultSet rs = null; - conn = cn.conectar(); - try { - String sql = "select * from tutor " - + "where id= '" + tutor.getId() + "' and nombre='" + tutor.getNombre() + "'"; - stm = (Statement) conn.createStatement(); - rs = stm.executeQuery(sql); - if (rs.next()) { - verificacion = true; - } else { - verificacion = false; - } - conn.close(); - } catch (Exception ex) { - System.err.println(ex); - } - return verificacion; - } - - public static boolean agregarTutor(Tutor tutor) { - PreparedStatement stm = null; - Connection conn = null; - boolean msj = false; - - conn = cn.conectar(); - try { - String sql = "INSERT INTO `tutor`(`nombre`,`apellido`,`parentesco`,`ocupacion`,`telefono`)VALUES(?,?,?,?,?);"; - stm = (PreparedStatement) conn.prepareStatement(sql); - stm.setString(1, tutor.getNombre()); - stm.setString(2, tutor.getApellido()); - stm.setInt(3, tutor.getNumeroDeTelefono()); - stm.setInt(4, tutor.getIdUsuario()); - } catch (Exception e) { - System.out.println(e); - } finally { - // cerrarConexiones(stm, conn); - } - return msj; - } - - private static void cerrarConexiones(PreparedStatement stm, Connection conn) { - if (stm != null) { - try { - stm.close(); - } catch (Exception e) { - System.out.println(e); - } - stm = null; - } - try { - conn.close(); - cn.cerrarConexion(); - } catch (Exception e) { - System.out.println(e); - } - } - - public static boolean eliminarTutor(Tutor tutor) { - return false; - } - - public static boolean editarTutor(Tutor tutor) { - PreparedStatement stm = null; - Connection conn = null; - boolean verificacion = false; - conn = cn.conectar(); - try { - String sql = "UPDATE `tutor` SET `nombre` = ?, `apellido` = ?, `numeroDeTelefono` = ? WHERE `idUsuario` = ?;"; - stm = conn.prepareStatement(sql); - stm.setString(1, tutor.getNombre()); - stm.setString(2, tutor.getApellido()); - stm.setInt(3, tutor.getNumeroDeTelefono()); - stm.setInt(4, tutor.getIdUsuario()); - if (stm.executeUpdate() > 0) { - verificacion = true; - } - } catch (SQLException ex) { - System.out.println(ex); - } finally { - cerrarConexiones(stm, conn); - cn.cerrarConexion(); - } - return verificacion; - } - - public static Tutor tarerTutor(int id) { - PreparedStatement stm = null; - Connection conn = null; - Tutor tutor = null; - ResultSet rs = null; - conn = cn.conectar(); - try { - String sql = "SELECT `id`,`nombre`,`apellido`,`numeroDeTelefono`,`idUsuario`\n" - + - "FROM `tutor` where idUsuario = ? ;"; - stm = conn.prepareStatement(sql); - stm.setInt(1, id); - rs = stm.executeQuery(); - if (rs.next()) { - tutor = new Tutor(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getInt(5)); - } - - } catch (SQLException ex) { - System.err.println(ex); - } finally { - cerrarConexiones(stm, conn); - cn.cerrarConexion(); - } - return tutor; - } - -} diff --git a/backend/src/main/java/mx/uv/Controller/DAO_Carrrera.java b/backend/src/main/java/mx/uv/Controller/DAO_Carrrera.java deleted file mode 100644 index 34673bf..0000000 --- a/backend/src/main/java/mx/uv/Controller/DAO_Carrrera.java +++ /dev/null @@ -1,38 +0,0 @@ -package mx.uv.Controller; - -import java.sql.*; -import java.util.ArrayList; -import java.util.List; - -import mx.uv.Model.Carrera; - -public class DAO_Carrrera { - - private static Conexion cn = Conexion.getInstance(); - - public static List dameCarreras() { - Statement stm = null; - ResultSet rs = null; - Connection conn = null; - List resultado = new ArrayList<>(); - System.out.println("Aqui"); - conn = cn.conectar(); - - try { - String sql = "SELECT * from carrera"; - stm = conn.createStatement(); - rs = stm.executeQuery(sql); - while (rs.next()) { - Carrera u = new Carrera(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), - rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8)); - resultado.add(u); - } - } catch (Exception e) { - System.out.println(e); - } finally { - } - return resultado; - - } - -} \ No newline at end of file diff --git a/backend/src/main/java/mx/uv/Controller/DAO_Documentacion.java b/backend/src/main/java/mx/uv/Controller/DAO_Documentacion.java deleted file mode 100644 index 672fe82..0000000 --- a/backend/src/main/java/mx/uv/Controller/DAO_Documentacion.java +++ /dev/null @@ -1,107 +0,0 @@ -package mx.uv.Controller; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Statement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -import mx.uv.Model.Documento; - -public class DAO_Documentacion { - - private static Conexion cn = Conexion.getInstance(); - - @SuppressWarnings("null") - public List dameDocumentacion() { - Statement stm = null; - ResultSet rs = null; - Connection conn = null; - List resultado = new ArrayList<>(); - - try { - String sql = "SELECT * from documentacion"; - stm = conn.createStatement(); - rs = stm.executeQuery(sql); - while (rs.next()) { - // Documento u = new Documento(rs.getInt(1), rs.getBytes(2), - // rs.getBytes(3),rs.getBytes(4), rs.getBytes(5),rs.getBytes(6), rs.getBytes(7), - // rs.getBytes(8), rs.getBytes(9), rs.getBytes(10)); - // resultado.add(u); - } - } catch (Exception e) { - System.out.println(e); - } finally { - cerrarConexiones(null, conn); - } - return resultado; - } - - public static boolean agregarDocumentacion(Documento documentacion) { - PreparedStatement stm = null; - Connection conn = null; - boolean msj = false; - - conn = cn.conectar(); - - try { - String sql = "INSERT INTO `documentacion` (`id`,`acta_nacimiento`, `certificado_bachillerato`, `curp`, `ine`, `ine_tutor`, `certificado_medico`, `comprobante`, `fotografia`, `constancia`) VALUES(?,?,?,?,?,?,?,?,?,?);"; - stm = (PreparedStatement) conn.prepareStatement(sql); - stm.setInt(1, documentacion.getId()); - - } catch (Exception e) { - System.out.println(e); - } finally { - cerrarConexiones(stm, conn); - } - return msj; - - } - - private static void cerrarConexiones(PreparedStatement stm, Connection conn) { - if (stm != null) { - try { - stm.close(); - } catch (Exception e) { - System.out.println(e); - } - stm = null; - } - try { - conn.close(); - cn.cerrarConexion(); - } catch (Exception e) { - System.out.println(e); - } - } - - public static boolean eliminarDocumentacion(int idDocumentacion) { - return false; - } - - public static boolean agregarDocumento(Documento doc) { - PreparedStatement stm = null; - Connection conn = null; - boolean msj = false; - - conn = cn.conectar(); - String sql = "INSERT INTO documento (titulo, archivo, idUsuario, valido) VALUES (?, ?, ?, ?)"; - try { - stm = conn.prepareStatement(sql); - stm.setString(1, doc.getTitulo()); - stm.setBlob(2, doc.getArchivo()); - stm.setInt(3, doc.getIdUsuario()); - stm.setInt(4, doc.getValido()); - - if (stm.executeUpdate() > 0) { - msj = true; - } - } catch (SQLException e) { - e.printStackTrace(); - // Manejar cualquier excepción y retornar falso en caso de error - } - return msj; - } -} diff --git a/backend/src/main/java/mx/uv/Model/Carrera.java b/backend/src/main/java/mx/uv/Model/Carrera.java deleted file mode 100644 index 0d2d0aa..0000000 --- a/backend/src/main/java/mx/uv/Model/Carrera.java +++ /dev/null @@ -1,94 +0,0 @@ -package mx.uv.Model; - -public class Carrera { - private int id; - private String nombre; - private String area; - private String campus; - private String descripcion; - private String mision; - private String vision; - private String objetivo; - - public Carrera(int id, String nombre, String area, String campus, String descripcion, String mision, String vision, - String objetivo) { - this.id = id; - this.nombre = nombre; - this.area = area; - this.campus = campus; - this.descripcion = descripcion; - this.mision = mision; - this.vision = vision; - this.objetivo = objetivo; - } - - public Carrera(int id, String nombre, String area) { - this.id = id; - this.nombre = nombre; - this.area = area; - } - - public void setCampus(String campus) { - this.campus = campus; - } - - public void setDescripcion(String descripcion) { - this.descripcion = descripcion; - } - - public void setMision(String mision) { - this.mision = mision; - } - - public void setVision(String vision) { - this.vision = vision; - } - - public void setObjetivo(String objetivo) { - this.objetivo = objetivo; - } - - public String getCampus() { - return campus; - } - - public String getDescripcion() { - return descripcion; - } - - public String getMision() { - return mision; - } - - public String getVision() { - return vision; - } - - public String getObjetivo() { - return objetivo; - } - - public int getId() { - return id; - } - - public String getNombre() { - return nombre; - } - - public String getArea() { - return area; - } - - public void setId(int id) { - this.id = id; - } - - public void setNombre(String nombre) { - this.nombre = nombre; - } - - public void setArea(String area) { - this.area = area; - } -} diff --git a/backend/src/main/java/mx/uv/Model/Documento.java b/backend/src/main/java/mx/uv/Model/Documento.java deleted file mode 100644 index 8fe8a85..0000000 --- a/backend/src/main/java/mx/uv/Model/Documento.java +++ /dev/null @@ -1,59 +0,0 @@ -package mx.uv.Model; - -import java.io.InputStream; - - -public class Documento { - private int id; - private String titulo; - private InputStream archivo; - private int idUsuario; - private int valido; - - public Documento(String titulo, InputStream archivo, int idUsuario, int valido) { - this.titulo = titulo; - this.archivo = archivo; - this.idUsuario = idUsuario; - this.valido = valido; - } - - public int getId() { - return id; - } - - public String getTitulo() { - return titulo; - } - - public InputStream getArchivo() { - return archivo; - } - - public int getIdUsuario() { - return idUsuario; - } - - public int getValido() { - return valido; - } - - public void setId(int id) { - this.id = id; - } - - public void setTitulo(String titulo) { - this.titulo = titulo; - } - - public void setArchivo(InputStream archivo) { - this.archivo = archivo; - } - - public void setIdUsuario(int idUsuario) { - this.idUsuario = idUsuario; - } - - public void setValido(int valido) { - this.valido = valido; - } -} diff --git a/backend/src/main/java/mx/uv/Model/Incripcion.java b/backend/src/main/java/mx/uv/Model/Incripcion.java deleted file mode 100644 index 7d5dacb..0000000 --- a/backend/src/main/java/mx/uv/Model/Incripcion.java +++ /dev/null @@ -1,38 +0,0 @@ -package mx.uv.Model; - -public class Incripcion { - private int id; - private int idUusario; - private int idDocumento; - - public Incripcion(int id, int idUusario, int idDocumento) { - this.id = id; - this.idUusario = idUusario; - this.idDocumento = idDocumento; - } - - public void setId(int id) { - this.id = id; - } - - public void setIdUusario(int idUusario) { - this.idUusario = idUusario; - } - - public void setIdDocumento(int idDocumento) { - this.idDocumento = idDocumento; - } - - public int getId() { - return id; - } - - public int getIdUusario() { - return idUusario; - } - - public int getIdDocumento() { - return idDocumento; - } - -} diff --git a/backend/src/main/java/mx/uv/Model/Mensaje.java b/backend/src/main/java/mx/uv/Model/Mensaje.java deleted file mode 100644 index 7c3c541..0000000 --- a/backend/src/main/java/mx/uv/Model/Mensaje.java +++ /dev/null @@ -1,31 +0,0 @@ -package mx.uv.Model; - -public class Mensaje { - private boolean verificacion; - private Usuario usuario; - - public Mensaje() { - } - - public Mensaje(boolean verificacion, Usuario usuario) { - this.verificacion = verificacion; - this.usuario = usuario; - } - - public boolean isVerificacion() { - return verificacion; - } - - public Usuario getUsuario() { - return usuario; - } - - public void setVerificacion(boolean verificacion) { - this.verificacion = verificacion; - } - - public void setUsuario(Usuario usuario) { - this.usuario = usuario; - } - -} diff --git a/backend/src/main/java/mx/uv/Model/Registro.java b/backend/src/main/java/mx/uv/Model/Registro.java deleted file mode 100644 index afdbd2e..0000000 --- a/backend/src/main/java/mx/uv/Model/Registro.java +++ /dev/null @@ -1,38 +0,0 @@ -package mx.uv.Model; - -public class Registro { - private int id; - private String matricula; - private String descripcion; - - public Registro(int id, String matricula, String descripcion) { - this.id = id; - this.matricula = matricula; - this.descripcion = descripcion; - } - - public void setId(int id) { - this.id = id; - } - - public void setMatricula(String matricula) { - this.matricula = matricula; - } - - public void setDescripcion(String descripcion) { - this.descripcion = descripcion; - } - - public int getId() { - return id; - } - - public String getMatricula() { - return matricula; - } - - public String getDescripcion() { - return descripcion; - } - -} diff --git a/backend/src/main/java/mx/uv/Model/Tutor.java b/backend/src/main/java/mx/uv/Model/Tutor.java deleted file mode 100644 index 2276127..0000000 --- a/backend/src/main/java/mx/uv/Model/Tutor.java +++ /dev/null @@ -1,58 +0,0 @@ -package mx.uv.Model; - -public class Tutor { - private int id; - private String nombre; - private String apellido; - private int numeroDeTelefono; - private int idUsuario; - - public Tutor(int id, String nombre, String apellido, int numeroDeTelefono, int idUsuario) { - this.id = id; - this.nombre = nombre; - this.apellido = apellido; - this.numeroDeTelefono = numeroDeTelefono; - this.idUsuario = idUsuario; - } - - public int getId() { - return id; - } - - public String getNombre() { - return nombre; - } - - public String getApellido() { - return apellido; - } - - public int getNumeroDeTelefono() { - return numeroDeTelefono; - } - - public int getIdUsuario() { - return idUsuario; - } - - public void setId(int id) { - this.id = id; - } - - public void setNombre(String nombre) { - this.nombre = nombre; - } - - public void setApellido(String apellido) { - this.apellido = apellido; - } - - public void setNumeroDeTelefono(int numeroDeTelefono) { - this.numeroDeTelefono = numeroDeTelefono; - } - - public void setIdUsuario(int idUsuario) { - this.idUsuario = idUsuario; - } - -} diff --git a/backend/src/main/java/mx/uv/Model/Usuario.java b/backend/src/main/java/mx/uv/Model/Usuario.java deleted file mode 100644 index 845c1ca..0000000 --- a/backend/src/main/java/mx/uv/Model/Usuario.java +++ /dev/null @@ -1,187 +0,0 @@ -package mx.uv.Model; - -import java.security.SecureRandom; - -public class Usuario { - private int id; - private String nombre; - private String apellido; - private String matricula; - private String contrasena; - private String correo; - private String nacionalidad; - private String tipoSangre; - private String fecha_nacimiento; - private String curp; - private String rol; - private int idCarrera; - private int inscrito; - - public Usuario(int id, String nombre, String apellido, String matricula, String contrasena, String correo, - String nacionalidad, String tipoSangre, String fecha_nacimiento, String curp, String rol, int idCarrera, - int inscrito) { - this.id = id; - this.nombre = nombre; - this.apellido = apellido; - this.matricula = matricula; - this.contrasena = contrasena; - this.correo = correo; - this.nacionalidad = nacionalidad; - this.tipoSangre = tipoSangre; - this.fecha_nacimiento = fecha_nacimiento; - this.curp = curp; - this.rol = rol; - this.idCarrera = idCarrera; - this.inscrito = inscrito; - } - - public Usuario(int id, String nombre, String apellido, String matricula) { - this.id = id; - this.nombre = nombre; - this.apellido = apellido; - this.matricula = matricula; - } - - public Usuario(int id, String nombre, String apellido, String matricula, String rol) { - this.id = id; - this.nombre = nombre; - this.apellido = apellido; - this.matricula = matricula; - this.rol = rol; - } - - public Usuario(int id, String nombre, String apellido, String matricula, String correo, String nacionalidad, - String tipoSangre, String fecha_nacimiento, String curp, int idCarrera, int inscrito) { - this.id = id; - this.nombre = nombre; - this.apellido = apellido; - this.matricula = matricula; - this.correo = correo; - this.nacionalidad = nacionalidad; - this.tipoSangre = tipoSangre; - this.fecha_nacimiento = fecha_nacimiento; - this.curp = curp; - this.idCarrera = idCarrera; - this.inscrito = inscrito; - } - - public Usuario(String matricula, String contrasena) { - this.matricula = matricula; - this.contrasena = contrasena; - } - - public int getId() { - return id; - } - - public String getNombre() { - return nombre; - } - - public String getApellido() { - return apellido; - } - - public String getMatricula() { - return matricula; - } - - public String getContrasena() { - return contrasena; - } - - public String getCorreo() { - return correo; - } - - public String getNacionalidad() { - return nacionalidad; - } - - public String getTipoSangre() { - return tipoSangre; - } - - public String getFecha_nacimiento() { - return fecha_nacimiento; - } - - public String getCurp() { - return curp; - } - - public String getRol() { - return rol; - } - - public int getIdCarrera() { - return idCarrera; - } - - public int getInscrito() { - return inscrito; - } - - public void setId(int id) { - this.id = id; - } - - public void setNombre(String nombre) { - this.nombre = nombre; - } - - public void setApellido(String apellido) { - this.apellido = apellido; - } - - public void setMatricula(String matricula) { - this.matricula = matricula; - } - - public void setContrasena(String contrasena) { - this.contrasena = contrasena; - } - - public void setCorreo(String correo) { - this.correo = correo; - } - - public void setNacionalidad(String nacionalidad) { - this.nacionalidad = nacionalidad; - } - - public void setTipoSangre(String tipoSangre) { - this.tipoSangre = tipoSangre; - } - - public void setFecha_nacimiento(String fecha_nacimiento) { - this.fecha_nacimiento = fecha_nacimiento; - } - - public void setCurp(String curp) { - this.curp = curp; - } - - public void setRol(String rol) { - this.rol = rol; - } - - public void setIdCarrera(int idCarrera) { - this.idCarrera = idCarrera; - } - - public void setInscrito(int inscrito) { - this.inscrito = inscrito; - } - - public String crearToken() { - String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - SecureRandom random = new SecureRandom(); - StringBuilder token = new StringBuilder(15); - for (int i = 0; i < 15; i++) { - int index = random.nextInt(CHARACTERS.length()); - token.append(CHARACTERS.charAt(index)); - } - return token.toString(); - } -} diff --git a/backend/src/test/java/mx/uv/AppTest.java b/backend/src/test/java/mx/uv/AppTest.java deleted file mode 100644 index 6284b29..0000000 --- a/backend/src/test/java/mx/uv/AppTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package mx.uv; - -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -/** - * Unit test for simple App. - */ -public class AppTest -{ - /** - * Rigorous Test :-) - */ - @Test - public void shouldAnswerWithTrue() - { - assertTrue( true ); - } -} diff --git a/frontend/src/Views/Inscripcion.jsx b/frontend/src/Views/Inscripcion.jsx index 5a826a5..24b28b7 100644 --- a/frontend/src/Views/Inscripcion.jsx +++ b/frontend/src/Views/Inscripcion.jsx @@ -37,6 +37,13 @@ const Inscripcion = () => { idUsuario: 0, valido: null }); + const [foto, setFoto] = useState({ + id: 0, + titulo: "", + archivo: null, + idUsuario: 0, + valido: null + }); useEffect(() => { const fetchData = async () => { @@ -112,7 +119,7 @@ const Inscripcion = () => { })); }; - const handleFileChange = (e) => { + const handleFileActaChange = (e) => { const file = e.target.files[0]; const fileName = `${usuario.matricula}_ActaN.pdf`; const modifiedFile = new File([file], fileName, { type: file.type }); @@ -123,6 +130,17 @@ const Inscripcion = () => { })); }; + const handleFileFotoChange = (e) => { + const file = e.target.files[0]; + const fileName = `${usuario.matricula}_Foto.jpg`; + const modifiedFile = new File([file], fileName, { type: file.type }); + + setFoto((prevFoto) => ({ + ...prevFoto, + archivo: modifiedFile + })); +}; + const handleCarreraChange = (e) => { const selectedCarreraId = e.target.value; setCarreraSeleccionada(selectedCarreraId); @@ -159,12 +177,21 @@ const Inscripcion = () => { formData.append('titulo', `${usuario.matricula}_ActaN`); formData.append('archivo', actaN.archivo); formData.append('idUsuario', usuario.id); - const reqs = await axios.post('/agregarDocumentoAN', formData,{ + const reqs = await axios.post('/agregarDocumento', formData,{ headers: { 'Content-Type': 'multipart/form-data', }, }); - if (reqs){ + const formDataFoto = new FormData(); + formDataFoto.append('titulo', `${usuario.matricula}_Foto`); + formDataFoto.append('archivo', foto.archivo); + formDataFoto.append('idUsuario', usuario.id); + const requ = await axios.post('/agregarDocumento', formDataFoto,{ + headers: { + 'Content-Type': 'multipart/form-data', + }, + }); + if (reqs && requ){ window.location.reload(); } } catch (error) { @@ -300,7 +327,17 @@ const Inscripcion = () => { accept=".pdf" placeholder="Acta de Nacimiento" required - onChange={handleFileChange} + onChange={handleFileActaChange} + /> +
Fotografia
+ diff --git a/frontend/src/Views/Registro.jsx b/frontend/src/Views/Registro.jsx index eedd0b9..9756d14 100644 --- a/frontend/src/Views/Registro.jsx +++ b/frontend/src/Views/Registro.jsx @@ -34,7 +34,14 @@ const Registro = () => { if (res && res.verificacion) { limpiar(); - setMensaje(`Alumno Registrado Correctamente. Contraseña: ${res.contrasena}, Matrícula: ${res.matricula}`); + setMensaje(`Alumno Registrado Correctamente. Contraseña: ${res.contrasena} Matrícula: ${res.matricula} Se envio un correo elctronico.`); + try { + const data = {correo:alumno.correo, matricula: res.matricula, contrasena:res.contrasena } + const enviarEmail = await axios.post('/email',data) + + } catch (error) { + console.log(error); + } } else { setError('Error: No se pudo Registrar'); } diff --git a/frontend/src/Views/ValidacionAdm.jsx b/frontend/src/Views/ValidacionAdm.jsx index 73749f7..a869e98 100644 --- a/frontend/src/Views/ValidacionAdm.jsx +++ b/frontend/src/Views/ValidacionAdm.jsx @@ -6,6 +6,7 @@ const ValidacionAdm = () => { const [alumno, setAlumno] = useState({}); const [matriculas, setMatriculas] = useState([]); const [currentMatriculaIndex, setCurrentMatriculaIndex] = useState(0); + const [boton, setBoton]= useState(true); useEffect(() => { const fetchData = async () => { @@ -51,99 +52,141 @@ const ValidacionAdm = () => { fetchAlumnoData(matriculas[newIndex].id); } }; + const aceptarDocumento = ()=>{ + alert("Documento aceptado"); + setBoton(true); + } + const rechazarDocumento = ()=>{ + alert("Documento Rechazado"); + setBoton(false); + } + const iscribirAlumno = async ()=>{ + const datos = {id: alumno.id, idCarrera: alumno.idCarrera} + try { + const res = await axios.post('http://localhost:3000/iscribirAlumno',datos); + if (res.data.message) { + alert("Alumno iscrito con exito") + window.location.reload(); + }else{ + alert("Error al iscribir el alumno intentelo mas tarde") + } + } catch (error) { + console.log(error); + } + } + const regresarDatos = async()=>{ + const datos = {id: alumno.id} + try { + const res = await axios.post('http://localhost:3000/regresarAlumno',datos); + if (res.data.message) { + alert("Alumno rechazado") + window.location.reload(); + }else{ + alert("Error al rechazar el alumno intentelo mas tarde") + } + } catch (error) { + console.log(error); + } + } if (loading) { return
Loading...
; } return ( -
-

Validación Administrativa

+
+ {matriculas.length > 0 ? ( +
+

Validación Administrativa

-
-
- -
- -
- -
-
+
+
+ +
+ +
+ +
+
-
-
-

Datos del Alumno

-
-
-

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}

+
+
+

Datos del Alumno

+
+
+

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}

+
+
-
-
-
-
-

Datos del Tutor

-
-
-

Nombre: {alumno.tutorNombre}

-

Apellido: {alumno.tutorApellido}

-

Teléfono: {alumno.numeroDeTelefono}

+
+
+

Datos del Tutor

+
+
+

Nombre: {alumno.tutorNombre}

+

Apellido: {alumno.tutorApellido}

+

Teléfono: {alumno.numeroDeTelefono}

+
+
-
-
-
-
-

Documentos del Alumno

-
-

Acta de Nacimiento:

- -
- - +
+
+

Documentos del Alumno

+
+

Acta de Nacimiento:

+ +
+ + +
+
+
+

Fotografía:

+ +
+ + +
+
-
-
-

Constancia de estudios:

- -
- - -
-
-
-

Fotografía:

- -
- - +
+ +
-
+ ) : ( +
+
+ No hay alumnos inscritos aún. +
+
+ )}
); }; -export default ValidacionAdm; +export default ValidacionAdm; \ No newline at end of file