cambio de frameWork
This commit is contained in:
parent
f0f6c8bf47
commit
41b16210f2
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,38 @@
|
|||
import mysql from 'mysql2/promise'; // Importa la versión de la biblioteca que soporta promesas
|
||||
|
||||
class Conexion {
|
||||
constructor() {
|
||||
this.conexion = null;
|
||||
this.configuracion = {
|
||||
host: 'localhost',
|
||||
user: 'UserRemoto',
|
||||
password: 'password123',
|
||||
database: 'universidad'
|
||||
};
|
||||
}
|
||||
|
||||
async conectar() {
|
||||
try {
|
||||
this.conexion = await mysql.createConnection(this.configuracion);
|
||||
console.log('Conexión exitosa a MySQL');
|
||||
return this.conexion;
|
||||
} catch (error) {
|
||||
console.error('Error al conectar con la base de datos:', error.message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
cerrarConexion() {
|
||||
if (this.conexion) {
|
||||
this.conexion.end((err) => {
|
||||
if (err) {
|
||||
console.error('Error al cerrar la conexión con la base de datos:', err.message);
|
||||
return;
|
||||
}
|
||||
console.log('Se desconectó de la base de datos');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default Conexion;
|
|
@ -0,0 +1,160 @@
|
|||
import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión
|
||||
import Usuario from '../Model/Usuario.js'; // Asegúrate de tener la ruta correcta al archivo de Usuario
|
||||
import Mensaje from '../Model/Mensaje.js'; // Asegúrate de tener la ruta correcta al archivo de Mensaje
|
||||
import DAORegistro from './DAORegistro.js';
|
||||
|
||||
class DAO {
|
||||
static async dameAlumnos() {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `SELECT id, nombre, apellido, matricula FROM usuario`;
|
||||
const [rows] = await conexionEstablecida.query(sql);
|
||||
const resultado = rows.map(row => new Usuario(row.id, row.nombre, row.apellido, row.matricula));
|
||||
return resultado;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return [];
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async validarAlumno(alumno) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `SELECT * FROM usuario WHERE matricula = ? AND contrasena = ?`;
|
||||
const [rows] = await conexionEstablecida.query(sql, [alumno.getMatricula(), alumno.getContrasena()]);
|
||||
return rows.length > 0;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return false;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async agregarAlumno(usuario) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const ultimoID = await this.obtenerUltimoID();
|
||||
const matricula = "SIU24" + (1000 + ultimoID);
|
||||
const password = this.crearContrasena();
|
||||
usuario.contrasena = password;
|
||||
usuario.matricula = matricula;
|
||||
const sql = `INSERT INTO usuario (nombre, apellido, nacionalidad, matricula, contrasena, correo, rol) VALUES (?, ?, ?, ?, ?, ?, ?)`;
|
||||
const [result] = await conexionEstablecida.query(sql, [
|
||||
usuario.nombre, usuario.apellido, usuario.nacionalidad,
|
||||
usuario.matricula, usuario.contrasena, usuario.correo, usuario.rol
|
||||
]);
|
||||
return result.affectedRows > 0 ? new Mensaje(true, usuario.matricula, usuario.contrasena) : new Mensaje(false, null);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return new Mensaje(false, null);
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async editarAlumno(usuario) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `UPDATE usuario SET nombre = ?, apellido = ?, correo = ?, nacionalidad = ?, tipoSangre = ?, fecha_nacimiento = ?, curp = ?, idCarrera = ? WHERE id = ?`;
|
||||
const [result] = await conexionEstablecida.query(sql, [
|
||||
usuario.nombre, usuario.apellido, usuario.correo,
|
||||
usuario.nacionalidad, usuario.tipoSangre, usuario.fecha_nacimiento,
|
||||
usuario.curp, usuario.idCarrera, usuario.id
|
||||
]);
|
||||
return result.affectedRows > 0;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return false;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async alumnoIniciado(matricula, contrasena) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `SELECT * FROM usuario WHERE matricula = ? AND contrasena = ?`;
|
||||
const [rows] = await conexionEstablecida.query(sql, [matricula, contrasena]);
|
||||
if (rows.length > 0) {
|
||||
const row = rows[0];
|
||||
const usuario = new Usuario(
|
||||
row.id, row.nombre, row.apellido, row.matricula, row.contrasena,
|
||||
row.correo, row.nacionalidad,
|
||||
row.tipoSangre, row.fecha_nacimiento, row.curp,
|
||||
row.rol, row.idCarrera, row.inscrito
|
||||
);
|
||||
await DAORegistro.registrar(usuario, "Inicio Sesión", new Date());
|
||||
return usuario;
|
||||
}
|
||||
return null;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return null;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async obtenerUltimoID() {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `SELECT MAX(id) AS ultimo_id FROM usuario`;
|
||||
const [rows] = await conexionEstablecida.query(sql);
|
||||
return rows[0].ultimo_id || -1;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return -1;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static crearContrasena() {
|
||||
const CARACTERES_PERMITIDOS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#";
|
||||
let contrasena = '';
|
||||
for (let i = 0; i < 10; i++) {
|
||||
const index = Math.floor(Math.random() * CARACTERES_PERMITIDOS.length);
|
||||
contrasena += CARACTERES_PERMITIDOS.charAt(index);
|
||||
}
|
||||
return contrasena;
|
||||
}
|
||||
|
||||
static async traeUsuario(id) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
let usuario = null;
|
||||
try {
|
||||
const sql = `SELECT id, nombre, apellido, matricula, correo, nacionalidad, tipoSangre, fecha_nacimiento, curp, rol, idCarrera, inscrito FROM usuario WHERE id = ?`;
|
||||
const [rows] = await conexionEstablecida.query(sql, [id]);
|
||||
if (rows.length > 0) {
|
||||
const row = rows[0];
|
||||
|
||||
// Convertir la fecha al formato "yyyy-MM-dd"
|
||||
const fechaNacimiento = new Date(row.fecha_nacimiento);
|
||||
const formattedDate = fechaNacimiento.toISOString().split('T')[0]; // "yyyy-MM-dd"
|
||||
|
||||
usuario = new Usuario(
|
||||
row.id, row.nombre, row.apellido, row.matricula, "", row.correo,
|
||||
row.nacionalidad, row.tipoSangre, formattedDate, row.curp,
|
||||
row.rol, row.idCarrera, row.inscrito
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
return usuario;
|
||||
}
|
||||
}
|
||||
|
||||
export default DAO;
|
|
@ -0,0 +1,22 @@
|
|||
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
|
||||
|
||||
class DAOCarrera {
|
||||
static async dameCarreras() {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = "SELECT * FROM carrera";
|
||||
const [rows] = await conexionEstablecida.query(sql);
|
||||
const resultado = rows.map(row => new Carrera(row.id, row.nombre, row.area, row.campus, row.descripcion, row.mision, row.vision, row.objetivo));
|
||||
return resultado;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return [];
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default DAOCarrera;
|
|
@ -0,0 +1,22 @@
|
|||
import Conexion from './Conexion.js';
|
||||
|
||||
class DAODocumento {
|
||||
static async agregarDocumento(req, file) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar()
|
||||
try {
|
||||
const sql = "INSERT INTO `documento`(`titulo`,`archivo`,`idUsuario`,`valido`) VALUES(?,?,?,?);";
|
||||
const [result] = await conexionEstablecida.query(sql, [
|
||||
req.titulo, file, req.idUsuario, 0
|
||||
]);
|
||||
return result.affectedRows > 0;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
throw error;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default DAODocumento;
|
|
@ -0,0 +1,20 @@
|
|||
import Conexion from './Conexion.js'; // Asegúrate de tener la ruta correcta al archivo de conexión
|
||||
|
||||
class DAORegistro {
|
||||
static async registrar(usuario, descripcion, day) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = "INSERT INTO registro (matricula, descripcion) VALUES (?, ?)";
|
||||
const stm = await conexionEstablecida.query(sql, [usuario.getMatricula(), descripcion + day]);
|
||||
return stm.affectedRows > 0;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return false;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default DAORegistro;
|
|
@ -0,0 +1,57 @@
|
|||
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
|
||||
|
||||
class DAOTutor {
|
||||
|
||||
static async agregarTutor(tutor) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `INSERT INTO tutor (nombre,apellido,numeroDeTelefono,idUsuario)VALUES(?,?,?,?);`;
|
||||
const [result] = await conexionEstablecida.query(sql, [tutor.nombre, tutor.apellido, tutor.numeroDeTelefono, tutor.idUsuario]);
|
||||
return result.affectedRows > 0;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return false;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async editarTutor(tutor) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `UPDATE tutor SET nombre = ?, apellido = ?, numeroDeTelefono = ? WHERE idUsuario = ?`;
|
||||
const [result] = await conexionEstablecida.query(sql, [tutor.nombre, tutor.apellido, tutor.numeroDeTelefono, tutor.idUsuario]);
|
||||
return result.affectedRows > 0;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return false;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async traerTutor(id) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `SELECT id, nombre, apellido, numeroDeTelefono, idUsuario FROM tutor WHERE idUsuario = ?`;
|
||||
const [rows] = await conexionEstablecida.query(sql, [id]);
|
||||
if (rows.length > 0) {
|
||||
const row = rows[0];
|
||||
const tutor = new Tutor(row.id, row.nombre, row.apellido, row.numeroDeTelefono, row.idUsuario);
|
||||
return tutor;
|
||||
}
|
||||
return null;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return null;
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default DAOTutor;
|
|
@ -0,0 +1,80 @@
|
|||
class Carrera {
|
||||
constructor(id, nombre, area, campus, descripcion, mision, vision, 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;
|
||||
}
|
||||
|
||||
// Getters
|
||||
getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
getNombre() {
|
||||
return this.nombre;
|
||||
}
|
||||
|
||||
getArea() {
|
||||
return this.area;
|
||||
}
|
||||
|
||||
getCampus() {
|
||||
return this.campus;
|
||||
}
|
||||
|
||||
getDescripcion() {
|
||||
return this.descripcion;
|
||||
}
|
||||
|
||||
getMision() {
|
||||
return this.mision;
|
||||
}
|
||||
|
||||
getVision() {
|
||||
return this.vision;
|
||||
}
|
||||
|
||||
getObjetivo() {
|
||||
return this.objetivo;
|
||||
}
|
||||
|
||||
// Setters
|
||||
setId(id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
setNombre(nombre) {
|
||||
this.nombre = nombre;
|
||||
}
|
||||
|
||||
setArea(area) {
|
||||
this.area = area;
|
||||
}
|
||||
|
||||
setCampus(campus) {
|
||||
this.campus = campus;
|
||||
}
|
||||
|
||||
setDescripcion(descripcion) {
|
||||
this.descripcion = descripcion;
|
||||
}
|
||||
|
||||
setMision(mision) {
|
||||
this.mision = mision;
|
||||
}
|
||||
|
||||
setVision(vision) {
|
||||
this.vision = vision;
|
||||
}
|
||||
|
||||
setObjetivo(objetivo) {
|
||||
this.objetivo = objetivo;
|
||||
}
|
||||
}
|
||||
|
||||
export default Carrera;
|
|
@ -0,0 +1,29 @@
|
|||
class Mensaje {
|
||||
constructor(verificacion, matricula, contrasena) {
|
||||
this.verificacion = verificacion;
|
||||
this.matricula = matricula;
|
||||
this.contrasena = contrasena;
|
||||
}
|
||||
|
||||
// Getter para la propiedad 'verificacion'
|
||||
isVerificacion() {
|
||||
return this.verificacion;
|
||||
}
|
||||
|
||||
// Getter para la propiedad 'usuario'
|
||||
getUsuario() {
|
||||
return this.usuario;
|
||||
}
|
||||
|
||||
// Setter para la propiedad 'verificacion'
|
||||
setVerificacion(verificacion) {
|
||||
this.verificacion = verificacion;
|
||||
}
|
||||
|
||||
// Setter para la propiedad 'usuario'
|
||||
setUsuario(usuario) {
|
||||
this.usuario = usuario;
|
||||
}
|
||||
}
|
||||
|
||||
export default Mensaje;
|
|
@ -0,0 +1,39 @@
|
|||
class Registro {
|
||||
constructor(id, matricula, descripcion) {
|
||||
this.id = id;
|
||||
this.matricula = matricula;
|
||||
this.descripcion = descripcion;
|
||||
}
|
||||
|
||||
// Getter para la propiedad 'id'
|
||||
getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
// Getter para la propiedad 'matricula'
|
||||
getMatricula() {
|
||||
return this.matricula;
|
||||
}
|
||||
|
||||
// Getter para la propiedad 'descripcion'
|
||||
getDescripcion() {
|
||||
return this.descripcion;
|
||||
}
|
||||
|
||||
// Setter para la propiedad 'id'
|
||||
setId(id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
// Setter para la propiedad 'matricula'
|
||||
setMatricula(matricula) {
|
||||
this.matricula = matricula;
|
||||
}
|
||||
|
||||
// Setter para la propiedad 'descripcion'
|
||||
setDescripcion(descripcion) {
|
||||
this.descripcion = descripcion;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Registro;
|
|
@ -0,0 +1,51 @@
|
|||
class Tutor {
|
||||
constructor(id, nombre, apellido, numeroDeTelefono, idUsuario) {
|
||||
this.id = id;
|
||||
this.nombre = nombre;
|
||||
this.apellido = apellido;
|
||||
this.numeroDeTelefono = numeroDeTelefono;
|
||||
this.idUsuario = idUsuario;
|
||||
}
|
||||
|
||||
getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
getNombre() {
|
||||
return this.nombre;
|
||||
}
|
||||
|
||||
getApellido() {
|
||||
return this.apellido;
|
||||
}
|
||||
|
||||
getNumeroDeTelefono() {
|
||||
return this.numeroDeTelefono;
|
||||
}
|
||||
|
||||
getIdUsuario() {
|
||||
return this.idUsuario;
|
||||
}
|
||||
|
||||
setId(id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
setNombre(nombre) {
|
||||
this.nombre = nombre;
|
||||
}
|
||||
|
||||
setApellido(apellido) {
|
||||
this.apellido = apellido;
|
||||
}
|
||||
|
||||
setNumeroDeTelefono(numeroDeTelefono) {
|
||||
this.numeroDeTelefono = numeroDeTelefono;
|
||||
}
|
||||
|
||||
setIdUsuario(idUsuario) {
|
||||
this.idUsuario = idUsuario;
|
||||
}
|
||||
}
|
||||
|
||||
export default Tutor;
|
|
@ -0,0 +1,139 @@
|
|||
class Usuario {
|
||||
constructor(
|
||||
id, nombre, apellido, matricula, contrasena, correo,
|
||||
nacionalidad, tipoSangre, fecha_nacimiento, curp,
|
||||
rol, idCarrera, inscrito
|
||||
) {
|
||||
this.id = id;
|
||||
this.nombre = nombre;
|
||||
this.apellido = apellido;
|
||||
this.matricula = matricula;
|
||||
this.contrasena = contrasena || ''; // Valor predeterminado para 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;
|
||||
}
|
||||
|
||||
// Getters
|
||||
getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
getNombre() {
|
||||
return this.nombre;
|
||||
}
|
||||
|
||||
getApellido() {
|
||||
return this.apellido;
|
||||
}
|
||||
|
||||
getMatricula() {
|
||||
return this.matricula;
|
||||
}
|
||||
|
||||
getContrasena() {
|
||||
return this.contrasena;
|
||||
}
|
||||
|
||||
getCorreo() {
|
||||
return this.correo;
|
||||
}
|
||||
|
||||
getNacionalidad() {
|
||||
return this.nacionalidad;
|
||||
}
|
||||
|
||||
getTipoSangre() {
|
||||
return this.tipoSangre;
|
||||
}
|
||||
|
||||
getFecha_nacimiento() {
|
||||
return this.fecha_nacimiento;
|
||||
}
|
||||
|
||||
getCurp() {
|
||||
return this.curp;
|
||||
}
|
||||
|
||||
getRol() {
|
||||
return this.rol;
|
||||
}
|
||||
|
||||
getIdCarrera() {
|
||||
return this.idCarrera;
|
||||
}
|
||||
|
||||
getInscrito() {
|
||||
return this.inscrito;
|
||||
}
|
||||
|
||||
// Setters
|
||||
setId(id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
setNombre(nombre) {
|
||||
this.nombre = nombre;
|
||||
}
|
||||
|
||||
setApellido(apellido) {
|
||||
this.apellido = apellido;
|
||||
}
|
||||
|
||||
setMatricula(matricula) {
|
||||
this.matricula = matricula;
|
||||
}
|
||||
|
||||
setContrasena(contrasena) {
|
||||
this.contrasena = contrasena;
|
||||
}
|
||||
|
||||
setCorreo(correo) {
|
||||
this.correo = correo;
|
||||
}
|
||||
|
||||
setNacionalidad(nacionalidad) {
|
||||
this.nacionalidad = nacionalidad;
|
||||
}
|
||||
|
||||
setTipoSangre(tipoSangre) {
|
||||
this.tipoSangre = tipoSangre;
|
||||
}
|
||||
|
||||
setFecha_nacimiento(fecha_nacimiento) {
|
||||
this.fecha_nacimiento = fecha_nacimiento;
|
||||
}
|
||||
|
||||
setCurp(curp) {
|
||||
this.curp = curp;
|
||||
}
|
||||
|
||||
setRol(rol) {
|
||||
this.rol = rol;
|
||||
}
|
||||
|
||||
setIdCarrera(idCarrera) {
|
||||
this.idCarrera = idCarrera;
|
||||
}
|
||||
|
||||
setInscrito(inscrito) {
|
||||
this.inscrito = inscrito;
|
||||
}
|
||||
|
||||
crearToken() {
|
||||
const CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
let token = '';
|
||||
for (let i = 0; i < 15; i++) {
|
||||
const index = Math.floor(Math.random() * CHARACTERS.length);
|
||||
token += CHARACTERS.charAt(index);
|
||||
}
|
||||
return token;
|
||||
}
|
||||
}
|
||||
|
||||
export default Usuario;
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"name": "server",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": "",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.20.2",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.19.2",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"mysql": "^2.18.1",
|
||||
"mysql2": "^3.9.7",
|
||||
"winston": "^3.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^3.1.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
import express from 'express';
|
||||
import DAO from '../Controller/dao.js';// Asegúrate de que la ruta sea correcta
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.post('/alumnoIniciado', async (req, res) => {
|
||||
const { matricula, contrasena } = req.body;
|
||||
try {
|
||||
// Verificar si el alumno está en la base de datos
|
||||
const usuario = await DAO.alumnoIniciado(matricula, contrasena);
|
||||
if (usuario) {
|
||||
// El alumno está autenticado correctamente
|
||||
const authToken = usuario.crearToken();
|
||||
const authRol = usuario.getRol();
|
||||
const authId = usuario.getId();
|
||||
const message = `Bienvenido ${usuario.getNombre()}`;
|
||||
res.json({ matricula, authToken, authRol, authId, message });
|
||||
} else {
|
||||
// El alumno no está autenticado
|
||||
res.status(401).json({ error: "Credenciales inválidas" });
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error al iniciar sesión:', error);
|
||||
res.status(500).json({ error: "Error al iniciar sesión" });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
export default router;
|
|
@ -0,0 +1,180 @@
|
|||
import express from 'express';
|
||||
import bodyParser from 'body-parser';
|
||||
import DAO from './Controller/DAO.js'; // Importa tus controladores DAO
|
||||
import DAOTutor from './Controller/DAOTutor.js';
|
||||
import DAOCarreras from './Controller/DAOCarrera.js';
|
||||
import Usuario from './Model/Usuario.js'; // Importa tus modelos
|
||||
import multer from 'multer';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import DAODocumento from './Controller/DAODocumento.js';
|
||||
import fs from 'fs';
|
||||
|
||||
const app = express();
|
||||
const port = 3000;
|
||||
|
||||
// Obtener el directorio actual
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const diskStorage = multer.diskStorage({
|
||||
destination: path.join(__dirname, '/ActasNacimiento'),
|
||||
filename: (req, file, cb) => {
|
||||
cb(null, file.originalname);
|
||||
}
|
||||
});
|
||||
|
||||
const fileUpload = multer({
|
||||
storage: diskStorage
|
||||
}).single('archivo');
|
||||
|
||||
app.use(bodyParser.json());
|
||||
|
||||
// Configuración de CORS
|
||||
app.use((req, res, next) => {
|
||||
res.header("Access-Control-Allow-Origin", "http://localhost:5173");
|
||||
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||
res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
||||
res.header("Access-Control-Allow-Credentials", "true");
|
||||
next();
|
||||
});
|
||||
|
||||
// Rutas
|
||||
app.get("/todosLosAlumnos", async (req, res) => {
|
||||
try {
|
||||
const alumnos = await DAO.dameAlumnos();
|
||||
res.json(alumnos);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/agregarAlumno", async (req, res) => {
|
||||
try {
|
||||
const usuario = req.body;
|
||||
usuario.rol = "estudiante";
|
||||
const msj = await DAO.agregarAlumno(usuario);
|
||||
res.json(msj);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.put("/editarUsuario", async (req, res) => {
|
||||
try {
|
||||
const usuario = req.body;
|
||||
const verificado = await DAO.editarAlumno(usuario);
|
||||
res.json({ Editado: verificado });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.put("/editarTutor", async (req, res) => {
|
||||
try {
|
||||
const tutor = req.body;
|
||||
const verificado = await DAOTutor.editarTutor(tutor);
|
||||
res.json({ Editado: verificado });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/agregarTutor", async (req, res) => {
|
||||
try {
|
||||
const tutor = req.body;
|
||||
const agregado = await DAOTutor.agregarTutor(tutor);
|
||||
res.json({ msj: agregado });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/alumnoIniciado", async (req, res) => {
|
||||
try {
|
||||
const alumno = req.body;
|
||||
const matricula = alumno.matricula;
|
||||
if (!alumno.matricula || !alumno.contrasena) {
|
||||
return res.status(400).json({ error: "Missing matricula or contrasena" });
|
||||
}
|
||||
const usuario = await DAO.alumnoIniciado(alumno.matricula, alumno.contrasena);
|
||||
const user = new Usuario();
|
||||
if (usuario) {
|
||||
const authToken = user.crearToken();
|
||||
const authRol = usuario.getRol();
|
||||
const authId = usuario.getId();
|
||||
const message = `Bienvenido ${usuario.getNombre()}`;
|
||||
res.json({ matricula, authToken, authRol, authId, message });
|
||||
} else {
|
||||
res.status(401).json({ error: "Credenciales inválidas" });
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/usuarioValido", async (req, res) => {
|
||||
try {
|
||||
const usuario = req.body;
|
||||
const verificado = await DAO.validarAlumno(usuario);
|
||||
res.json({ existe: verificado });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/traerDatosAlumno", async (req, res) => {
|
||||
try {
|
||||
const usuario = req.body;
|
||||
const datos = await DAO.traeUsuario(usuario.id);
|
||||
res.json(datos);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.get("/carreras", async (req, res) => {
|
||||
try {
|
||||
const carreras = await DAOCarreras.dameCarreras();
|
||||
res.json(carreras);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/traerDatosTutor", async (req, res) => {
|
||||
try {
|
||||
const usuario = req.body;
|
||||
const datos = await DAOTutor.traerTutor(usuario.id);
|
||||
res.json(datos);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/agregarDocumentoAN", fileUpload, async (req, res) => {
|
||||
try {
|
||||
const data = req.body;
|
||||
const file = fs.readFileSync(path.join(__dirname, '/ActasNacimiento/' + req.file.filename))
|
||||
const guardado = await DAODocumento.agregarDocumento(data, file);
|
||||
|
||||
if (guardado) {
|
||||
res.json({ message: "Archivo guardado correctamente" });
|
||||
} else {
|
||||
res.json({ message: "No se pudo guardar el archivo" });
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Manejo de errores
|
||||
app.use((err, req, res, next) => {
|
||||
console.error(err.stack);
|
||||
res.status(500).send('Something broke!');
|
||||
});
|
||||
|
||||
// Iniciar el servidor
|
||||
app.listen(port, () => {
|
||||
console.log(`App listening at http://localhost:${port}`);
|
||||
});
|
Loading…
Reference in New Issue