require('./config'); const mariadb = require('mariadb'); const pool = mariadb.createPool({ host: process.env.HOST_DB, user: process.env.USER_DB, password: process.env.PASSWORD_DB, database: process.env.SAT_DB, }); const obtenerDatosUsr = async (numeroCuenta) => { const conn = await pool.getConnection().catch((err) => { throw new Error('No se pudo conectar con la db. ' + err); }); return conn .query( `SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}` ) .then((rows) => { conn.end(); return rows[0]; }) .catch((err) => { conn.end(); throw new Error('Hubo un problema con el querry.' + err); }); }; // Agregue para profesores const buscarProfesorPorNumero = async (numeroTrabajador) => { //console.log("Buscando profesor con numeroCuenta:", numeroTrabajador); const conn = await pool.getConnection().catch((err) => { throw new Error('No se pudo conectar con la base de datos. ' + err); }); return conn .query( `SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`, [numeroTrabajador] // NUmero de cuenta ) .then((rows) => { console.log(numeroTrabajador) conn.end(); if (rows.length === 0) return null; //console.log('Resultado de la consulta:', rows); // <--- Aquí return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' } }) .catch((err) => { conn.end(); throw new Error('Error al buscar el profesor: ' + err); }); }; const validarPeriodoActivo = async (conn) => { const conn = await pool.getConnection().catch((err) => { throw new Error('No se pudo conectar con la base de datos. ' + err); }); return conn .query( `SELECT id_periodo FROM periodo WHERE activo = b'1' LIMIT 1` ) .then((rows) => { conn.end(); if (!rows || rows.length === 0) { console.log('No existe') throw new Error('No existe un periodo activo en el sistema') } return rows; }) .catch((err) => { conn.end(); 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); // 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'); } const conn = await pool.getConnection().catch((err) => { throw new Error('No se pudo conectar con la base de datos. ' + err); }); try { const idPeriodoActivo = await validarPeriodoActivo(conn); console.log("id del periodo: " + idPeriodoActivo) const rows = await conn.query( `SELECT * FROM alumno_inscrito WHERE id_cuenta = ? AND id_periodo = ?`, [idCuenta, idPeriodoActivo] ) if (rows.length === 0) return null; conn.end(); return rows[0] } catch (error) { conn.end(); throw new Error('Error al validar alumno inscrito: ' + err) } finally { 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' auth: { type: 'OAuth2', user: process.env.CORREO_ORIGEN, clientId: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, refreshToken: process.env.REFRESH_TOKEN, }, }); }; module.exports = { buscarProfesorPorNumero, validarAlumnoInscrito };