2 Commits

Author SHA1 Message Date
Patriots01 765c596b79 Se agrego la opcion de obtener el periodo en automatico 2026-08-04 11:05:07 -06:00
Patriots01 84618be3b4 Se obtiene el id_periodo en automatico sin necesidad de meterlo manualmente 2026-08-04 10:55:42 -06:00
2 changed files with 89 additions and 31 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ const buscarProfesorPorNumero = async (numeroTrabajador) => {
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] // Numero de cuenta
); );
console.log(numeroTrabajador); console.log(numeroTrabajador);
@@ -1,39 +1,81 @@
const enviarCorreoInscripcion = require('../../controller/Profesor/enviarCorreo'); // Ajusta si está en otra ruta const enviarCorreoInscripcion = require('../../controller/Profesor/enviarCorreo'); // Ajusta si está en otra ruta
const Alumno = require('../../db/tablas/Alumno'); const Alumno = require('../../db/tablas/Alumno');
const AlumnoInscrito = require('../../db/tablas/AlumnoInscrito'); const AlumnoInscrito = require('../../db/tablas/AlumnoInscrito');
const sequelize = require('../../config/sequelize.conf');
async function realizarInscripcion(req, res) { async function realizarInscripcion(req, res) {
const { id_cuenta, nombre, correo } = req.body; const { id_cuenta, nombre, correo } = req.body;
try { try {
console.log('\n=== INICIO INSCRIPCION PROFESOR ===');
console.log('Datos recibidos:', { id_cuenta, nombre, correo });
// Validar datos requeridos primero
if (!nombre || !id_cuenta || !correo) {
console.error('Datos incompletos');
return res.status(400).json({ message: 'Faltan datos requeridos: id_cuenta, nombre y correo.' });
}
if (!nombre || !id_cuenta) { // Obtener periodo activo
return res.status(400).json({ message: 'Faltan datos requeridos.' }); let idPeriodoActivo;
try {
console.log('Buscando periodo activo...');
const periodoActivo = await sequelize.query(`
SELECT id_periodo
FROM periodo
WHERE activo = 1
LIMIT 1
`, { raw: true, type: sequelize.QueryTypes.SELECT });
console.log('Resultado periodo:', periodoActivo);
if (!periodoActivo || !periodoActivo.length) {
console.warn('No hay periodo activo');
return res.status(400).json({
message: 'No hay periodo activo configurado'
});
}
idPeriodoActivo = periodoActivo[0].id_periodo;
console.log('ID Periodo Activo encontrado:', idPeriodoActivo);
} catch (dbError) {
console.error('❌ Error al obtener periodo activo:');
console.error(' Mensaje:', dbError.message);
console.error(' SQL:', dbError.sql);
console.error(' Stack:', dbError.stack);
return res.status(500).json({
message: 'Error al obtener el período activo.',
error: dbError.message,
sql: dbError.sql || 'N/A'
});
} }
// 1. Buscar si el usuario existe // 1. Buscar si el usuario existe
console.log('Buscando usuario con id_cuenta:', id_cuenta);
const usuario = await Alumno.findOne({ where: { id_cuenta } }); const usuario = await Alumno.findOne({ where: { id_cuenta } });
console.log('Usuario encontrado:', usuario ? 'SÍ' : 'NO');
if (!usuario) { if (!usuario) {
return res.status(404).json({ message: 'Usuario no encontrado en la base de datos.' }); console.error('Usuario no encontrado');
return res.status(404).json({ message: 'Usuario (Alumno) no encontrado en la base de datos.' });
} }
// 2. Verificar si ya tiene inscripción // 2. Verificar si ya tiene inscripción
console.log('Verificando inscripción existente...');
const inscripcionExistente = await AlumnoInscrito.findOne({ const inscripcionExistente = await AlumnoInscrito.findOne({
where: { where: {
id_cuenta: usuario.id_cuenta, id_cuenta: usuario.id_cuenta,
id_periodo: 28 id_periodo: idPeriodoActivo
} }
}); });
console.log('Inscripción existente:', inscripcionExistente ? 'SÍ' : 'NO');
console.log('Inscripcion:', inscripcionExistente)
if (inscripcionExistente) { if (inscripcionExistente) {
console.log('Usuario ya inscrito en este período');
return res.status(200).json({ return res.status(200).json({
message: 'El usuario ya está inscrito.', message: 'El usuario ya está inscrito en este período.',
data: inscripcionExistente
}); });
} }
@@ -51,38 +93,54 @@ async function realizarInscripcion(req, res) {
// 3. Crear inscripción // 3. Crear inscripción
await AlumnoInscrito.create({ console.log('Creando nueva inscripción...');
const nuevaInscripcion = await AlumnoInscrito.create({
id_cuenta: usuario.id_cuenta, id_cuenta: usuario.id_cuenta,
id_periodo: 28, id_periodo: idPeriodoActivo,
id_plataforma: 5, id_plataforma: 5,
fecha_inscripcion: new Date(), fecha_inscripcion: new Date(),
tiempo_disponible: 3600, tiempo_disponible: 3600,
realizo_pago: 0, realizo_pago: false,
platica: 1, platica: true,
ad: 0 ad: false
}); });
console.log('✓ Inscripción creada:', nuevaInscripcion.id_alumno_inscrito);
// 4. Realizar confirmacion // 4. Enviar correo
await AlumnoInscrito.update( try {
{ platica: 1 }, console.log('Enviando correo a:', correo);
{ where: { id_cuenta: usuario.id_cuenta } } await enviarCorreoInscripcion(correo, nombre);
); console.log('✓ Correo enviado exitosamente');
} catch (emailError) {
console.warn('⚠ Correo no enviado (pero inscripción OK):', emailError.message);
}
// 5. Respuesta final
console.log(correo) console.log('=== INSCRIPCION COMPLETADA EXITOSAMENTE ===\n');
console.log(nombre) res.status(200).json({
// 5. Enviar correo message: 'Inscripción creada correctamente.',
await enviarCorreoInscripcion(correo, nombre); data: {
id_alumno_inscrito: nuevaInscripcion.id_alumno_inscrito,
// 6. Respuesta final id_cuenta: usuario.id_cuenta,
res.status(200).json({ message: 'Inscripción creada y correo enviado correctamente.' }); id_periodo: idPeriodoActivo
}
});
} catch (error) { } catch (error) {
console.error('Error en realizarInscripcion:', error); console.error('\n❌ ERROR EN realizarInscripcion ❌');
//console.log('Datos recibidos para inscripción:', req.body); console.error('Tipo de error:', error.name);
console.error('Mensaje:', error.message);
console.error('Stack completo:', error.stack);
console.error('Datos recibidos:', req.body);
if (error.sql) console.error('SQL:', error.sql);
console.error('=====================================\n');
res.status(500).json({ message: 'Error al procesar la inscripción o enviar el correo.' }); res.status(500).json({
message: 'Error al procesar la inscripción o enviar el correo.',
error: error.message,
type: error.name
});
} }
} }