90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
const Invitado = require('../../db/tablas/Invitado');
|
|
const Profesor = require('../../db/tablas/Profesor');
|
|
const Premiacion = require('../../db/tablas/Premiacion');
|
|
const validar = require('../../helper/validar');
|
|
const { correo } = require('../../helper/correos');
|
|
const gmail = require('../../helper/gmail');
|
|
const ProfesorPremiacion = require('../../db/tablas/ProfesorPremiacion');
|
|
|
|
const infoInvitados = async (body) => {
|
|
const idProfesor = validar.validarNumeroEntero(body.idProfesor, 'idProfesor');
|
|
const idPremiacion = validar.validarNumeroEntero(
|
|
body.idPremiacion,
|
|
'idPremiacion'
|
|
);
|
|
const invitados = body.invitados;
|
|
const numeroInvitados = invitados.length;
|
|
|
|
const premiacion = await Premiacion.findOne({ where: idPremiacion });
|
|
if (!premiacion)
|
|
throw new Error('No existe ninguna premiación con este id con este id.');
|
|
|
|
invitados.forEach((invitado) => {
|
|
if (invitado.edad < 12)
|
|
throw new Error(
|
|
'Alguno de sus invitados no cuenta con la edad suficiente.'
|
|
);
|
|
});
|
|
|
|
if (numeroInvitados > 3)
|
|
throw new Error('El número de invitados no puede ser mayor que 3.');
|
|
|
|
const profPrem = await ProfesorPremiacion.findOne({
|
|
where: { idProfesor, idPremiacion },
|
|
});
|
|
if (!profPrem)
|
|
throw new Error(
|
|
'No existe ningún profesor con este id en esta premiación.'
|
|
);
|
|
if (profPrem.numeroInvitados)
|
|
throw new Error('A este profesor ya se le han guardado sus invitados.');
|
|
profPrem.update({ numeroInvitados: numeroInvitados });
|
|
|
|
const respuesta = [];
|
|
for (let i = 0; i < numeroInvitados; i++) {
|
|
const invitado = invitados[i];
|
|
const nombre = validar.validacionBasicaStr(
|
|
invitado.nombreCompleto,
|
|
`nombre completo invitado ${i + 1}`,
|
|
true
|
|
);
|
|
const edad = validar.validarNumeroEntero(
|
|
invitado.edad,
|
|
`edad invitado ${i + 1}`,
|
|
false
|
|
);
|
|
|
|
const res = await Invitado.create({
|
|
nombreCompleto: nombre,
|
|
edad: edad,
|
|
idProfesor: idProfesor,
|
|
idPremiacion: idPremiacion,
|
|
});
|
|
if (!res)
|
|
throw new Error('No se ha podido ingresar los datos del invitado');
|
|
respuesta.push(res);
|
|
}
|
|
|
|
const Mail = correo(
|
|
profPrem.idProfesor,
|
|
profPrem.idPremiacion,
|
|
premiacion.premiacion,
|
|
premiacion.fecha,
|
|
premiacion.hora
|
|
);
|
|
|
|
const dataProf = await Profesor.findOne({ where: idProfesor });
|
|
gmail(
|
|
Mail.subject,
|
|
// `jeremy@acatlan.unam.mx`,
|
|
`${dataProf.numeroTrabajador}@pcpuma.acatlan.unam.mx`,
|
|
Mail.message
|
|
);
|
|
return {
|
|
message:
|
|
'Se registró correctamente sus invitados. Se enviaron los pases de entrada a su correo institucional pcpuma.',
|
|
};
|
|
};
|
|
|
|
module.exports = infoInvitados;
|