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, acquireTimeout: 60000, timeout: 60000, }); const obtenerDatosUsr = async (numeroCuenta) => { let conn; try { 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(); } }; const buscarProfesorPorNumero = async (numeroTrabajador) => { let conn; try { conn = await pool.getConnection(); const rows = await conn.query( `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; return rows[0]; } catch (err) { throw new Error('Error al buscar el profesor: ' + err); } finally { if (conn) conn.end(); } }; const validarPeriodoActivo = async (conn) => { 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'); } console.log('Periodo: ', rows) return rows; }) .catch((err) => { throw new Error('Error al validar periodo activo: ' + err); }); }; const validarAlumnoInscrito = async (idCuenta) => { console.log('Validando alumno inscrito con id_cuenta:', idCuenta); const idLimpio = parseInt(idCuenta, 10); if (idLimpio.toString().length > 6) { throw new Error('Error: el número de trabajador no existe'); } let conn; try { conn = await pool.getConnection(); const idPeriodoActivo = await validarPeriodoActivo(conn); console.log('id del periodo: ', idPeriodoActivo[0]); const rows = await conn.query( `SELECT * FROM alumno_inscrito WHERE id_cuenta = ? AND id_periodo = ?`, [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)); 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]; } catch (error) { throw new Error(`Error al validar alumno inscrito: ${error.message}`); } finally { if (conn) conn.end(); } }; const enviarCorreoInscripcion = async (destinatario, nombreProfesor) => { const transporter = nodemailer.createTransport({ service: 'gmail', 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 };