Files
2020-08-16 00:19:39 -05:00

260 lines
8.3 KiB
JavaScript

const connection = require('../conf/connection.js');
const express = require('express');
const nodemailer = require("nodemailer");
var app = express()
async function sendEmail( destination ) {
// Generate test SMTP service account from ethereal.email
// Only needed if you don't have a real mail account for testing
let testAccount = await nodemailer.createTestAccount();
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "smtp-mail.outlook.com",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'hackatonaws@unam.mx', // generated ethereal user
pass: 'H4ck4#20'
},
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"Hackaton UNAM-AWS" <hackatonaws@unam.mx>', // sender address
to: `"${destination}"`, // list of receivers
subject: "Registro Exitoso Hackaton UNAM-AWS 2020", // Subject line
text: `Tu registro se ha realizado de manera correcta es importante que considere el equipo la asistencia a las siguientes actividades
Inscripciones 11 al 22 de agosto 2020
Capacitación 5 de agosto al 10 de septiembre 2020
Hackaton 11 al 12 de septiembre 2020
Presentación proyectos 13 de septiembre 2020
Premiación 13 de septiembre 2020
Una vez inscrito, se compartirán más detalles ¡Preparte!.`, // plain text body
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error){
reject(error);
}
resolve(results);
console.log("si pasa por aqui");
});
})
}
function depurado(cadena) {
if (cadena != null)
return cadena.replace(/'/g, "''");
else
return null;
}
// {
// desafio:
// campus:
// numeroIntegrantes:
// nombreLider:
// apellidoPaLider:
// apellidoMaLider:
// correoLider:
// carreraLider:
// integrantes: [{nombre: , apellidoPa, apellidoMa, correo}]
// }
// CREATE TABLE `Persona` (
// `idPersona` integer PRIMARY KEY NOT NULL AUTO_INCREMENT,
// `idEquipo` integer,
// `nombre` varchar(100),
// `apellidoP` varchar(100),
// `apellidoM` varchar(100),
// `correo` varchar(100),
// `carrera` varchar(100),
// `lider` boolean
// );
app.post('/registro', async(req, res) => {
console.log(` Entor a registrarce `);
let body = req.body;
let idEquipo;
try{
if(body.desafio.length > 99 || body.campus.length > 99 || body.numeroIntegrantes.length > 99 || body.nombreEqui.length > 99 || body.carreraLider.length > 99 ){
let men = `Datos no validos, exeso de tamaño`;
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
for( let i=0; i < body.integrantes.length; i++){
let row = body.integrantes[i];
if(row.nombre.length > 99 || row.apellidoPa.length > 99 || row.apellidoMa.length > 99 || row.correo.length > 99 ){
let men = `Datos no validos, exeso de tamaño`;
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
}
}
catch(error){
let men = `No se pudieron validar los datos, desc: ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men, desc: error });
return;
}
try{
let n_correo = depurado( body.correoLider);
let cad = `SELECT * FROM Persona WHERE correo='${n_correo}' AND lider = true;`;
let respuesta = await query(cad);
console.log(respuesta);
if (respuesta.length != 0) {
console.log( "El correo del lider ya fue registrado anteriormente");
res.status(400).json({ error: false, msj: "El correo del lider ya fue registrado anteriormente" });
return;
}
cad = `SELECT * FROM Equipo WHERE nombre='${body.nombreEqui}';`;
respuesta = await query(cad);
console.log(respuesta);
if (respuesta.length != 0) {
console.log( "El nombre del Equipo ya fue registrado anteriormente");
res.status(400).json({ error: false, msj: "El nombre del Equipo ya fue registrado anteriormente" });
return;
}
}
catch(error){
let men = `Errror al buscar el correo ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
try{
let fecha = new Date();
let cad = `INSERT INTO Equipo VALUES (null, '${body.nombreEqui}', '${body.desafio}', '${body.campus}', ${body.numeroIntegrantes}, false, NOW());`;
let sqlAnswer = await query(cad);
cad = `SELECT LAST_INSERT_ID() as idEquipo;`;
sqlAnswer = await query(cad);
sqlAnswer = sqlAnswer[0];
idEquipo = sqlAnswer.idEquipo;
console.log(` ****************IDEUQIPO ${idEquipo}`);
}
catch(error){
let men = `Error al registar Equipo ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
// CREATE TABLE `Persona` (
// `idPersona` integer PRIMARY KEY NOT NULL AUTO_INCREMENT,
// `idEquipo` integer,
// `nombre` varchar(100),
// `apellidoP` varchar(100),
// `apellidoM` varchar(100),
// `correo` varchar(100),
// `carrera` varchar(100),
// `lider` boolean
// );
try{
for( let i=0; i < body.integrantes.length; i++){
let row = body.integrantes[i];
let c = depurado(row.correo);
let cad = `INSERT INTO Persona VALUES ( null, ${idEquipo}, '${row.nombre}', '${row.apellidoPa}', '${row.apellidoMa}', '${c}', '${body.carreraLider}', false );`;
await query(cad);
}
let c = depurado(body.correoLider);
let cad = `INSERT INTO Persona VALUES ( null, ${idEquipo}, '${body.nombreLider}', '${body.apellidoPaLider}', '${body.apellidoMaLider}', '${c}', '${body.carreraLider}', true );`;
await query(cad);
}
catch(error){
let men = `Error al registar Integrantes ${error}`
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
try{
await sendEmail(`${body.correoLider}`).catch(async error =>{
console.log('Not email: ' + error);
res.status(400).json({ error: true, msj: "No se pudo enviar el Correo pero tu incripción fue exitosa", correo: false});
return;
}).then( async ans=>{
let queryCad = `UPDATE Equipo SET notificaInscripcion=true WHERE idEquipo=${idEquipo};`
await query(queryCad).catch(error=> {
console.log('Not send: ' + error);
res.status(400).json({ error: true, msj: "No se pudo enviar el Correo pero tu incripción fue exitosa", correo: false});
return;
});
console.log('Email si fue enviado: ' + ans);
res.status(200).json({ error: false, msj: "exito"});
return;
});
}
catch(error){
let men = `Error al enviar mensaje: ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
});
module.exports = app