From 84618be3b4a0f8dd9e3e98978510ee0922bbf3fb Mon Sep 17 00:00:00 2001 From: Patriots01 Date: Tue, 4 Aug 2026 10:55:42 -0600 Subject: [PATCH] Se obtiene el id_periodo en automatico sin necesidad de meterlo manualmente --- server/config/mariadb.conf.js | 2 +- .../Profesor/inscripcionProfesor.js | 118 +++++++++++++----- 2 files changed, 89 insertions(+), 31 deletions(-) diff --git a/server/config/mariadb.conf.js b/server/config/mariadb.conf.js index 9bb3df6..90787c4 100644 --- a/server/config/mariadb.conf.js +++ b/server/config/mariadb.conf.js @@ -38,7 +38,7 @@ const buscarProfesorPorNumero = async (numeroTrabajador) => { return conn .query( `SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`, - [numeroTrabajador] // NUmero de cuenta + [numeroTrabajador] // Numero de cuenta ) .then((rows) => { console.log(numeroTrabajador) diff --git a/server/controller/Profesor/inscripcionProfesor.js b/server/controller/Profesor/inscripcionProfesor.js index ef428c0..7ec0b2d 100644 --- a/server/controller/Profesor/inscripcionProfesor.js +++ b/server/controller/Profesor/inscripcionProfesor.js @@ -1,75 +1,133 @@ const enviarCorreoInscripcion = require('../../controller/Profesor/enviarCorreo'); // Ajusta si está en otra ruta const Alumno = require('../../db/tablas/Alumno'); const AlumnoInscrito = require('../../db/tablas/AlumnoInscrito'); +const sequelize = require('../../config/sequelize.conf'); async function realizarInscripcion(req, res) { const { id_cuenta, nombre, correo } = req.body; 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) { - return res.status(400).json({ message: 'Faltan datos requeridos.' }); + // Obtener periodo activo + 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 + console.log('Buscando usuario con id_cuenta:', id_cuenta); const usuario = await Alumno.findOne({ where: { id_cuenta } }); + console.log('Usuario encontrado:', usuario ? 'SÍ' : 'NO'); 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 + console.log('Verificando inscripción existente...'); const inscripcionExistente = await AlumnoInscrito.findOne({ where: { id_cuenta: usuario.id_cuenta, - id_periodo: 27 + id_periodo: idPeriodoActivo } }); - - console.log('Inscripcion:', inscripcionExistente) + console.log('Inscripción existente:', inscripcionExistente ? 'SÍ' : 'NO'); if (inscripcionExistente) { + console.log('Usuario ya inscrito en este período'); return res.status(200).json({ - message: 'El usuario ya está inscrito.', + message: 'El usuario ya está inscrito en este período.', + data: inscripcionExistente }); } // 3. Crear inscripción - await AlumnoInscrito.create({ + console.log('Creando nueva inscripción...'); + const nuevaInscripcion = await AlumnoInscrito.create({ id_cuenta: usuario.id_cuenta, - id_periodo: 27, + id_periodo: idPeriodoActivo, id_plataforma: 5, fecha_inscripcion: new Date(), tiempo_disponible: 3600, - realizo_pago: 0, - platica: 1, - ad: 0 + realizo_pago: false, + platica: true, + ad: false }); + console.log('✓ Inscripción creada:', nuevaInscripcion.id_alumno_inscrito); - // 4. Realizar confirmacion - await AlumnoInscrito.update( - { platica: 1 }, - { where: { id_cuenta: usuario.id_cuenta } } - ); + // 4. Enviar correo + try { + console.log('Enviando correo a:', correo); + await enviarCorreoInscripcion(correo, nombre); + console.log('✓ Correo enviado exitosamente'); + } catch (emailError) { + console.warn('⚠ Correo no enviado (pero inscripción OK):', emailError.message); + } - - console.log(correo) - console.log(nombre) - // 5. Enviar correo - await enviarCorreoInscripcion(correo, nombre); - - // 6. Respuesta final - res.status(200).json({ message: 'Inscripción creada y correo enviado correctamente.' }); + // 5. Respuesta final + console.log('=== INSCRIPCION COMPLETADA EXITOSAMENTE ===\n'); + res.status(200).json({ + message: 'Inscripción creada correctamente.', + data: { + id_alumno_inscrito: nuevaInscripcion.id_alumno_inscrito, + id_cuenta: usuario.id_cuenta, + id_periodo: idPeriodoActivo + } + }); } catch (error) { - console.error('Error en realizarInscripcion:', error); - //console.log('Datos recibidos para inscripción:', req.body); + console.error('\n❌ ERROR EN realizarInscripcion ❌'); + 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 + }); } }