Files
hackApi/routes/registro.js
T
2020-08-03 22:17:21 -05:00

212 lines
6.6 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
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
html: "<b>Hello world?</b>",
});
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}]
// }
app.post('/registro', async(req, res) => {
let body = req.body;
let idEquipo = 1;
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;
}
}
catch(error){
let men = `Errror al buscar el correo ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
try{
let cad = `INSERT INTO Equipo VALUES (null, '${body.nombreEqui}', '${body.desafio}', '${body.campus}', ${body.numeroIntegrantes}, false);`;
await query(cad);
cad = `SELECT COUNT(*) as num FROM Equipo;`;
let ans = await query(cad);
// console.log(`respuesta: ${ans}`);
// for(key in ans){
// console.log(` ${key} : ${ans[key]}`);
// for(key2 in ans[key]){
// console.log(` ${key2} : ${ans[key][key2]}`);
// }
// }
// console.log(`aqui: ${ans[0].num}`);
idEquipo = ans[0].num;
}
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}', null, 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