Files
hackApi/routes/registro.js
T

213 lines
6.6 KiB
JavaScript
Raw Normal View History

2020-07-05 19:21:09 -05:00
const connection = require('../conf/connection.js');
const express = require('express');
2020-08-02 19:21:23 -05:00
const nodemailer = require("nodemailer");
2020-08-03 22:17:21 -05:00
var app = express()
2020-08-02 19:21:23 -05:00
2020-08-03 22:17:21 -05:00
async function sendEmail( destination ) {
2020-08-02 19:21:23 -05:00
// 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({
2020-08-03 22:17:21 -05:00
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'
},
2020-08-02 19:21:23 -05:00
});
// send mail with defined transport object
let info = await transporter.sendMail({
2020-08-03 22:17:21 -05:00
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
2020-08-03 23:39:25 -05:00
Inscripciones 11 al 22 de agosto 2020
2020-08-03 22:17:21 -05:00
Capacitación 5 de agosto al 10 de septiembre 2020
2020-08-03 23:39:25 -05:00
Hackaton 11 al 12 de septiembre 2020
2020-08-03 22:17:21 -05:00
2020-08-03 23:39:25 -05:00
Presentación proyectos 13 de septiembre 2020
2020-08-03 22:17:21 -05:00
Premiación 13 de septiembre 2020
Una vez inscrito, se compartirán más detalles ¡Preparte!.`, // plain text body
2020-08-03 23:39:25 -05:00
2020-08-02 19:21:23 -05:00
});
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...
}
2020-07-05 19:21:09 -05:00
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
2020-07-05 23:23:45 -05:00
if (error){
reject(error);
}
2020-07-05 19:21:09 -05:00
resolve(results);
2020-07-05 23:23:45 -05:00
console.log("si pasa por aqui");
2020-07-05 19:21:09 -05:00
});
})
}
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) => {
2020-07-05 23:23:45 -05:00
2020-07-05 19:21:09 -05:00
let body = req.body;
let idEquipo = 1;
try{
2020-07-06 01:00:25 -05:00
let n_correo = depurado( body.correoLider);
2020-07-05 19:21:09 -05:00
let cad = `SELECT * FROM Persona WHERE correo='${n_correo}' AND lider = true;`;
let respuesta = await query(cad);
2020-08-02 19:21:23 -05:00
console.log(respuesta);
2020-07-05 19:21:09 -05:00
if (respuesta.length != 0) {
2020-07-06 01:13:56 -05:00
2020-07-05 23:23:45 -05:00
console.log( "El correo del lider ya fue registrado anteriormente");
2020-07-05 19:21:09 -05:00
res.status(400).json({ error: false, msj: "El correo del lider ya fue registrado anteriormente" });
return;
}
}
catch(error){
2020-07-06 01:13:56 -05:00
2020-07-05 19:21:09 -05:00
let men = `Errror al buscar el correo ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
2020-07-06 01:00:25 -05:00
return;
2020-07-05 19:21:09 -05:00
}
try{
2020-08-03 22:17:21 -05:00
let cad = `INSERT INTO Equipo VALUES (null, '${body.nombreEqui}', '${body.desafio}', '${body.campus}', ${body.numeroIntegrantes}, false);`;
2020-07-05 19:21:09 -05:00
await query(cad);
2020-07-06 01:57:49 -05:00
cad = `SELECT COUNT(*) as num FROM Equipo;`;
2020-07-05 19:21:09 -05:00
let ans = await query(cad);
2020-07-06 01:57:49 -05:00
// 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;
2020-07-05 19:21:09 -05:00
}
catch(error){
2020-07-06 01:13:56 -05:00
2020-07-05 19:21:09 -05:00
let men = `Error al registar Equipo ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
2020-07-06 01:00:25 -05:00
return;
2020-07-05 19:21:09 -05:00
}
// 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];
2020-07-06 01:00:25 -05:00
let c = depurado(row.correo);
let cad = `INSERT INTO Persona VALUES ( null, ${idEquipo}, '${row.nombre}', '${row.apellidoPa}', '${row.apellidoMa}', '${c}', null, false );`;
2020-07-05 19:21:09 -05:00
await query(cad);
}
2020-07-06 01:00:25 -05:00
let c = depurado(body.correoLider);
let cad = `INSERT INTO Persona VALUES ( null, ${idEquipo}, '${body.nombreLider}', '${body.apellidoPaLider}', '${body.apellidoMaLider}', '${c}', '${body.carreraLider}', true );`;
2020-07-05 19:21:09 -05:00
await query(cad);
}
catch(error){
2020-07-06 01:13:56 -05:00
2020-07-05 19:21:09 -05:00
let men = `Error al registar Integrantes ${error}`
console.log(men);
res.status(400).json({ error: true, msj: men });
2020-07-06 01:00:25 -05:00
return;
2020-07-05 19:21:09 -05:00
}
2020-07-06 01:00:25 -05:00
try{
2020-08-03 22:17:21 -05:00
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});
2020-07-06 01:00:25 -05:00
return;
2020-08-03 22:17:21 -05:00
}).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);
2020-07-06 01:00:25 -05:00
res.status(200).json({ error: false, msj: "exito"});
return;
});
2020-08-03 22:17:21 -05:00
2020-07-06 01:00:25 -05:00
}
catch(error){
let men = `Error al enviar mensaje: ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
2020-07-06 01:13:56 -05:00
2020-07-06 01:00:25 -05:00
return;
2020-07-05 19:21:09 -05:00
2020-07-06 01:00:25 -05:00
}
2020-07-05 19:21:09 -05:00
});
module.exports = app