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