From 8b424bc77c3193ddc68bd4debcdebc604945ab56 Mon Sep 17 00:00:00 2001 From: Patriots01 Date: Tue, 4 Aug 2026 14:27:42 -0600 Subject: [PATCH] Se ajustaron cosas para la deteccion de errores, asi como el funcionamiento del periodo actual en automatico --- server/config/mariadb.conf.js | 142 +++++++++------------------------- 1 file changed, 37 insertions(+), 105 deletions(-) diff --git a/server/config/mariadb.conf.js b/server/config/mariadb.conf.js index 6367634..4c3f0e8 100644 --- a/server/config/mariadb.conf.js +++ b/server/config/mariadb.conf.js @@ -1,44 +1,24 @@ require('./config'); const mariadb = require('mariadb'); +const nodemailer = require('nodemailer'); const pool = mariadb.createPool({ host: process.env.HOST_DB, user: process.env.USER_DB, password: process.env.PASSWORD_DB, database: process.env.SAT_DB, - connectionLimit: 5, // Limitar a 5 conexiones para evitar sobrecarga - acquireTimeout: 60000, // Timeout de 60 segundos para adquirir conexión - timeout: 60000, // Timeout general - connectionLimit: 5, // Limitar a 5 conexiones para evitar sobrecarga - acquireTimeout: 60000, // Timeout de 60 segundos para adquirir conexión - timeout: 60000, // Timeout general + connectionLimit: 5, + acquireTimeout: 60000, + timeout: 60000, }); const obtenerDatosUsr = async (numeroCuenta) => { let conn; try { - conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la db. ' + err); - }); - let conn; - try { - conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la db. ' + err); - }); - - const rows = await conn.query( + conn = await pool.getConnection(); const rows = await conn.query( `SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}` ); - - return rows[0]; - } catch (err) { - throw new Error('Hubo un problema con el querry.' + err); - } finally { - if (conn) conn.end(); - } - ); - return rows[0]; } catch (err) { throw new Error('Hubo un problema con el querry.' + err); @@ -47,30 +27,20 @@ const obtenerDatosUsr = async (numeroCuenta) => { } }; -// Agregue para profesores const buscarProfesorPorNumero = async (numeroTrabajador) => { - //console.log("Buscando profesor con numeroCuenta:", numeroTrabajador); - let conn; try { - conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); - let conn; - try { - conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); - + conn = await pool.getConnection(); const rows = await conn.query( - `SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`, - [numeroTrabajador] // Numero de cuenta + `SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`, + [numeroTrabajador] ); + console.log('Este es la info que trae:', rows); + console.log(numeroTrabajador); if (rows.length === 0) return null; - //console.log('Resultado de la consulta:', rows); // <--- Aquí - return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' } + return rows[0]; } catch (err) { throw new Error('Error al buscar el profesor: ' + err); } finally { @@ -79,105 +49,67 @@ const buscarProfesorPorNumero = async (numeroTrabajador) => { }; const validarPeriodoActivo = async (conn) => { - return conn - .query( - `SELECT id_periodo FROM periodo WHERE activo = b'1' LIMIT 1` - ) + return conn + .query(`SELECT id_periodo FROM periodo WHERE activo = '1' LIMIT 1`) .then((rows) => { if (!rows || rows.length === 0) { console.log('No existe'); throw new Error('No existe un periodo activo en el sistema'); } - return rows; - if (!rows || rows.length === 0) { - console.log('No existe'); - throw new Error('No existe un periodo activo en el sistema'); - } + console.log('Periodo: ', rows) return rows; }) .catch((err) => { throw new Error('Error al validar periodo activo: ' + err); }); - - // console.log('Este es el periodo: ', rows[0]) - // console.log('Este es el id del periodo: ', rows[0].id_periodo) - // return rows[0].id_periodo; - throw new Error('Error al validar periodo activo: ' + err); - }); - - // console.log('Este es el periodo: ', rows[0]) - // console.log('Este es el id del periodo: ', rows[0].id_periodo) - // return rows[0].id_periodo; -} +}; const validarAlumnoInscrito = async (idCuenta) => { - console.log("Validando alumno inscrito con id_cuenta:", idCuenta); + console.log('Validando alumno inscrito con id_cuenta:', idCuenta); - // Convertimos a número para quitar ceros a la izquierda const idLimpio = parseInt(idCuenta, 10); - // Si después de limpiar tiene más de 6 dígitos, no es profesor if (idLimpio.toString().length > 6) { throw new Error('Error: el número de trabajador no existe'); } let conn; try { - conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); - let conn; - try { - conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); - + conn = await pool.getConnection(); const idPeriodoActivo = await validarPeriodoActivo(conn); - console.log("id del periodo: " + idPeriodoActivo) - + console.log('id del periodo: ', idPeriodoActivo[0]); + const rows = await conn.query( `SELECT * FROM alumno_inscrito WHERE id_cuenta = ? AND id_periodo = ?`, - [idCuenta, idPeriodoActivo] - ) + [idCuenta, idPeriodoActivo[0].id_periodo] + ); + // const [rows] = await conn.query( + // `SELECT * FROM alumno_inscrito WHERE id_cuenta = 000031231 AND id_periodo = 43` + // ); + console.log("rows:", rows); + console.log("Tipo:", typeof rows); + console.log("Es arreglo:", Array.isArray(rows)); - if (rows.length === 0) return null; + console.log('Esto es dentro de validar alumno inscrito', rows); + console.log(rows.length) + + + if (rows.length > 0) { + return ("El alumno ya se encuentra inscrito en el período actual."); + } - return rows[0]; return rows[0]; } catch (error) { - throw new Error('Error al validar alumno inscrito: ' + error); - throw new Error('Error al validar alumno inscrito: ' + error); + throw new Error(`Error al validar alumno inscrito: ${error.message}`); } finally { if (conn) conn.end(); - if (conn) conn.end(); } - - // return conn - // .query( - // `SELECT * FROM alumno_inscrito WHERE id_cuenta = ? AND id_periodo = 27`, - // [idCuenta] - // ) - // .then((rows) => { - // //console.log('Resultado de la consulta alumno_inscrito:', rows); - - // conn.end(); - // if (rows.length === 0) return null; - // return rows[0]; // Devuelve el primer registro encontrado - // }) - // .catch((err) => { - // conn.end(); - // throw new Error('Error al validar alumno inscrito: ' + err); - // }); }; - -// Para envios de correos -const nodemailer = require('nodemailer'); - const enviarCorreoInscripcion = async (destinatario, nombreProfesor) => { const transporter = nodemailer.createTransport({ - service: 'gmail', // o smtp host como 'smtp.mailtrap.io' + service: 'gmail', auth: { type: 'OAuth2', user: process.env.CORREO_ORIGEN, @@ -188,4 +120,4 @@ const enviarCorreoInscripcion = async (destinatario, nombreProfesor) => { }); }; -module.exports = { buscarProfesorPorNumero, validarAlumnoInscrito }; +module.exports = { buscarProfesorPorNumero, validarAlumnoInscrito };