Cambios en el back de inscripciones

This commit is contained in:
santiago
2025-07-28 15:33:09 -06:00
parent 2d7cf996d2
commit 58368a6929
16 changed files with 442 additions and 10 deletions
@@ -0,0 +1,38 @@
const { buscarProfesorPorNumero } = require('../../config/mariadb.conf');
const Inscripcion = require('../../db/tablas/Inscripcion');
async function buscarProfesor(req, res) {
const { numeroTrabajador } = req.params;
try {
// Borrar esta linea de codigo
//console.log('Buscando profesor con RFC:', numeroTrabajador);
const profesor = await buscarProfesorPorNumero(numeroTrabajador);
if (!profesor) {
return res.status(404).json({ message: 'Profesor no encontrado' });
}
// Verificar si existe ya en la tabla de incripcion
const existeIncripcion = await Inscripcion.findOne({
where: {
idUsuario: profesor.idUsuario
}
});
if (existeIncripcion) {
return res.status(409).json({
//yaInscrito: true,
message: 'El usuario ya está inscrito.',
});
}
res.status(200).json(profesor); // { nombre, correo }
} catch (error) {
res.status(500).json({ message: error.message });
}
}
module.exports = buscarProfesor;
@@ -0,0 +1,23 @@
/*const { inscripcion } = require('../../db/tablas/Inscripcion')
const confirmacionInscripcion = async (req, res) => {
try {
const { idUsuario } = req.body;
const [update] = await inscripcion.update(
{ confirmacion: true},
{ where: { idUsuario } }
);
if (update > 0) {
return res.status(200).json({ message: 'Inscripción confirmada con éxito.'});
} else {
return res.status(404).json({ message: 'No se encontro la inscripcion para confirmar'});
}
} catch (error) {
console.error('Error al confirmar inscripcion: ', error);
return res.status(500).json({ message: 'Error al confirmar inscripcion.'});
}
}
*/
@@ -0,0 +1,33 @@
const nodemailer = require('nodemailer');
async function enviarCorreoInscripcion(correo, nombre) {
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.CORREO_ORIGEN,
pass: process.env.CORREO_PASSWORD
}
});
const mailOptions = {
from: '"CEDETEC"',
to: 'smtrabajos5@gmail.com',
subject: 'Confirmación de inscripción CEDETEC',
html: `
<ol>
<p>Estimado profesor(a) ${nombre}</p>
<p><strong>Informo que su inscripción fue realizad con éxito.</strong></p>
</ol>
<strong>¿Cómo puede hacer uso de los servicios?</strong>
<p>Es necesario revise los siguientes <a href="https://cedetec.acatlan.unam.mx/DSC/servicios#lineamientos-uso" target="_blank" style="color: blue; text-decoration: underline;">
videos
</a> para solicitar equipo en el área de profesores.</p>
<p><strong>Nota</strong>: Es importante revisar los <a href="https://cedetec.acatlan.unam.mx/DSC/servicios#videos-tutoriales" target="_blank" style="color: blue; text-decoration: underline;">
lineamientos</a> de uso para hacer uso de los servicios que ofrece el CEDETEC. </p>
`
};
await transporter.sendMail(mailOptions);
}
module.exports = enviarCorreoInscripcion;
@@ -0,0 +1,66 @@
const Usuario = require('../../db/tablas/Usuario'); // Asegúrate de importar correctamente
const inscripcion = require('../../db/tablas/Inscripcion');
const enviarCorreoInscripcion = require('../../controller/Profesor/enviarCorreo'); // Ajusta si está en otra ruta
const { where } = require('sequelize');
async function realizarInscripcion(req, res) {
const { idUsuario, nombre, numeroCuenta, correo } = req.body;
try {
if (!nombre || !numeroCuenta || !idUsuario) {
return res.status(400).json({ message: 'Faltan datos requeridos.' });
}
// 1. Buscar si el usuario existe
const usuario = await Usuario.findOne({ where: { numeroCuenta } });
if (!usuario) {
return res.status(404).json({ message: 'Usuario no encontrado en la base de datos.' });
}
// 2. Verificar si ya tiene inscripción
const inscripcionExistente = await inscripcion.findOne({
where: { idUsuario: usuario.idUsuario }
});
if (inscripcionExistente) {
return res.status(200).json({
yaInscrito: true,
message: 'El usuario ya está inscrito.',
});
}
// 3. Crear inscripción
await inscripcion.create({
idUsuario: usuario.idUsuario,
idArea: 1, // Cambiar si se requiere otro valor
validacion: 2,
confirmacion: false,
folio: null,
monto: null,
hizoPago: null,
rutaTicket: null,
extension: null,
fechaInscripcion: null, // fechaInscripcion: new Date()
fechaTicket: null
});
// 4. Realizar confirmacion
await inscripcion.update(
{ confirmacion: true },
{ where: { idUsuario: usuario.idUsuario } }
);
// 5. Enviar correo
await enviarCorreoInscripcion(correo, nombre);
// 6. Respuesta final
res.status(200).json({ message: 'Inscripción creada y correo enviado correctamente.' });
} catch (error) {
console.error('Error en realizarInscripcion:', error);
res.status(500).json({ message: 'Error al procesar la inscripción o enviar el correo.' });
}
}
module.exports = { realizarInscripcion };