validaciones, login y envio de correo
This commit is contained in:
parent
f50deaf29d
commit
0d581cb07f
|
@ -5,7 +5,7 @@ CREATE USER 'UserRemoto' @'localhost' IDENTIFIED BY 'password123';
|
||||||
GRANT ALL PRIVILEGES ON universidad.* TO 'UserRemoto'@'LOCALHOST';
|
GRANT ALL PRIVILEGES ON universidad.* TO 'UserRemoto'@'LOCALHOST';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
drop database universidad;
|
||||||
use universidad;
|
use universidad;
|
||||||
|
|
||||||
create table usuario(
|
create table usuario(
|
||||||
|
@ -21,13 +21,18 @@ create table usuario(
|
||||||
curp varchar(18),
|
curp varchar(18),
|
||||||
rol varchar(30) not null,
|
rol varchar(30) not null,
|
||||||
idCarrera integer references carrera,
|
idCarrera integer references carrera,
|
||||||
inscrito BIT
|
inscrito int
|
||||||
);
|
);
|
||||||
|
|
||||||
create table carrera(
|
create table carrera(
|
||||||
id integer auto_increment primary key,
|
id integer auto_increment primary key,
|
||||||
nombre varchar(40),
|
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(
|
create table tutor(
|
||||||
|
@ -37,20 +42,20 @@ create table tutor(
|
||||||
numeroDeTelefono double,
|
numeroDeTelefono double,
|
||||||
idUsuario integer references usuario
|
idUsuario integer references usuario
|
||||||
);
|
);
|
||||||
ALTER TABLE usuario
|
|
||||||
MODIFY COLUMN inscrito int;
|
|
||||||
|
|
||||||
create table documento(
|
create table documento(
|
||||||
id integer auto_increment primary key,
|
id integer auto_increment primary key,
|
||||||
titulo varchar(40),
|
titulo varchar(40),
|
||||||
archivo blob,
|
archivo longblob,
|
||||||
idUsuario integer references usuario,
|
idUsuario integer references usuario,
|
||||||
valido BIT
|
valido BIT
|
||||||
);
|
);
|
||||||
|
|
||||||
|
drop table inscripcion;
|
||||||
create table inscripcion(
|
create table inscripcion(
|
||||||
id integer auto_increment primary key,
|
id integer auto_increment primary key,
|
||||||
idUusario integer references usuario,
|
idUsuario integer references usuario,
|
||||||
idDocumento integer references documento
|
idCarrera integer references carrera
|
||||||
);
|
);
|
||||||
|
|
||||||
create table registro(
|
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
|
'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
|
INSERT INTO carrera (nombre, area) VALUES
|
||||||
('Ingeniería de Sistemas', 'Tecnología'),
|
('Ingeniería de Sistemas', 'Tecnología'),
|
||||||
('Medicina', 'Salud'),
|
('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.'
|
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;
|
WHERE id = 6;
|
||||||
|
|
||||||
UPDATE `tutor` SET `nombre` = ?, `apellido` = ?, `numeroDeTelefono` = ? WHERE `idUsuario` = ?;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,4 +1,5 @@
|
||||||
import mysql from 'mysql2/promise'; // Importa la versión de la biblioteca que soporta promesas
|
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 {
|
class Conexion {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -14,10 +15,10 @@ class Conexion {
|
||||||
async conectar() {
|
async conectar() {
|
||||||
try {
|
try {
|
||||||
this.conexion = await mysql.createConnection(this.configuracion);
|
this.conexion = await mysql.createConnection(this.configuracion);
|
||||||
console.log('Conexión exitosa a MySQL');
|
logger.info('Conexión exitosa a MySQL');
|
||||||
return this.conexion;
|
return this.conexion;
|
||||||
} catch (error) {
|
} 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;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,10 +27,10 @@ class Conexion {
|
||||||
if (this.conexion) {
|
if (this.conexion) {
|
||||||
this.conexion.end((err) => {
|
this.conexion.end((err) => {
|
||||||
if (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;
|
return;
|
||||||
}
|
}
|
||||||
console.log('Se desconectó de la base de datos');
|
logger.info('Se desconectó de la base de datos');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 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 Mensaje from '../Model/Mensaje.js'; // Asegúrate de tener la ruta correcta al archivo de Mensaje
|
||||||
import DAORegistro from './DAORegistro.js';
|
import DAORegistro from './DAORegistro.js';
|
||||||
|
import logger from '../utils/logger.js'; // Importa el logger
|
||||||
|
|
||||||
class DAO {
|
class DAO {
|
||||||
|
|
||||||
|
@ -9,14 +10,14 @@ class DAO {
|
||||||
const conexion = new Conexion();
|
const conexion = new Conexion();
|
||||||
const conexionEstablecida = await conexion.conectar();
|
const conexionEstablecida = await conexion.conectar();
|
||||||
try {
|
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 [rows] = await conexionEstablecida.query(sql);
|
||||||
const resultado = rows.map(row => {
|
const resultado = rows.map(row => {
|
||||||
return { id: row.id, matricula: row.matricula };
|
return { id: row.id, matricula: row.matricula };
|
||||||
});
|
});
|
||||||
return resultado;
|
return resultado;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error); s
|
logger.error(`Error en DAO.matriculas: ${error.message}`);
|
||||||
return [];
|
return [];
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -31,7 +32,7 @@ class DAO {
|
||||||
const [rows] = await conexionEstablecida.query(sql, [alumno.getMatricula(), alumno.getContrasena()]);
|
const [rows] = await conexionEstablecida.query(sql, [alumno.getMatricula(), alumno.getContrasena()]);
|
||||||
return rows.length > 0;
|
return rows.length > 0;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.validarAlumno: ${error.message}`);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -52,9 +53,14 @@ class DAO {
|
||||||
usuario.nombre, usuario.apellido, usuario.nacionalidad,
|
usuario.nombre, usuario.apellido, usuario.nacionalidad,
|
||||||
usuario.matricula, usuario.contrasena, usuario.correo, usuario.rol
|
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) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.agregarAlumno: ${error.message}`);
|
||||||
return new Mensaje(false, null);
|
return new Mensaje(false, null);
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -71,9 +77,13 @@ class DAO {
|
||||||
usuario.nacionalidad, usuario.tipoSangre, usuario.fecha_nacimiento,
|
usuario.nacionalidad, usuario.tipoSangre, usuario.fecha_nacimiento,
|
||||||
usuario.curp, usuario.idCarrera, usuario.id
|
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) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.editarAlumno: ${error.message}`);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -99,7 +109,7 @@ class DAO {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.alumnoIniciado: ${error.message}`);
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -114,7 +124,7 @@ class DAO {
|
||||||
const [rows] = await conexionEstablecida.query(sql);
|
const [rows] = await conexionEstablecida.query(sql);
|
||||||
return rows[0].ultimo_id || -1;
|
return rows[0].ultimo_id || -1;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.obtenerUltimoID: ${error.message}`);
|
||||||
return -1;
|
return -1;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -152,24 +162,31 @@ class DAO {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.traeUsuario: ${error.message}`);
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
}
|
}
|
||||||
return usuario;
|
return usuario;
|
||||||
}
|
}
|
||||||
static async editarAlumnoInscrito(data) {
|
|
||||||
|
static async editarAlumnoInscrito(data, id) {
|
||||||
const conexion = new Conexion();
|
const conexion = new Conexion();
|
||||||
const conexionEstablecida = await conexion.conectar();
|
const conexionEstablecida = await conexion.conectar();
|
||||||
try {
|
try {
|
||||||
const sql = `UPDATE usuario SET inscrito = ? WHERE id = ?`;
|
const sql = `UPDATE usuario SET inscrito = ? WHERE id = ?`;
|
||||||
const [result] = await conexionEstablecida.query(sql, [
|
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) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en DAO.editarAlumnoInscrito: ${error.message}`);
|
||||||
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
}
|
}
|
||||||
|
@ -180,7 +197,7 @@ class DAO {
|
||||||
const conexionEstablecida = await conexion.conectar();
|
const conexionEstablecida = await conexion.conectar();
|
||||||
let usuario = null;
|
let usuario = null;
|
||||||
try {
|
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]);
|
const [rows] = await conexionEstablecida.query(sql, [id]);
|
||||||
if (rows.length > 0) {
|
if (rows.length > 0) {
|
||||||
const row = rows[0];
|
const row = rows[0];
|
||||||
|
@ -203,16 +220,61 @@ class DAO {
|
||||||
tutorNombre: row.tutorNombre,
|
tutorNombre: row.tutorNombre,
|
||||||
tutorApellido: row.tutorApellido,
|
tutorApellido: row.tutorApellido,
|
||||||
numeroDeTelefono: row.numeroDeTelefono,
|
numeroDeTelefono: row.numeroDeTelefono,
|
||||||
carreraNombre: row.carreraNombre
|
carreraNombre: row.carreraNombre,
|
||||||
}
|
idCarrera: row.idCarrera
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAO.traeTodosLosDatosUsuario: ${error.message}`);
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
}
|
}
|
||||||
return usuario;
|
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;
|
|
@ -1,5 +1,7 @@
|
||||||
import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión
|
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 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 {
|
class DAOCarrera {
|
||||||
static async dameCarreras() {
|
static async dameCarreras() {
|
||||||
|
@ -9,9 +11,11 @@ class DAOCarrera {
|
||||||
const sql = "SELECT * FROM carrera";
|
const sql = "SELECT * FROM carrera";
|
||||||
const [rows] = await conexionEstablecida.query(sql);
|
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));
|
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;
|
return resultado;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error al obtener carreras: ${error.message}`);
|
||||||
return [];
|
return [];
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
|
|
@ -1,17 +1,25 @@
|
||||||
import Conexion from './Conexion.js';
|
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 {
|
class DAODocumento {
|
||||||
static async agregarDocumento(req, file) {
|
static async agregarDocumento(req, file) {
|
||||||
const conexion = new Conexion();
|
const conexion = new Conexion();
|
||||||
const conexionEstablecida = await conexion.conectar()
|
const conexionEstablecida = await conexion.conectar();
|
||||||
try {
|
try {
|
||||||
const sql = "INSERT INTO `documento`(`titulo`,`archivo`,`idUsuario`,`valido`) VALUES(?,?,?,?);";
|
const sql = "INSERT INTO `documento`(`titulo`,`archivo`,`idUsuario`,`valido`) VALUES(?,?,?,?);";
|
||||||
const [result] = await conexionEstablecida.query(sql, [
|
const [result] = await conexionEstablecida.query(sql, [
|
||||||
req.titulo, file, req.idUsuario, 0
|
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;
|
return result.affectedRows > 0;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
logger.error(`Error al agregar documento: ${error.message}`);
|
||||||
throw error;
|
throw error;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión
|
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 {
|
class DAORegistro {
|
||||||
static async registrar(usuario, descripcion, day) {
|
static async registrar(usuario, descripcion, day) {
|
||||||
|
@ -6,10 +7,10 @@ class DAORegistro {
|
||||||
const conexionEstablecida = await conexion.conectar();
|
const conexionEstablecida = await conexion.conectar();
|
||||||
try {
|
try {
|
||||||
const sql = "INSERT INTO registro (matricula, descripcion) VALUES (?, ?)";
|
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;
|
return stm.affectedRows > 0;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error en DAORegistro.registrar: ${error.message}`);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión
|
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 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 {
|
class DAOTutor {
|
||||||
|
|
||||||
|
@ -7,11 +9,17 @@ class DAOTutor {
|
||||||
const conexion = new Conexion();
|
const conexion = new Conexion();
|
||||||
const conexionEstablecida = await conexion.conectar();
|
const conexionEstablecida = await conexion.conectar();
|
||||||
try {
|
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]);
|
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;
|
return result.affectedRows > 0;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error al agregar tutor: ${error.message}`);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -24,9 +32,15 @@ class DAOTutor {
|
||||||
try {
|
try {
|
||||||
const sql = `UPDATE tutor SET nombre = ?, apellido = ?, numeroDeTelefono = ? WHERE idUsuario = ?`;
|
const sql = `UPDATE tutor SET nombre = ?, apellido = ?, numeroDeTelefono = ? WHERE idUsuario = ?`;
|
||||||
const [result] = await conexionEstablecida.query(sql, [tutor.nombre, tutor.apellido, tutor.numeroDeTelefono, tutor.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;
|
return result.affectedRows > 0;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error al editar tutor: ${error.message}`);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
@ -46,7 +60,7 @@ class DAOTutor {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
logger.error(`Error al traer tutor: ${error.message}`);
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
conexion.cerrarConexion();
|
conexion.cerrarConexion();
|
||||||
|
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
|
@ -10,12 +10,14 @@
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
|
"caller": "^1.1.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"multer": "^1.4.5-lts.1",
|
"multer": "^1.4.5-lts.1",
|
||||||
"mysql": "^2.18.1",
|
"mysql": "^2.18.1",
|
||||||
"mysql2": "^3.9.7",
|
"mysql2": "^3.9.7",
|
||||||
|
"nodemailer": "^6.9.13",
|
||||||
"winston": "^3.13.0"
|
"winston": "^3.13.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -203,6 +205,11 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"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": {
|
"node_modules/chokidar": {
|
||||||
"version": "3.6.0",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
|
||||||
|
@ -1027,9 +1034,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mysql2": {
|
"node_modules/mysql2": {
|
||||||
"version": "3.9.7",
|
"version": "3.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz",
|
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz",
|
||||||
"integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==",
|
"integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"denque": "^2.1.0",
|
"denque": "^2.1.0",
|
||||||
"generate-function": "^2.3.1",
|
"generate-function": "^2.3.1",
|
||||||
|
@ -1082,6 +1089,14 @@
|
||||||
"node": ">= 0.6"
|
"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": {
|
"node_modules/nodemon": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz",
|
||||||
|
|
|
@ -12,12 +12,14 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
|
"caller": "^1.1.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"multer": "^1.4.5-lts.1",
|
"multer": "^1.4.5-lts.1",
|
||||||
"mysql": "^2.18.1",
|
"mysql": "^2.18.1",
|
||||||
"mysql2": "^3.9.7",
|
"mysql2": "^3.9.7",
|
||||||
|
"nodemailer": "^6.9.13",
|
||||||
"winston": "^3.13.0"
|
"winston": "^3.13.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
import bodyParser from 'body-parser';
|
import bodyParser from 'body-parser';
|
||||||
import cors from 'cors';
|
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 DAOTutor from './Controller/DAOTutor.js';
|
||||||
import DAOCarreras from './Controller/DAOCarrera.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 multer from 'multer';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import DAODocumento from './Controller/DAODocumento.js';
|
import DAODocumento from './Controller/DAODocumento.js';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
import logger from './utils/logger.js';
|
||||||
|
import EmailCtrl from './utils/mailCtrl.js'
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const port = 3000;
|
const port = 3000;
|
||||||
|
@ -19,7 +21,7 @@ const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
const diskStorage = multer.diskStorage({
|
const diskStorage = multer.diskStorage({
|
||||||
destination: path.join(__dirname, '/ActasNacimiento'),
|
destination: path.join(__dirname, '/Documentos'),
|
||||||
filename: (req, file, cb) => {
|
filename: (req, file, cb) => {
|
||||||
cb(null, file.originalname);
|
cb(null, file.originalname);
|
||||||
}
|
}
|
||||||
|
@ -33,12 +35,12 @@ app.use(bodyParser.json());
|
||||||
|
|
||||||
// Configuración de CORS
|
// Configuración de CORS
|
||||||
app.use(cors({
|
app.use(cors({
|
||||||
origin: 'http://localhost:5173', // Especifica el origen permitido
|
origin: 'http://localhost:5173',
|
||||||
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
|
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
|
||||||
allowedHeaders: ['Origin', 'X-Requested-With', 'Content-Type', 'Accept'],
|
allowedHeaders: ['Origin', 'X-Requested-With', 'Content-Type', 'Accept'],
|
||||||
credentials: true
|
credentials: true
|
||||||
}));
|
}));
|
||||||
app.use(express.static(path.join(__dirname,'ActasNacimiento')))
|
app.use(express.static(path.join(__dirname, 'Documentos')));
|
||||||
|
|
||||||
// Rutas
|
// Rutas
|
||||||
app.get("/matriculas", async (req, res) => {
|
app.get("/matriculas", async (req, res) => {
|
||||||
|
@ -46,6 +48,7 @@ app.get("/matriculas", async (req, res) => {
|
||||||
const alumnos = await DAO.matriculas();
|
const alumnos = await DAO.matriculas();
|
||||||
res.json(alumnos);
|
res.json(alumnos);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /matriculas: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const msj = await DAO.agregarAlumno(usuario);
|
||||||
res.json(msj);
|
res.json(msj);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /agregarAlumno: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const verificado = await DAO.editarAlumno(usuario);
|
||||||
res.json({ Editado: verificado });
|
res.json({ Editado: verificado });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /editarUsuario: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const verificado = await DAOTutor.editarTutor(tutor);
|
||||||
res.json({ Editado: verificado });
|
res.json({ Editado: verificado });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /editarTutor: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const agregado = await DAOTutor.agregarTutor(tutor);
|
||||||
res.json({ msj: agregado });
|
res.json({ msj: agregado });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /agregarTutor: ${error.message}`);
|
||||||
res.status(500).json({ error: 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" });
|
res.status(401).json({ error: "Credenciales inválidas" });
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /alumnoIniciado: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const verificado = await DAO.validarAlumno(usuario);
|
||||||
res.json({ existe: verificado });
|
res.json({ existe: verificado });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /usuarioValido: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const datos = await DAO.traeUsuario(usuario.id);
|
||||||
res.json(datos);
|
res.json(datos);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /traerDatosAlumno: ${error.message}`);
|
||||||
res.status(500).json({ error: error.message });
|
res.status(500).json({ error: error.message });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -139,6 +149,7 @@ app.get("/carreras", async (req, res) => {
|
||||||
const carreras = await DAOCarreras.dameCarreras();
|
const carreras = await DAOCarreras.dameCarreras();
|
||||||
res.json(carreras);
|
res.json(carreras);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /carreras: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
const datos = await DAOTutor.traerTutor(usuario.id);
|
||||||
res.json(datos);
|
res.json(datos);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /traerDatosTutor: ${error.message}`);
|
||||||
res.status(500).json({ error: error.message });
|
res.status(500).json({ error: error.message });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/agregarDocumentoAN", fileUpload, async (req, res) => {
|
app.post("/agregarDocumento", fileUpload, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
|
if (!req.file) {
|
||||||
|
return res.status(400).json({ error: "No se ha cargado ningún archivo" });
|
||||||
|
}
|
||||||
const data = req.body;
|
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);
|
const guardado = await DAODocumento.agregarDocumento(data, file);
|
||||||
|
|
||||||
if (guardado) {
|
if (guardado) {
|
||||||
const cambiar = await DAO.editarAlumnoInscrito(data);
|
const cambiar = await DAO.editarAlumnoInscrito(data, 1);
|
||||||
if (cambiar) {
|
if (cambiar) {
|
||||||
res.json({ message: true });
|
res.json({ message: true });
|
||||||
} else {
|
} else {
|
||||||
|
@ -170,19 +187,19 @@ app.post("/agregarDocumentoAN", fileUpload, async (req, res) => {
|
||||||
res.json({ message: false });
|
res.json({ message: false });
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /agregarDocumento: ${error.message}`);
|
||||||
res.status(500).json({ error: error.message });
|
res.status(500).json({ error: error.message });
|
||||||
|
logger.error(error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Manejo de errores
|
|
||||||
app.use((err, req, res, next) => {
|
app.use((err, req, res, next) => {
|
||||||
console.error(err.stack);
|
logger.error(err.stack);
|
||||||
res.status(500).send('Something broke!');
|
res.status(500).send('Something broke!');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Iniciar el servidor
|
|
||||||
app.listen(port, () => {
|
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) => {
|
app.post("/traerTodosDatosAlumno", async (req, res) => {
|
||||||
|
@ -191,6 +208,39 @@ app.post("/traerTodosDatosAlumno", async (req, res) => {
|
||||||
const datos = await DAO.traeTodosLosDatosUsuario(usuario.id);
|
const datos = await DAO.traeTodosLosDatosUsuario(usuario.id);
|
||||||
res.json(datos);
|
res.json(datos);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
logger.error(`Error en /traerTodosDatosAlumno: ${error.message}`);
|
||||||
res.status(500).json({ error: 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);
|
||||||
|
|
|
@ -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;
|
|
@ -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;
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"java.configuration.updateBuildConfiguration": "interactive"
|
|
||||||
}
|
|
|
@ -1,90 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
|
|
||||||
<groupId>mx.uv</groupId>
|
|
||||||
<artifactId>backend</artifactId>
|
|
||||||
<version>1.0-SNAPSHOT</version>
|
|
||||||
|
|
||||||
<name>backend</name>
|
|
||||||
<!-- FIXME change it to the project's website -->
|
|
||||||
<url>http://www.example.com</url>
|
|
||||||
|
|
||||||
<properties>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>junit</groupId>
|
|
||||||
<artifactId>junit</artifactId>
|
|
||||||
<version>4.11</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.sparkjava</groupId>
|
|
||||||
<artifactId>spark-core</artifactId>
|
|
||||||
<version>2.9.4</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.slf4j</groupId>
|
|
||||||
<artifactId>slf4j-simple</artifactId>
|
|
||||||
<version>1.7.21</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.code.gson</groupId>
|
|
||||||
<artifactId>gson</artifactId>
|
|
||||||
<version>2.10.1</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>mysql</groupId>
|
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
|
||||||
<version>8.0.30</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<version>2.3.2</version>
|
|
||||||
<configuration>
|
|
||||||
<source>1.8</source>
|
|
||||||
<target>1.8</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>single</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<configuration>
|
|
||||||
<descriptorRefs>
|
|
||||||
<!-- This tells Maven to include all dependencies -->
|
|
||||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
|
||||||
</descriptorRefs>
|
|
||||||
<archive>
|
|
||||||
<manifest>
|
|
||||||
<mainClass>mx.uv.App</mainClass>
|
|
||||||
</manifest>
|
|
||||||
</archive>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
|
@ -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<String, Usuario> 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()));
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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<Usuario> dameAlumnos() {
|
|
||||||
Statement stm = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
Connection conn = null;
|
|
||||||
List<Usuario> 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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<Tutor> dameTutores() {
|
|
||||||
Statement stm = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
Connection conn = null;
|
|
||||||
List<Tutor> 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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<Carrera> dameCarreras() {
|
|
||||||
Statement stm = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
Connection conn = null;
|
|
||||||
List<Carrera> 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;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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<Documento> dameDocumentacion() {
|
|
||||||
Statement stm = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
Connection conn = null;
|
|
||||||
List<Documento> 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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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 );
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -37,6 +37,13 @@ const Inscripcion = () => {
|
||||||
idUsuario: 0,
|
idUsuario: 0,
|
||||||
valido: null
|
valido: null
|
||||||
});
|
});
|
||||||
|
const [foto, setFoto] = useState({
|
||||||
|
id: 0,
|
||||||
|
titulo: "",
|
||||||
|
archivo: null,
|
||||||
|
idUsuario: 0,
|
||||||
|
valido: null
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
|
@ -112,7 +119,7 @@ const Inscripcion = () => {
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleFileChange = (e) => {
|
const handleFileActaChange = (e) => {
|
||||||
const file = e.target.files[0];
|
const file = e.target.files[0];
|
||||||
const fileName = `${usuario.matricula}_ActaN.pdf`;
|
const fileName = `${usuario.matricula}_ActaN.pdf`;
|
||||||
const modifiedFile = new File([file], fileName, { type: file.type });
|
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 handleCarreraChange = (e) => {
|
||||||
const selectedCarreraId = e.target.value;
|
const selectedCarreraId = e.target.value;
|
||||||
setCarreraSeleccionada(selectedCarreraId);
|
setCarreraSeleccionada(selectedCarreraId);
|
||||||
|
@ -159,12 +177,21 @@ const Inscripcion = () => {
|
||||||
formData.append('titulo', `${usuario.matricula}_ActaN`);
|
formData.append('titulo', `${usuario.matricula}_ActaN`);
|
||||||
formData.append('archivo', actaN.archivo);
|
formData.append('archivo', actaN.archivo);
|
||||||
formData.append('idUsuario', usuario.id);
|
formData.append('idUsuario', usuario.id);
|
||||||
const reqs = await axios.post('/agregarDocumentoAN', formData,{
|
const reqs = await axios.post('/agregarDocumento', formData,{
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'multipart/form-data',
|
'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();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -300,7 +327,17 @@ const Inscripcion = () => {
|
||||||
accept=".pdf"
|
accept=".pdf"
|
||||||
placeholder="Acta de Nacimiento"
|
placeholder="Acta de Nacimiento"
|
||||||
required
|
required
|
||||||
onChange={handleFileChange}
|
onChange={handleFileActaChange}
|
||||||
|
/>
|
||||||
|
<h6>Fotografia</h6>
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
name="archivo"
|
||||||
|
className="form-control mb-3"
|
||||||
|
accept=".jpg"
|
||||||
|
placeholder="Fotografia"
|
||||||
|
required
|
||||||
|
onChange={handleFileFotoChange}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" className="btn btn-primary">Enviar Inscripción</button>
|
<button type="submit" className="btn btn-primary">Enviar Inscripción</button>
|
||||||
|
|
|
@ -34,7 +34,14 @@ const Registro = () => {
|
||||||
|
|
||||||
if (res && res.verificacion) {
|
if (res && res.verificacion) {
|
||||||
limpiar();
|
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 {
|
} else {
|
||||||
setError('Error: No se pudo Registrar');
|
setError('Error: No se pudo Registrar');
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ const ValidacionAdm = () => {
|
||||||
const [alumno, setAlumno] = useState({});
|
const [alumno, setAlumno] = useState({});
|
||||||
const [matriculas, setMatriculas] = useState([]);
|
const [matriculas, setMatriculas] = useState([]);
|
||||||
const [currentMatriculaIndex, setCurrentMatriculaIndex] = useState(0);
|
const [currentMatriculaIndex, setCurrentMatriculaIndex] = useState(0);
|
||||||
|
const [boton, setBoton]= useState(true);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
|
@ -51,97 +52,139 @@ const ValidacionAdm = () => {
|
||||||
fetchAlumnoData(matriculas[newIndex].id);
|
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) {
|
if (loading) {
|
||||||
return <div>Loading...</div>;
|
return <div>Loading...</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container mt-4">
|
<div>
|
||||||
<h1 className="text-center mb-4">Validación Administrativa</h1>
|
{matriculas.length > 0 ? (
|
||||||
|
<div className="container mt-4">
|
||||||
|
<h1 className="text-center mb-4">Validación Administrativa</h1>
|
||||||
|
|
||||||
<div className="input-group mb-3 justify-content-center">
|
<div className="input-group mb-3 justify-content-center">
|
||||||
<div className="input-group-prepend">
|
<div className="input-group-prepend">
|
||||||
<button className="btn btn-sm p-0 border-0" type="button" onClick={handlePreviousMatricula}>
|
<button className="btn btn-sm p-0 border-0" type="button" onClick={handlePreviousMatricula}>
|
||||||
<img src="left-arrow.png" alt="Icono de flecha izquierda" style={{ width: '20px', height: '20px' }} />
|
<img src="left-arrow.png" alt="Icono de flecha izquierda" style={{ width: '20px', height: '20px' }} />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="form-control form-control-sm text-center"
|
className="form-control form-control-sm text-center"
|
||||||
style={{ maxWidth: '250px' }}
|
style={{ maxWidth: '250px' }}
|
||||||
placeholder="Aqui aparece la matricula"
|
placeholder="Aqui aparece la matricula"
|
||||||
value={matriculas[currentMatriculaIndex].matricula}
|
value={matriculas[currentMatriculaIndex]?.matricula || ''}
|
||||||
readOnly
|
readOnly
|
||||||
/>
|
/>
|
||||||
<div className="input-group-append">
|
<div className="input-group-append">
|
||||||
<button className="btn btn-sm p-0 border-0" type="button" onClick={handleNextMatricula}>
|
<button className="btn btn-sm p-0 border-0" type="button" onClick={handleNextMatricula}>
|
||||||
<img src="right-arrow.png" alt="Icono de flecha derecha" style={{ width: '20px', height: '20px' }} />
|
<img src="right-arrow.png" alt="Icono de flecha derecha" style={{ width: '20px', height: '20px' }} />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="card mb-4">
|
<div className="card mb-4">
|
||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<h2 className="card-title">Datos del Alumno</h2>
|
<h2 className="card-title">Datos del Alumno</h2>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-md-6">
|
<div className="col-md-6">
|
||||||
<p className="card-text"><strong>Nombre:</strong> {alumno.nombre}</p>
|
<p className="card-text"><strong>Nombre:</strong> {alumno.nombre}</p>
|
||||||
<p className="card-text"><strong>Apellido:</strong> {alumno.apellido}</p>
|
<p className="card-text"><strong>Apellido:</strong> {alumno.apellido}</p>
|
||||||
<p className="card-text"><strong>Matricula:</strong> {alumno.matricula}</p>
|
<p className="card-text"><strong>Matricula:</strong> {alumno.matricula}</p>
|
||||||
<p className="card-text"><strong>Correo:</strong> {alumno.correo}</p>
|
<p className="card-text"><strong>Correo:</strong> {alumno.correo}</p>
|
||||||
<p className="card-text"><strong>Nacionalidad:</strong> {alumno.nacionalidad}</p>
|
<p className="card-text"><strong>Nacionalidad:</strong> {alumno.nacionalidad}</p>
|
||||||
<p className="card-text"><strong>Tipo de sangre:</strong> {alumno.tipoSangre}</p>
|
<p className="card-text"><strong>Tipo de sangre:</strong> {alumno.tipoSangre}</p>
|
||||||
<p className="card-text"><strong>Fecha de nacimiento:</strong> {alumno.fecha_nacimiento}</p>
|
<p className="card-text"><strong>Fecha de nacimiento:</strong> {alumno.fecha_nacimiento}</p>
|
||||||
<p className="card-text"><strong>CURP:</strong> {alumno.curp}</p>
|
<p className="card-text"><strong>CURP:</strong> {alumno.curp}</p>
|
||||||
<p className="card-text"><strong>Carrera:</strong> {alumno.carreraNombre}</p>
|
<p className="card-text"><strong>Carrera:</strong> {alumno.carreraNombre}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="card mb-4">
|
<div className="card mb-4">
|
||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<h2 className="card-title">Datos del Tutor</h2>
|
<h2 className="card-title">Datos del Tutor</h2>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-md-6">
|
<div className="col-md-6">
|
||||||
<p className="card-text"><strong>Nombre:</strong> {alumno.tutorNombre}</p>
|
<p className="card-text"><strong>Nombre:</strong> {alumno.tutorNombre}</p>
|
||||||
<p className="card-text"><strong>Apellido:</strong> {alumno.tutorApellido}</p>
|
<p className="card-text"><strong>Apellido:</strong> {alumno.tutorApellido}</p>
|
||||||
<p className="card-text"><strong>Teléfono:</strong> {alumno.numeroDeTelefono}</p>
|
<p className="card-text"><strong>Teléfono:</strong> {alumno.numeroDeTelefono}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="card mb-4">
|
<div className="card mb-4">
|
||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<h2 className="card-title">Documentos del Alumno</h2>
|
<h2 className="card-title">Documentos del Alumno</h2>
|
||||||
<div className="pdf-container mb-4">
|
<div className="pdf-container mb-4">
|
||||||
<p className="card-text"><strong>Acta de Nacimiento:</strong></p>
|
<p className="card-text"><strong>Acta de Nacimiento:</strong></p>
|
||||||
<embed src={'http://localhost:3000/'+alumno.matricula+'_ActaN.pdf'} type="application/pdf" width="100%" height="300px" />
|
<embed src={'http://localhost:3000/'+alumno.matricula+'_ActaN.pdf'} type="application/pdf" width="100%" height="300px" />
|
||||||
<div className="d-flex justify-content-center mt-3">
|
<div className="d-flex justify-content-center mt-3">
|
||||||
<button className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
<button onClick={aceptarDocumento} className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
||||||
<button className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
<button onClick={rechazarDocumento} className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="text-center mb-4 ">
|
||||||
|
<p className="card-text"><strong>Fotografía:</strong></p>
|
||||||
|
<img className='rounded' src={'http://localhost:3000/'+alumno.matricula+'_Foto.jpg'} />
|
||||||
|
<div className="d-flex justify-content-center mt-3">
|
||||||
|
<button onClick={aceptarDocumento} className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
||||||
|
<button onClick={rechazarDocumento} className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div className="pdf-container mb-4">
|
<button onClick={iscribirAlumno} disabled={!boton} className="btn btn-primary btn-sm me-1">Aceptar Inscripción</button>
|
||||||
<p className="card-text"><strong>Constancia de estudios:</strong></p>
|
<button onClick={regresarDatos} className="btn btn-primary btn-sm ms-1">Solicitar Documentos de Nuevo</button>
|
||||||
<embed src={alumno.constanciaEstudios} type="application/pdf" width="100%" height="300px" />
|
|
||||||
<div className="d-flex justify-content-center mt-3">
|
|
||||||
<button className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
|
||||||
<button className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="pdf-container mb-4">
|
|
||||||
<p className="card-text"><strong>Fotografía:</strong></p>
|
|
||||||
<embed src={alumno.fotografia} type="application/pdf" width="100%" height="300px" />
|
|
||||||
<div className="d-flex justify-content-center mt-3">
|
|
||||||
<button className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
|
||||||
<button className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
) : (
|
||||||
|
<div className="d-flex justify-content-center align-items-center vh-100">
|
||||||
|
<div className="p-5 text-center bg-light border rounded shadow">
|
||||||
|
No hay alumnos inscritos aún.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue