Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b424bc77c | |||
| 7329f70a02 | |||
| b1465cfdb4 | |||
| a4a714616e |
@@ -1,27 +1,24 @@
|
|||||||
require('./config');
|
require('./config');
|
||||||
const mariadb = require('mariadb');
|
const mariadb = require('mariadb');
|
||||||
|
const nodemailer = require('nodemailer');
|
||||||
|
|
||||||
const pool = mariadb.createPool({
|
const pool = mariadb.createPool({
|
||||||
host: process.env.HOST_DB,
|
host: process.env.HOST_DB,
|
||||||
user: process.env.USER_DB,
|
user: process.env.USER_DB,
|
||||||
password: process.env.PASSWORD_DB,
|
password: process.env.PASSWORD_DB,
|
||||||
database: process.env.SAT_DB,
|
database: process.env.SAT_DB,
|
||||||
connectionLimit: 5, // Limitar a 5 conexiones para evitar sobrecarga
|
connectionLimit: 5,
|
||||||
acquireTimeout: 60000, // Timeout de 60 segundos para adquirir conexión
|
acquireTimeout: 60000,
|
||||||
timeout: 60000, // Timeout general
|
timeout: 60000,
|
||||||
});
|
});
|
||||||
|
|
||||||
const obtenerDatosUsr = async (numeroCuenta) => {
|
const obtenerDatosUsr = async (numeroCuenta) => {
|
||||||
let conn;
|
let conn;
|
||||||
try {
|
try {
|
||||||
conn = await pool.getConnection().catch((err) => {
|
conn = await pool.getConnection();
|
||||||
throw new Error('No se pudo conectar con la db. ' + err);
|
|
||||||
});
|
|
||||||
|
|
||||||
const rows = await conn.query(
|
const rows = await conn.query(
|
||||||
`SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}`
|
`SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}`
|
||||||
);
|
);
|
||||||
|
|
||||||
return rows[0];
|
return rows[0];
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error('Hubo un problema con el querry.' + err);
|
throw new Error('Hubo un problema con el querry.' + err);
|
||||||
@@ -30,25 +27,20 @@ const obtenerDatosUsr = async (numeroCuenta) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Agregue para profesores
|
|
||||||
const buscarProfesorPorNumero = async (numeroTrabajador) => {
|
const buscarProfesorPorNumero = async (numeroTrabajador) => {
|
||||||
//console.log("Buscando profesor con numeroCuenta:", numeroTrabajador);
|
|
||||||
|
|
||||||
let conn;
|
let conn;
|
||||||
try {
|
try {
|
||||||
conn = await pool.getConnection().catch((err) => {
|
conn = await pool.getConnection();
|
||||||
throw new Error('No se pudo conectar con la base de datos. ' + err);
|
|
||||||
});
|
|
||||||
|
|
||||||
const rows = await conn.query(
|
const rows = await conn.query(
|
||||||
`SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`,
|
`SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`,
|
||||||
[numeroTrabajador] // Numero de cuenta
|
[numeroTrabajador]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log('Este es la info que trae:', rows);
|
||||||
|
|
||||||
console.log(numeroTrabajador);
|
console.log(numeroTrabajador);
|
||||||
if (rows.length === 0) return null;
|
if (rows.length === 0) return null;
|
||||||
//console.log('Resultado de la consulta:', rows); // <--- Aquí
|
return rows[0];
|
||||||
return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' }
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error('Error al buscar el profesor: ' + err);
|
throw new Error('Error al buscar el profesor: ' + err);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -58,85 +50,66 @@ const buscarProfesorPorNumero = async (numeroTrabajador) => {
|
|||||||
|
|
||||||
const validarPeriodoActivo = async (conn) => {
|
const validarPeriodoActivo = async (conn) => {
|
||||||
return conn
|
return conn
|
||||||
.query(
|
.query(`SELECT id_periodo FROM periodo WHERE activo = '1' LIMIT 1`)
|
||||||
`SELECT id_periodo FROM periodo WHERE activo = b'1' LIMIT 1`
|
|
||||||
)
|
|
||||||
.then((rows) => {
|
.then((rows) => {
|
||||||
if (!rows || rows.length === 0) {
|
if (!rows || rows.length === 0) {
|
||||||
console.log('No existe');
|
console.log('No existe');
|
||||||
throw new Error('No existe un periodo activo en el sistema');
|
throw new Error('No existe un periodo activo en el sistema');
|
||||||
}
|
}
|
||||||
|
console.log('Periodo: ', rows)
|
||||||
return rows;
|
return rows;
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
throw new Error('Error al validar periodo activo: ' + 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
const validarAlumnoInscrito = async (idCuenta) => {
|
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);
|
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) {
|
if (idLimpio.toString().length > 6) {
|
||||||
throw new Error('Error: el número de trabajador no existe');
|
throw new Error('Error: el número de trabajador no existe');
|
||||||
}
|
}
|
||||||
|
|
||||||
let conn;
|
let conn;
|
||||||
try {
|
try {
|
||||||
conn = await pool.getConnection().catch((err) => {
|
conn = await pool.getConnection();
|
||||||
throw new Error('No se pudo conectar con la base de datos. ' + err);
|
|
||||||
});
|
|
||||||
|
|
||||||
const idPeriodoActivo = await validarPeriodoActivo(conn);
|
const idPeriodoActivo = await validarPeriodoActivo(conn);
|
||||||
|
|
||||||
console.log("id del periodo: " + idPeriodoActivo)
|
console.log('id del periodo: ', idPeriodoActivo[0]);
|
||||||
|
|
||||||
const rows = await conn.query(
|
const rows = await conn.query(
|
||||||
`SELECT * FROM alumno_inscrito WHERE id_cuenta = ? AND id_periodo = ?`,
|
`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) {
|
} catch (error) {
|
||||||
throw new Error('Error al validar alumno inscrito: ' + error);
|
throw new Error(`Error al validar alumno inscrito: ${error.message}`);
|
||||||
} finally {
|
} 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 enviarCorreoInscripcion = async (destinatario, nombreProfesor) => {
|
||||||
const transporter = nodemailer.createTransport({
|
const transporter = nodemailer.createTransport({
|
||||||
service: 'gmail', // o smtp host como 'smtp.mailtrap.io'
|
service: 'gmail',
|
||||||
auth: {
|
auth: {
|
||||||
type: 'OAuth2',
|
type: 'OAuth2',
|
||||||
user: process.env.CORREO_ORIGEN,
|
user: process.env.CORREO_ORIGEN,
|
||||||
@@ -147,4 +120,4 @@ const enviarCorreoInscripcion = async (destinatario, nombreProfesor) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = { buscarProfesorPorNumero, validarAlumnoInscrito };
|
module.exports = { buscarProfesorPorNumero, validarAlumnoInscrito };
|
||||||
|
|||||||
Reference in New Issue
Block a user