Files
hackApi/routes/registro.js
T
2020-07-06 01:00:25 -05:00

177 lines
5.1 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const connection = require('../conf/connection.js');
const express = require('express');
var nodemailer = require('nodemailer');
var app = express()
// ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'georgechido'
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);
if (respuesta.length != 0) {
connection.end();
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){
connection.end();
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});`;
await query(cad);
cad = `SELECT COUNT(*) FROM Equipo;`;
let ans = await query(cad);
console.log(`respuesta: ${ans}`);
}
catch(error){
connection.end();
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){
connection.end();
let men = `Error al registar Integrantes ${error}`
console.log(men);
res.status(400).json({ error: true, msj: men });
return;
}
try{
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: ' hackaton-test@pcpuma.acatlan.unam.mx',
pass: 'H4cka-T3st'
}
});
var mailOptions = {
from: ` hackaton-test@pcpuma.acatlan.unam.mx`,
to: `${body.correoLider}`,
subject: 'Registro HACKATHON VIRTUAL',
text: `Tu registro se ha realizado de manera correcta es importante que considere el equipo la asistencia a las siguientes actividades
Primer Taller: Julio 14
Segundo Taller: Julio 16
Tercer Taller: Julio 22
Cuarto Taller: Julio 28
Hackathon: Agosgto 1-2
Una vez inscrito, se compartirán más detalles.`
};
await transporter.sendMail(mailOptions, function(error, info){
if (error) {
let men = `Error al enviar mensaje: ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
connection.end();
return;
} else {
console.log('Email sent: ' + info.response);
res.status(200).json({ error: false, msj: "exito"});
connection.end();
return;
}
});
}
catch(error){
let men = `Error al enviar mensaje: ${error}`;
console.log(men);
res.status(400).json({ error: true, msj: men });
connection.end();
return;
}
});
module.exports = app