const connection = require('../conf/connection.js'); const express = require('express'); const nodemailer = require("nodemailer"); async function main() { // 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.ethereal.email", port: 587, secure: false, // true for 465, false for other ports auth: { // user: 'hackatonaws@unam.mx', // pass: 'H4ck4#20' user: 'hackaton-test@pcpuma.acatlan.unam.mx', // generated ethereal user pass: 'H4cka-T3st', // generated ethereal password }, }); // send mail with defined transport object let info = await transporter.sendMail({ from: '"Fred Foo 👻" ', // sender address to: "bar@example.com, baz@example.com", // list of receivers subject: "Hello ✔", // Subject line text: "Hello world?", // plain text body html: "Hello world?", // html body }); console.log("Message sent: %s", info.messageId); // Message sent: // Preview only available when sending through an Ethereal account console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info)); // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou... } 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); 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});`; 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{ var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'hackaton-test@pcpuma.acatlan.unam.mx', pass: 'H4cka-T3st' } }); var mailOptions = { from: ` hackatonaws@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: Agosto 1-2 // Una vez inscrito, se compartirán más detalles.` html: `

Image:

GIF (requires "amp-anim" script in header):

` }; await transporter.sendMail(mailOptions, function(error, info){ // main().catch(error =>{ // console.error if(error){ let men = `Error al enviar mensaje: ${error}`; console.log(men); res.status(400).json({ error: true, msj: men }); return; }else { console.log('Email sent: ' + info.response); 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