Se ajustaron cosas para la deteccion de errores, asi como el funcionamiento del periodo actual en automatico

This commit is contained in:
Patriots01
2026-08-04 14:27:42 -06:00
parent 7329f70a02
commit 8b424bc77c
+37 -105
View File
@@ -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 };