diff --git a/package-lock.json b/package-lock.json index 4ab75d6..6979b6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "fs": "^0.0.1-security", + "gmail-send": "^1.8.14", "jsonwebtoken": "^8.5.1", "mariadb": "^2.5.3", "moment": "^2.29.1", @@ -1071,6 +1072,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gmail-send": { + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/gmail-send/-/gmail-send-1.8.14.tgz", + "integrity": "sha512-hc+4Ej7ZJtw0G5sync10pmWkpPXIabkQ+p/a92lPPTXni3ChEU9sR2wxOvK6Hx+5Ou+2m9h1cVffWEgtR6Gzkw==", + "dependencies": { + "lodash": "^4.17.21", + "nodemailer": "^6.6.5" + } + }, "node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -1757,6 +1767,14 @@ "node": "4.x || >=6.0.0" } }, + "node_modules/nodemailer": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.2.tgz", + "integrity": "sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemon": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", @@ -3558,6 +3576,15 @@ "ini": "2.0.0" } }, + "gmail-send": { + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/gmail-send/-/gmail-send-1.8.14.tgz", + "integrity": "sha512-hc+4Ej7ZJtw0G5sync10pmWkpPXIabkQ+p/a92lPPTXni3ChEU9sR2wxOvK6Hx+5Ou+2m9h1cVffWEgtR6Gzkw==", + "requires": { + "lodash": "^4.17.21", + "nodemailer": "^6.6.5" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -4092,6 +4119,11 @@ "whatwg-url": "^5.0.0" } }, + "nodemailer": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.2.tgz", + "integrity": "sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q==" + }, "nodemon": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", diff --git a/package.json b/package.json index 0499c97..50c72ff 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "fs": "^0.0.1-security", + "gmail-send": "^1.8.14", "jsonwebtoken": "^8.5.1", "mariadb": "^2.5.3", "moment": "^2.29.1", diff --git a/server/controller/Admin/validarSinTicket.js b/server/controller/Admin/validarSinTicket.js index 1d5ad3c..a1d5268 100644 --- a/server/controller/Admin/validarSinTicket.js +++ b/server/controller/Admin/validarSinTicket.js @@ -4,23 +4,31 @@ const Usuario = require(`${dbPath}/Usuario`); const { usuarioInscrito } = require('../../config/mariadb.conf'); const validarSinTicket = async (body) => { - return usuarioInscrito(body.numeroCuenta, 0) - .then((res) => { - return Inscripcion.update( - { - validacion: 1, - }, - { - where: { - idUsuario: body.idUsuario, - validacion: 2, - }, - } - ); - }) + // return usuarioInscrito(body.numeroCuenta, 0) + // .then((res) => { + // return Inscripcion.update( + // { + // validacion: 1, + // }, + // { + // where: { + // idUsuario: body.idUsuario, + // }, + // } + // ); + // }) + return Inscripcion.update( + { + validacion: 1, + }, + { + where: { + idUsuario: body.idUsuario, + }, + } + ) .then((res) => ({ - message: - 'Tu inscripción está sujeta a validación, en caso de no ser correcta o veraz el servicio será suspendido.', + message: '¡El ticket a sido validado de forma correcta!', })) .catch((err) => { throw new Error('¡ No fue posible validar la inscripción !. '); diff --git a/server/controller/Admin/validarTicket.js b/server/controller/Admin/validarTicket.js index 30f729c..1966692 100644 --- a/server/controller/Admin/validarTicket.js +++ b/server/controller/Admin/validarTicket.js @@ -4,52 +4,57 @@ const Usuario = require(`${dbPath}/Usuario`); const { usuarioInscrito } = require('../../config/mariadb.conf'); const validarTicket = async (body) => { - return Inscripcion.findOne({ - where: { folio: body.folio }, - }) - .then((res) => { - if (!res) throw new Error('Este folio no existe'); - idUsuario = res.idUsuario; - if (body.validacion == 1) { - return Inscripcion.findOne({ - where: { folio: body.folio, validacion: 1 }, - }); - } + return ( + Inscripcion.findOne({ + where: { folio: body.folio }, }) - .then((res) => { - if (res) throw new Error('Este folio ya fue validado'); - return Inscripcion.update( - { - validacion: body.validacion, - }, - { - where: { - folio: body.folio, - }, + .then((res) => { + if (!res) throw new Error('Este folio no existe'); + idUsuario = res.idUsuario; + if (body.validacion == 1) { + return Inscripcion.findOne({ + where: { folio: body.folio, validacion: 1 }, + }); } - ); - }) - .then((res) => { - if (body.validacion === 0) - throw new Error( - 'El administrador a declinado el ticket, ya que los datos no coinciden.' + }) + .then((res) => { + if (res) throw new Error('Este folio ya fue validado'); + return Inscripcion.update( + { + validacion: body.validacion, + }, + { + where: { + folio: body.folio, + }, + } ); - }) - .then((res) => { - return Usuario.findOne({ - where: { idUsuario }, - attributes: ['numeroCuenta'], - }).then((res) => { - return usuarioInscrito(res.numeroCuenta, 1).then(async (res) => { - return { - message: '¡ El ticket a sido validado de forma correcta !', - }; - }); - }); - }) - .catch((err) => { - throw new Error('No fue posible validar el ticket. ' + err); - }); + }) + .then((res) => { + if (body.validacion === 0) + throw new Error( + 'El administrador a declinado el ticket, ya que los datos no coinciden.' + ); + }) + // .then((res) => { + // return Usuario.findOne({ + // where: { idUsuario }, + // attributes: ['numeroCuenta'], + // }).then((res) => { + // return usuarioInscrito(res.numeroCuenta, 1).then(async (res) => { + // return { + // message: '¡ El ticket a sido validado de forma correcta !', + // }; + // }); + // }); + // }) + .then((res) => ({ + message: '¡El ticket a sido validado de forma correcta!', + })) + .catch((err) => { + throw new Error('No fue posible validar el ticket. ' + err); + }) + ); }; module.exports = validarTicket; diff --git a/server/controller/Usuario/inscripcionUsuario.js b/server/controller/Usuario/inscripcionUsuario.js index 23c11b1..85e9953 100644 --- a/server/controller/Usuario/inscripcionUsuario.js +++ b/server/controller/Usuario/inscripcionUsuario.js @@ -2,7 +2,8 @@ const moment = require('moment'); const fs = require('fs'); const { validarNumeroEntero, validarNumero } = require('../../helper/validar'); const { eliminarArchivo } = require('../../helper/helper'); -const { usuarioInscrito } = require('../../config/mariadb.conf'); +const gmail = require('../../helper/gmail'); +const correoInscripciones = require('../../helper/correo'); const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); @@ -13,6 +14,9 @@ const inscripcion = async (body, file) => { const monto = validarNumero(body.monto, 'monto', true); const folio = body.folio; + let correo = {}; + let email = ''; + return Inscripcion.findOne({ where: { folio }, }) @@ -22,6 +26,8 @@ const inscripcion = async (body, file) => { where: { idUsuario, idArea, cancelacion: 0 }, }).then((res) => { if (res) throw new Error('Ya estas registrado en esta área'); + email = `419085500@pcpuma.acatlan.unam.mx`; + correo = correoInscripciones(); if (file && folio && body.fechaTicket) { return Inscripcion.create({ idUsuario, @@ -47,6 +53,7 @@ const inscripcion = async (body, file) => { .then((res) => { if (file) fs.renameSync(file.path, file.path + '.' + file.mimetype.split('/')[1]); + gmail(correo.subject, email, correo.msj); }) .then((res) => ({ message: diff --git a/server/helper/correo.js b/server/helper/correo.js new file mode 100644 index 0000000..ccd4426 --- /dev/null +++ b/server/helper/correo.js @@ -0,0 +1,14 @@ +const correoInscripciones = () => ({ + subject: `Inscripción a CEDETEC`, + msj: `Estimado usuario, su inscripción se realizo con éxito. + +

+ Para poder hacer uso de las instalaciones de CEDETEC, por favor confirma tu inscripción en el el siguiente link. +

+ + KALINGA + + `, +}); + +module.exports = correoInscripciones; diff --git a/server/helper/gmail.js b/server/helper/gmail.js index ef90ff3..464a4a1 100644 --- a/server/helper/gmail.js +++ b/server/helper/gmail.js @@ -9,7 +9,6 @@ const gmail = (subject, to, text) => { return new Promise((resolve, reject) => { send({ subject, to, text }, (error, result, fullResult) => { if (error) reject(error); - console.log(fullResult); resolve(result); }); });