From e8305da5a3a1d75d2952038d5e2de5296dd323d1 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Tue, 15 Mar 2022 00:23:09 -0600 Subject: [PATCH 01/11] Cambios en la tablas, y agregamos la confirmacion --- server/config/mariadb.conf.js | 10 +++++----- server/controller/Usuario/escolares.js | 17 +++++++---------- server/controller/Usuario/inscripciones.js | 4 ++-- server/controller/Usuario/login.js | 1 - server/db/tablas/Inscripcion.js | 5 ++--- server/db/tablas/Usuario.js | 4 ++-- 6 files changed, 18 insertions(+), 23 deletions(-) diff --git a/server/config/mariadb.conf.js b/server/config/mariadb.conf.js index 7c2f44c..b7adb34 100644 --- a/server/config/mariadb.conf.js +++ b/server/config/mariadb.conf.js @@ -8,17 +8,17 @@ const pool = mariadb.createPool({ database: process.env.SAT_DB, }); -const obtenerIdCarrera = async (numeroCuenta) => { +const obtenerDatosUsr = async (numeroCuenta) => { const conn = await pool.getConnection().catch((err) => { throw new Error('No se pudo conectar con la db. ' + err); }); return conn - .query(`SELECT id_carrera FROM alumno WHERE id_cuenta = ${numeroCuenta}`) + .query( + `SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}` + ) .then((rows) => { conn.end(); - // console.log(rows[0]); - // if (rows[0].length === 0) return null; return rows[0]; }) .catch((err) => { @@ -63,4 +63,4 @@ const usuarioInscrito = async (numeroCuenta, realizoPago) => { }); }; -module.exports = { obtenerIdCarrera, obtenerCarrera, usuarioInscrito }; +module.exports = { obtenerDatosUsr, obtenerCarrera, usuarioInscrito }; diff --git a/server/controller/Usuario/escolares.js b/server/controller/Usuario/escolares.js index b1588d1..9c5b315 100644 --- a/server/controller/Usuario/escolares.js +++ b/server/controller/Usuario/escolares.js @@ -1,25 +1,22 @@ -const { - obtenerIdCarrera, - obtenerCarrera, -} = require('../../config/mariadb.conf'); -const validar = require('../../helper/validar'); +const { obtenerDatosUsr } = require('../../config/mariadb.conf'); +const { validarNumeroEntero } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Usuario = require(`${dbPath}/Usuario`); const escolares = async (body) => { - // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); + const idUsuario = validarNumeroEntero(body.idUsuario, 'id Usuario', true); return Usuario.findOne({ where: { numeroCuenta: body.numeroCuenta }, }).then((res) => { if (!res) { - return obtenerIdCarrera(body.numeroCuenta).then(async (res) => { + return obtenerDatosUsr(body.numeroCuenta).then(async (res) => { return Usuario.create({ - idUsuario: body.idUsuario, + idUsuario, numeroCuenta: body.numeroCuenta, nombre: body.nombre, - semestre: 8, + generacion: res.generacion, carrera: body.carrera, idCarrera: res.id_carrera, }); @@ -31,7 +28,7 @@ const escolares = async (body) => { 'idUsuario', 'numeroCuenta', 'nombre', - 'semestre', + 'generacion', 'idCarrera', 'carrera', ], diff --git a/server/controller/Usuario/inscripciones.js b/server/controller/Usuario/inscripciones.js index 78aa9ad..0c78f09 100644 --- a/server/controller/Usuario/inscripciones.js +++ b/server/controller/Usuario/inscripciones.js @@ -1,9 +1,10 @@ const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; -const Carrera = require(`${dbPath}/Carrera`); const Inscripcion = require(`${dbPath}/Inscripcion`); const inscripciones = async (body) => { + // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); + return Inscripcion.findAll({ where: { idUsuario: body.idUsuario }, }).then((res) => { @@ -13,7 +14,6 @@ const inscripciones = async (body) => { attributes: [ 'idInscripcion', 'validacion', - 'confirmacion', 'folio', 'monto', 'idUsuario', diff --git a/server/controller/Usuario/login.js b/server/controller/Usuario/login.js index 1e05a0c..7e1ed2b 100644 --- a/server/controller/Usuario/login.js +++ b/server/controller/Usuario/login.js @@ -13,7 +13,6 @@ const login = async (body) => { passwordUser: body.passwordUser, }; - console.log(numeroCuenta, body.passwordUser); return axios .post( `https://venus.acatlan.unam.mx/conexionEscolares_test/ingresarAlumno`, diff --git a/server/db/tablas/Inscripcion.js b/server/db/tablas/Inscripcion.js index 646e342..27b0bca 100644 --- a/server/db/tablas/Inscripcion.js +++ b/server/db/tablas/Inscripcion.js @@ -18,10 +18,9 @@ Inscripcion.init( type: DataTypes.INTEGER, defaultValue: 2, }, - confirmacion: { + cancelacion: { type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: false, + defaultValue: 0, }, folio: { type: DataTypes.STRING(10), diff --git a/server/db/tablas/Usuario.js b/server/db/tablas/Usuario.js index abb094a..e148432 100644 --- a/server/db/tablas/Usuario.js +++ b/server/db/tablas/Usuario.js @@ -22,8 +22,8 @@ Usuario.init( allowNull: true, defaultValue: null, }, - semestre: { - type: DataTypes.STRING(30), + generacion: { + type: DataTypes.STRING(5), allowNull: false, }, idCarrera: { From c5f488a7c91d1214989362f9b33125311c044b9c Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Tue, 15 Mar 2022 00:56:24 -0600 Subject: [PATCH 02/11] validacion en escolares --- server/controller/Usuario/escolares.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/controller/Usuario/escolares.js b/server/controller/Usuario/escolares.js index 9c5b315..f7bbae4 100644 --- a/server/controller/Usuario/escolares.js +++ b/server/controller/Usuario/escolares.js @@ -1,11 +1,11 @@ const { obtenerDatosUsr } = require('../../config/mariadb.conf'); -const { validarNumeroEntero } = require('../../helper/validar'); +const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Usuario = require(`${dbPath}/Usuario`); const escolares = async (body) => { - const idUsuario = validarNumeroEntero(body.idUsuario, 'id Usuario', true); + // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); return Usuario.findOne({ where: { numeroCuenta: body.numeroCuenta }, @@ -13,7 +13,7 @@ const escolares = async (body) => { if (!res) { return obtenerDatosUsr(body.numeroCuenta).then(async (res) => { return Usuario.create({ - idUsuario, + idUsuario: body.idUsuario, numeroCuenta: body.numeroCuenta, nombre: body.nombre, generacion: res.generacion, From 52a6cb614bc089cd51801d55569dbffb2b9e8854 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Tue, 15 Mar 2022 18:26:51 -0600 Subject: [PATCH 03/11] actualizacion del ticket --- server/controller/Admin/actualizarTicket.js | 39 +++++++++++++++++++ .../controller/Admin/cancelarInscripcion.js | 31 +++++++++++++++ server/controller/Admin/todasInscripciones.js | 2 +- server/controller/Admin/validarSinTicket.js | 1 - server/controller/Admin/validarTicket.js | 9 +++-- server/routes/Admin.js | 23 ++++++++++- 6 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 server/controller/Admin/actualizarTicket.js create mode 100644 server/controller/Admin/cancelarInscripcion.js diff --git a/server/controller/Admin/actualizarTicket.js b/server/controller/Admin/actualizarTicket.js new file mode 100644 index 0000000..bdfd17b --- /dev/null +++ b/server/controller/Admin/actualizarTicket.js @@ -0,0 +1,39 @@ +const dbPath = '../../db/tablas'; +const { validarNumeroEntero } = require('../../helper/validar'); +const Inscripcion = require(`${dbPath}/Inscripcion`); + +const actualizarTicket = async (body) => { + const idInscripcion = validarNumeroEntero( + body.idInscripcion, + 'id Inscripcion', + true + ); + + return Inscripcion.findOne({ + where: { idInscripcion }, + }) + .then((res) => { + if (!res) throw new Error('No pudimos encontrar este ticket.'); + return Inscripcion.update( + { + folio: body.folio, + monto: body.monto, + fechaTicket: body.fechaTicket, + }, + { + where: { + idInscripcion, + }, + } + ); + }) + .then((res) => ({ + message: + '¡ Los datos de la inscripción fueron actualizados de forma correcta !', + })) + .catch((err) => { + throw new Error('No fue posible validar el ticket. ' + err); + }); +}; + +module.exports = actualizarTicket; diff --git a/server/controller/Admin/cancelarInscripcion.js b/server/controller/Admin/cancelarInscripcion.js new file mode 100644 index 0000000..0322e6e --- /dev/null +++ b/server/controller/Admin/cancelarInscripcion.js @@ -0,0 +1,31 @@ +const dbPath = '../../db/tablas'; +const Inscripcion = require(`${dbPath}/Inscripcion`); +const Usuario = require(`${dbPath}/Usuario`); + +const cancelarInscripcion = async (body) => { + return Inscripcion.findOne({ + where: { idUsuario: body.idUsuario, folio: body.usuario }, + }) + .then((res) => { + if (!res) throw new Error('Lo sentimos esta inscripción no existe.'); + return Inscripcion.update( + { + cancelacion: 1, + }, + { + where: { + idUsuario: body.idUsuario, + folio: body.usuario, + }, + } + ); + }) + .then((res) => ({ + message: '¡ Esta inscripción fue cancelada de forma correcta !', + })) + .catch((err) => { + throw new Error('¡ No fue posible validar la inscripción !. '); + }); +}; + +module.exports = cancelarInscripcion; diff --git a/server/controller/Admin/todasInscripciones.js b/server/controller/Admin/todasInscripciones.js index a98066c..2219161 100644 --- a/server/controller/Admin/todasInscripciones.js +++ b/server/controller/Admin/todasInscripciones.js @@ -7,7 +7,7 @@ const Inscripcion = require(`${dbPath}/Inscripcion`); const todasInscripciones = async (body) => { // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); return Inscripcion.findAll({ - where: { validacion: body.validacion }, + where: { validacion: body.validacion, cancelacion: 0 }, include: [ { model: Usuario, diff --git a/server/controller/Admin/validarSinTicket.js b/server/controller/Admin/validarSinTicket.js index 334b979..1d5ad3c 100644 --- a/server/controller/Admin/validarSinTicket.js +++ b/server/controller/Admin/validarSinTicket.js @@ -4,7 +4,6 @@ const Usuario = require(`${dbPath}/Usuario`); const { usuarioInscrito } = require('../../config/mariadb.conf'); const validarSinTicket = async (body) => { - console.log(body.numeroCuenta); return usuarioInscrito(body.numeroCuenta, 0) .then((res) => { return Inscripcion.update( diff --git a/server/controller/Admin/validarTicket.js b/server/controller/Admin/validarTicket.js index 2af0d49..30f729c 100644 --- a/server/controller/Admin/validarTicket.js +++ b/server/controller/Admin/validarTicket.js @@ -10,9 +10,11 @@ const validarTicket = async (body) => { .then((res) => { if (!res) throw new Error('Este folio no existe'); idUsuario = res.idUsuario; - return Inscripcion.findOne({ - where: { folio: body.folio, validacion: 1 }, - }); + if (body.validacion == 1) { + return Inscripcion.findOne({ + where: { folio: body.folio, validacion: 1 }, + }); + } }) .then((res) => { if (res) throw new Error('Este folio ya fue validado'); @@ -23,7 +25,6 @@ const validarTicket = async (body) => { { where: { folio: body.folio, - validacion: 2, }, } ); diff --git a/server/routes/Admin.js b/server/routes/Admin.js index cb5abc3..ce507b4 100644 --- a/server/routes/Admin.js +++ b/server/routes/Admin.js @@ -1,13 +1,14 @@ const express = require('express'); const app = express(); const fs = require('fs'); -const { validarAlfanumerico } = require('../helper/validar'); const { verificaToken } = require('../middleware/autentificacion'); const route = '/Admin'; const controllerPath = '../controller/Admin'; const login = require(`${controllerPath}/login`); const todasInscripciones = require(`${controllerPath}/todasInscripciones`); const ticket = require(`${controllerPath}/ticket`); +const actualizarTicket = require(`${controllerPath}/actualizarTicket`); +const cancelarInscripcion = require(`${controllerPath}/cancelarInscripcion`); const validarSinTicket = require(`${controllerPath}/validarSinTicket`); const validarTicket = require(`${controllerPath}/validarTicket`); const reporte = require(`${controllerPath}/reporte`); @@ -45,6 +46,26 @@ app.get(`${route}/ticket`, (req, res) => { }); }); +app.put(`${route}/actualizar_ticket`, verificaToken, (req, res) => { + return actualizarTicket(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.put(`${route}/cancelar_inscripcion`, verificaToken, (req, res) => { + return cancelarInscripcion(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + app.put(`${route}/validar`, verificaToken, (req, res) => { return validarTicket(req.body) .then((data) => { From 028cc45405c31c3af0466bdb6f32d34b6bf89ca4 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Tue, 15 Mar 2022 18:51:51 -0600 Subject: [PATCH 04/11] cancelacion de una inscripcion --- server/controller/Admin/cancelarInscripcion.js | 13 +++++++++---- server/controller/Usuario/inscripcionUsuario.js | 2 +- server/controller/Usuario/inscripciones.js | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/server/controller/Admin/cancelarInscripcion.js b/server/controller/Admin/cancelarInscripcion.js index 0322e6e..a72a894 100644 --- a/server/controller/Admin/cancelarInscripcion.js +++ b/server/controller/Admin/cancelarInscripcion.js @@ -1,10 +1,16 @@ const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); -const Usuario = require(`${dbPath}/Usuario`); +const { validarNumeroEntero } = require('../../helper/validar'); const cancelarInscripcion = async (body) => { + const idInscripcion = validarNumeroEntero( + body.idInscripcion, + 'id Inscripcion', + true + ); + return Inscripcion.findOne({ - where: { idUsuario: body.idUsuario, folio: body.usuario }, + where: { idInscripcion }, }) .then((res) => { if (!res) throw new Error('Lo sentimos esta inscripción no existe.'); @@ -14,8 +20,7 @@ const cancelarInscripcion = async (body) => { }, { where: { - idUsuario: body.idUsuario, - folio: body.usuario, + idInscripcion, }, } ); diff --git a/server/controller/Usuario/inscripcionUsuario.js b/server/controller/Usuario/inscripcionUsuario.js index dfb04e3..23c11b1 100644 --- a/server/controller/Usuario/inscripcionUsuario.js +++ b/server/controller/Usuario/inscripcionUsuario.js @@ -19,7 +19,7 @@ const inscripcion = async (body, file) => { .then((res) => { if (res) throw new Error('Este folio ya esta registrado'); return Inscripcion.findOne({ - where: { idUsuario, idArea }, + where: { idUsuario, idArea, cancelacion: 0 }, }).then((res) => { if (res) throw new Error('Ya estas registrado en esta área'); if (file && folio && body.fechaTicket) { diff --git a/server/controller/Usuario/inscripciones.js b/server/controller/Usuario/inscripciones.js index 0c78f09..8e52270 100644 --- a/server/controller/Usuario/inscripciones.js +++ b/server/controller/Usuario/inscripciones.js @@ -10,7 +10,7 @@ const inscripciones = async (body) => { }).then((res) => { if (!res) return []; return Inscripcion.findAll({ - where: { idUsuario: body.idUsuario }, + where: { idUsuario: body.idUsuario, cancelacion: 0 }, attributes: [ 'idInscripcion', 'validacion', From 82b0d07c5ca1a1c1fccd13d701b01d9b9b1480b9 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Thu, 17 Mar 2022 00:46:01 -0600 Subject: [PATCH 05/11] Correo incompleto --- package-lock.json | 32 +++++++ package.json | 1 + server/controller/Admin/validarSinTicket.js | 40 ++++---- server/controller/Admin/validarTicket.js | 91 ++++++++++--------- .../controller/Usuario/inscripcionUsuario.js | 9 +- server/helper/correo.js | 14 +++ server/helper/gmail.js | 1 - 7 files changed, 127 insertions(+), 61 deletions(-) create mode 100644 server/helper/correo.js 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); }); }); From 591905d20ee59fd6bbba8665a118b8957c78b7c3 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Thu, 17 Mar 2022 11:57:25 -0600 Subject: [PATCH 06/11] =?UTF-8?q?personalizaci=C3=B3n=20de=20correo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controller/Usuario/inscripcionUsuario.js | 4 ++-- server/helper/gmail.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/controller/Usuario/inscripcionUsuario.js b/server/controller/Usuario/inscripcionUsuario.js index 85e9953..af19aa8 100644 --- a/server/controller/Usuario/inscripcionUsuario.js +++ b/server/controller/Usuario/inscripcionUsuario.js @@ -26,7 +26,7 @@ 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`; + email = `${body.numeroCuenta}@pcpuma.acatlan.unam.mx`; correo = correoInscripciones(); if (file && folio && body.fechaTicket) { return Inscripcion.create({ @@ -53,7 +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); + return gmail(correo.subject, email, correo.msj); }) .then((res) => ({ message: diff --git a/server/helper/gmail.js b/server/helper/gmail.js index 464a4a1..eaf9a72 100644 --- a/server/helper/gmail.js +++ b/server/helper/gmail.js @@ -5,9 +5,9 @@ const send = require('gmail-send')({ pass: process.env.GMAILPASSWORD, }); -const gmail = (subject, to, text) => { +const gmail = (subject, to, html) => { return new Promise((resolve, reject) => { - send({ subject, to, text }, (error, result, fullResult) => { + send({ subject, to, html }, (error, result, fullResult) => { if (error) reject(error); resolve(result); }); From a9d148e7144482bd96e1191b001acc7fdb5aa0f5 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Fri, 18 Mar 2022 00:29:38 -0600 Subject: [PATCH 07/11] motivo de declinacion --- server/controller/Admin/reporte.js | 1 - server/controller/Admin/validarTicket.js | 87 ++++++++++++------------ server/db/tablas/Inscripcion.js | 4 ++ server/helper/correo.js | 12 +++- server/uploads/reporte.csv | 4 +- 5 files changed, 57 insertions(+), 51 deletions(-) diff --git a/server/controller/Admin/reporte.js b/server/controller/Admin/reporte.js index afff08d..e0894da 100644 --- a/server/controller/Admin/reporte.js +++ b/server/controller/Admin/reporte.js @@ -45,7 +45,6 @@ const reporte = async (body) => { data.push({ numeroCuenta: res[i].Usuario.numeroCuenta, validacion: res[i].validacion, - confirmacion: res[i].confirmacion, folio: res[i].folio, monto: res[i].monto, hizoPago: res[i].hizoPago, diff --git a/server/controller/Admin/validarTicket.js b/server/controller/Admin/validarTicket.js index 1966692..2654421 100644 --- a/server/controller/Admin/validarTicket.js +++ b/server/controller/Admin/validarTicket.js @@ -1,60 +1,57 @@ const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); -const Usuario = require(`${dbPath}/Usuario`); -const { usuarioInscrito } = require('../../config/mariadb.conf'); const validarTicket = async (body) => { - return ( - Inscripcion.findOne({ - where: { folio: body.folio }, + 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 }, + }); + } }) - .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 (res) throw new Error('Este folio ya fue validado'); - return Inscripcion.update( - { - validacion: body.validacion, + .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 (body.validacion === 0) { + return Inscripcion.update( + { motivo: body.motivo }, { where: { folio: body.folio, }, } ); - }) - .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); - }) - ); + } + }) + .then((res) => { + if (body.validacion === 1) + return { + message: '¡El ticket a sido validado de forma correcta!', + }; + else + return { + message: '¡El ticket a sido declinado', + }; + }) + .catch((err) => { + throw new Error('No fue posible validar el ticket. ' + err); + }); }; module.exports = validarTicket; diff --git a/server/db/tablas/Inscripcion.js b/server/db/tablas/Inscripcion.js index 27b0bca..4ff3165 100644 --- a/server/db/tablas/Inscripcion.js +++ b/server/db/tablas/Inscripcion.js @@ -22,6 +22,10 @@ Inscripcion.init( type: DataTypes.BOOLEAN, defaultValue: 0, }, + motivo: { + type: DataTypes.STRING(100), + defaultValue: null, + }, folio: { type: DataTypes.STRING(10), allowNull: true, diff --git a/server/helper/correo.js b/server/helper/correo.js index ccd4426..0dcd256 100644 --- a/server/helper/correo.js +++ b/server/helper/correo.js @@ -1,13 +1,19 @@ const correoInscripciones = () => ({ subject: `Inscripción a CEDETEC`, msj: `Estimado usuario, su inscripción se realizo con éxito. - +

Estimado Usuario

- Para poder hacer uso de las instalaciones de CEDETEC, por favor confirma tu inscripción en el el siguiente link. + Su inscripción esta sujeta a revisión, es necesario revisar los datos que registro en el sistema.

- KALINGA +

Te sugerimos guardar tu ticket para cualquier aclaración

+

Por el momento podras hacer tu confirmacion en KALINGA

+ +

En caso de recibir un correo con el asunto Inscripción declinada se cancelara el servicio y no podras hacer uso de los servicios

+ +

Atentamente

+

Atención Usuarios DSC

`, }); diff --git a/server/uploads/reporte.csv b/server/uploads/reporte.csv index 152f5d5..c1167ac 100644 --- a/server/uploads/reporte.csv +++ b/server/uploads/reporte.csv @@ -1,2 +1,2 @@ -numero_cuenta,id_area,folio,monto,hizo_pago,fecha_inscripcion -419085500,1,99999,20,true,02/26/2022 +numeroCuenta,validacion,folio,monto,hizoPago,fechaInscripcion,idArea +419085500,2,44,555,true,03/17/2022,1 From 47f48a446497c2d206c444b2047a109ffe593acc Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Fri, 18 Mar 2022 01:29:10 -0600 Subject: [PATCH 08/11] motivo de declinacion --- server/controller/Admin/motivo.js | 21 +++++++++++++++++++++ server/controller/Admin/ticket.js | 9 ++++++--- server/helper/correo.js | 2 +- server/routes/Admin.js | 11 +++++++++++ 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 server/controller/Admin/motivo.js diff --git a/server/controller/Admin/motivo.js b/server/controller/Admin/motivo.js new file mode 100644 index 0000000..12788de --- /dev/null +++ b/server/controller/Admin/motivo.js @@ -0,0 +1,21 @@ +const dbPath = '../../db/tablas'; +const Inscripcion = require(`${dbPath}/Inscripcion`); +const { validarNumeroEntero } = require('../../helper/validar'); + +const motivo = async (body) => { + return Inscripcion.findOne({ + where: { folio: body.folio }, + }) + .then((res) => { + if (!res) throw new Error('No pudimos encontrar este ticket.'); + return Inscripcion.findOne({ + where: { folio: body.folio }, + attributes: ['motivo'], + }); + }) + .catch((err) => { + throw new Error('No fue posible encontrar el ticket. ' + err); + }); +}; + +module.exports = motivo; diff --git a/server/controller/Admin/ticket.js b/server/controller/Admin/ticket.js index 2c50700..c0b5b83 100644 --- a/server/controller/Admin/ticket.js +++ b/server/controller/Admin/ticket.js @@ -1,15 +1,18 @@ const dbPath = '../../db/tablas'; -const Usuario = require(`${dbPath}/Usuario`); const Inscripcion = require(`${dbPath}/Inscripcion`); const ticket = async (body) => { return Inscripcion.findOne({ where: { folio: body.folio }, - attributes: ['rutaTicket', 'extension'], + attributes: ['rutaTicket', 'extension', 'motivo'], }) .then((res) => { if (!res) throw new Error('No pudimos encontrar este ticket.'); - return { rutaTicket: res.rutaTicket, extension: res.extension }; + return { + rutaTicket: res.rutaTicket, + extension: res.extension, + motivo: res.motivo, + }; }) .catch((err) => { throw new Error('No fue posible validar el ticket. ' + err); diff --git a/server/helper/correo.js b/server/helper/correo.js index 0dcd256..c6d8c9e 100644 --- a/server/helper/correo.js +++ b/server/helper/correo.js @@ -12,7 +12,7 @@ const correoInscripciones = () => ({

En caso de recibir un correo con el asunto Inscripción declinada se cancelara el servicio y no podras hacer uso de los servicios

-

Atentamente

+

Atentamente:

Atención Usuarios DSC

`, }); diff --git a/server/routes/Admin.js b/server/routes/Admin.js index ce507b4..c91ccd4 100644 --- a/server/routes/Admin.js +++ b/server/routes/Admin.js @@ -9,6 +9,7 @@ const todasInscripciones = require(`${controllerPath}/todasInscripciones`); const ticket = require(`${controllerPath}/ticket`); const actualizarTicket = require(`${controllerPath}/actualizarTicket`); const cancelarInscripcion = require(`${controllerPath}/cancelarInscripcion`); +const motivo = require(`${controllerPath}/motivo`); const validarSinTicket = require(`${controllerPath}/validarSinTicket`); const validarTicket = require(`${controllerPath}/validarTicket`); const reporte = require(`${controllerPath}/reporte`); @@ -46,6 +47,16 @@ app.get(`${route}/ticket`, (req, res) => { }); }); +app.get(`${route}/motivo`, verificaToken, (req, res) => { + return motivo(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + app.put(`${route}/actualizar_ticket`, verificaToken, (req, res) => { return actualizarTicket(req.body) .then((data) => { From 73d661cefc48f96d856f361dc6c478e8892f37cb Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Fri, 18 Mar 2022 17:22:06 -0600 Subject: [PATCH 09/11] correo y mensaje --- server/controller/Usuario/inscripcionUsuario.js | 2 +- server/helper/correo.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/controller/Usuario/inscripcionUsuario.js b/server/controller/Usuario/inscripcionUsuario.js index af19aa8..b9a3952 100644 --- a/server/controller/Usuario/inscripcionUsuario.js +++ b/server/controller/Usuario/inscripcionUsuario.js @@ -57,7 +57,7 @@ const inscripcion = async (body, file) => { }) .then((res) => ({ message: - 'Tu inscripción está sujeta a validación, en caso de no ser correcta o veraz el servicio será suspendido.', + 'Tu inscripción está sujeta a validación, en caso de no ser correcta o veraz el servicio será suspendido. Por favor revisa tu correo de PCPUMA para confirmar tu registro.', })) .catch((err) => { if (file) eliminarArchivo(file.path); diff --git a/server/helper/correo.js b/server/helper/correo.js index c6d8c9e..27b9924 100644 --- a/server/helper/correo.js +++ b/server/helper/correo.js @@ -1,6 +1,6 @@ const correoInscripciones = () => ({ subject: `Inscripción a CEDETEC`, - msj: `Estimado usuario, su inscripción se realizo con éxito. + msj: `

Estimado Usuario

Su inscripción esta sujeta a revisión, es necesario revisar los datos que registro en el sistema. From 2cd8c0810cb9f47127bc9f1de27900af443d1c38 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Mon, 21 Mar 2022 14:03:30 -0600 Subject: [PATCH 10/11] validaciones --- server/controller/Admin/actualizarTicket.js | 24 +++++++++++-- server/controller/Admin/motivo.js | 6 ++-- server/controller/Admin/reporte.js | 34 ++++++------------- server/controller/Admin/todasInscripciones.js | 9 +++-- server/controller/Admin/validarSinTicket.js | 19 ++--------- server/controller/Usuario/escolares.js | 22 +++++++----- .../controller/Usuario/inscripcionUsuario.js | 2 +- server/controller/Usuario/inscripciones.js | 8 ++--- server/db/data-fake.js | 32 ----------------- server/db/tablas/Inscripcion.js | 1 - server/helper/correo.js | 2 +- server/uploads/reporte.csv | 4 +-- 12 files changed, 65 insertions(+), 98 deletions(-) delete mode 100644 server/db/data-fake.js diff --git a/server/controller/Admin/actualizarTicket.js b/server/controller/Admin/actualizarTicket.js index bdfd17b..40fb4b2 100644 --- a/server/controller/Admin/actualizarTicket.js +++ b/server/controller/Admin/actualizarTicket.js @@ -1,5 +1,6 @@ const dbPath = '../../db/tablas'; const { validarNumeroEntero } = require('../../helper/validar'); +const { Op } = require('sequelize'); const Inscripcion = require(`${dbPath}/Inscripcion`); const actualizarTicket = async (body) => { @@ -9,15 +10,32 @@ const actualizarTicket = async (body) => { true ); + const monto = validarNumeroEntero(body.monto, 'monto', true); + return Inscripcion.findOne({ - where: { idInscripcion }, + where: { + idInscripcion, + }, }) .then((res) => { if (!res) throw new Error('No pudimos encontrar este ticket.'); + return Inscripcion.findOne({ + where: { + folio: body.folio, + cancelacion: 0, + idInscripcion: {[Op.ne]: idInscripcion} + }, + }); + }) + .then((res) => { + if (res) + throw new Error('¡ Este folio ya fue utilizado por otra inscripción !'); + }) + .then((res) => { return Inscripcion.update( { folio: body.folio, - monto: body.monto, + monto, fechaTicket: body.fechaTicket, }, { @@ -32,7 +50,7 @@ const actualizarTicket = async (body) => { '¡ Los datos de la inscripción fueron actualizados de forma correcta !', })) .catch((err) => { - throw new Error('No fue posible validar el ticket. ' + err); + throw new Error('No fue posible actualizar los datos del ticket. ' + err); }); }; diff --git a/server/controller/Admin/motivo.js b/server/controller/Admin/motivo.js index 12788de..30a55e0 100644 --- a/server/controller/Admin/motivo.js +++ b/server/controller/Admin/motivo.js @@ -1,15 +1,15 @@ const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); -const { validarNumeroEntero } = require('../../helper/validar'); const motivo = async (body) => { + const folio = body.folio; return Inscripcion.findOne({ - where: { folio: body.folio }, + where: { folio }, }) .then((res) => { if (!res) throw new Error('No pudimos encontrar este ticket.'); return Inscripcion.findOne({ - where: { folio: body.folio }, + where: { folio, validacion: 0 }, attributes: ['motivo'], }); }) diff --git a/server/controller/Admin/reporte.js b/server/controller/Admin/reporte.js index e0894da..92058e4 100644 --- a/server/controller/Admin/reporte.js +++ b/server/controller/Admin/reporte.js @@ -29,29 +29,17 @@ const reporte = async (body) => { ], }) .then(async (res) => { - if (body.tipo === 'CSV') { - for (let i = 0; i < res.length; i++) { - data.push({ - numero_cuenta: res[i].Usuario.numeroCuenta, - id_area: res[i].idArea, - folio: res[i].folio, - monto: res[i].monto, - hizo_pago: res[i].hizoPago, - fecha_inscripcion: moment(res[i].fechaInscripcion).format('L'), - }); - } - } else { - for (let i = 0; i < res.length; i++) { - data.push({ - numeroCuenta: res[i].Usuario.numeroCuenta, - validacion: res[i].validacion, - folio: res[i].folio, - monto: res[i].monto, - hizoPago: res[i].hizoPago, - fechaInscripcion: moment(res[i].fechaInscripcion).format('L'), - idArea: res[i].idArea, - }); - } + for (let i = 0; i < res.length; i++) { + data.push({ + numeroCuenta: res[i].Usuario.numeroCuenta, + idArea: res[i].idArea, + folio: res[i].folio, + monto: res[i].monto, + hizoPago: res[i].hizoPago, + fechaInscripcion: moment(res[i].fechaInscripcion).format('L'), + validacion: res[i].validacion, + motivoCancelacion: res[i].motivo, + }); } await helper.eliminarArchivo(path).catch((err) => {}); return helper.crearArchivo(path, convertArrayToCSV(data)); diff --git a/server/controller/Admin/todasInscripciones.js b/server/controller/Admin/todasInscripciones.js index 2219161..5278462 100644 --- a/server/controller/Admin/todasInscripciones.js +++ b/server/controller/Admin/todasInscripciones.js @@ -1,13 +1,16 @@ -const validar = require('../../helper/validar'); +const { + validarNumeroCuenta, + validarNumeroEntero, +} = require('../../helper/validar'); const { Op } = require('sequelize'); const dbPath = '../../db/tablas'; const Usuario = require(`${dbPath}/Usuario`); const Inscripcion = require(`${dbPath}/Inscripcion`); const todasInscripciones = async (body) => { - // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); + const validacion = validarNumeroEntero(body.validacion, 'validacion', true); return Inscripcion.findAll({ - where: { validacion: body.validacion, cancelacion: 0 }, + where: { validacion, cancelacion: 0 }, include: [ { model: Usuario, diff --git a/server/controller/Admin/validarSinTicket.js b/server/controller/Admin/validarSinTicket.js index a1d5268..e758899 100644 --- a/server/controller/Admin/validarSinTicket.js +++ b/server/controller/Admin/validarSinTicket.js @@ -1,29 +1,16 @@ const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); -const Usuario = require(`${dbPath}/Usuario`); -const { usuarioInscrito } = require('../../config/mariadb.conf'); +const { validarNumeroEntero } = require('../../helper/helper'); const validarSinTicket = async (body) => { - // return usuarioInscrito(body.numeroCuenta, 0) - // .then((res) => { - // return Inscripcion.update( - // { - // validacion: 1, - // }, - // { - // where: { - // idUsuario: body.idUsuario, - // }, - // } - // ); - // }) + const idUsuario = validarNumeroEntero(body.idUsuario, 'usuario', true); return Inscripcion.update( { validacion: 1, }, { where: { - idUsuario: body.idUsuario, + idUsuario, }, } ) diff --git a/server/controller/Usuario/escolares.js b/server/controller/Usuario/escolares.js index f7bbae4..2fc217d 100644 --- a/server/controller/Usuario/escolares.js +++ b/server/controller/Usuario/escolares.js @@ -1,20 +1,24 @@ const { obtenerDatosUsr } = require('../../config/mariadb.conf'); -const validar = require('../../helper/validar'); +const { + validarNumeroCuenta, + validarNumeroEntero, +} = require('../../helper/validar'); const dbPath = '../../db/tablas'; -const Carrera = require(`${dbPath}/Carrera`); const Usuario = require(`${dbPath}/Usuario`); const escolares = async (body) => { - // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); - + const numeroCuenta = validarNumeroCuenta( + body.numeroCuenta, + 'numero cuenta', + true + ); return Usuario.findOne({ - where: { numeroCuenta: body.numeroCuenta }, + where: { numeroCuenta }, }).then((res) => { if (!res) { - return obtenerDatosUsr(body.numeroCuenta).then(async (res) => { + return obtenerDatosUsr(numeroCuenta).then(async (res) => { return Usuario.create({ - idUsuario: body.idUsuario, - numeroCuenta: body.numeroCuenta, + numeroCuenta, nombre: body.nombre, generacion: res.generacion, carrera: body.carrera, @@ -23,7 +27,7 @@ const escolares = async (body) => { }); } return Usuario.findOne({ - where: { numeroCuenta: body.numeroCuenta }, + where: { numeroCuenta }, attributes: [ 'idUsuario', 'numeroCuenta', diff --git a/server/controller/Usuario/inscripcionUsuario.js b/server/controller/Usuario/inscripcionUsuario.js index b9a3952..8d1a70b 100644 --- a/server/controller/Usuario/inscripcionUsuario.js +++ b/server/controller/Usuario/inscripcionUsuario.js @@ -18,7 +18,7 @@ const inscripcion = async (body, file) => { let email = ''; return Inscripcion.findOne({ - where: { folio }, + where: { folio, cancelacion: 0 }, }) .then((res) => { if (res) throw new Error('Este folio ya esta registrado'); diff --git a/server/controller/Usuario/inscripciones.js b/server/controller/Usuario/inscripciones.js index 8e52270..547fe51 100644 --- a/server/controller/Usuario/inscripciones.js +++ b/server/controller/Usuario/inscripciones.js @@ -1,16 +1,16 @@ -const validar = require('../../helper/validar'); +const { validarNumeroEntero } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); const inscripciones = async (body) => { - // const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); + const idUsuario = validarNumeroEntero(body.idUsuario, 'Usuario', true); return Inscripcion.findAll({ - where: { idUsuario: body.idUsuario }, + where: { idUsuario }, }).then((res) => { if (!res) return []; return Inscripcion.findAll({ - where: { idUsuario: body.idUsuario, cancelacion: 0 }, + where: { idUsuario, cancelacion: 0 }, attributes: [ 'idInscripcion', 'validacion', diff --git a/server/db/data-fake.js b/server/db/data-fake.js deleted file mode 100644 index a2830eb..0000000 --- a/server/db/data-fake.js +++ /dev/null @@ -1,32 +0,0 @@ -const Usuario = require('./tablas/Usuario'); -const { encriptar } = require('../helper/encriptar'); - -const dataUsuarios = async () => { - let usuario = ['416313221', '111111111', '222222222']; - let nombre = [ - 'Adriana De Luna Ramirez', - 'Nombre Falso 1', - 'Nombre Falso 2', - ]; - - for (let i = 0; i < usuario.length; i++) { - await Usuario.create({ - usuario: usuario[i], - nombre: nombre[i], - password: encriptar('holi'), - idTipoUsuario: 2, - }); - console.log(`Se insertó el usuario ${usuario[i]}.`.magenta); - } -}; - -const exec = async () => { - await dataUsuarios(); - console.log( - '\nSe ha instalado exitosamente la información falsa en la base de datos.\n' - .underline.bold.green - ); - process.exit(); -}; - -exec(); diff --git a/server/db/tablas/Inscripcion.js b/server/db/tablas/Inscripcion.js index 4ff3165..51eaf95 100644 --- a/server/db/tablas/Inscripcion.js +++ b/server/db/tablas/Inscripcion.js @@ -30,7 +30,6 @@ Inscripcion.init( type: DataTypes.STRING(10), allowNull: true, defaultValue: null, - unique: true, }, monto: { type: DataTypes.INTEGER, diff --git a/server/helper/correo.js b/server/helper/correo.js index 27b9924..0ea5837 100644 --- a/server/helper/correo.js +++ b/server/helper/correo.js @@ -8,7 +8,7 @@ const correoInscripciones = () => ({

Te sugerimos guardar tu ticket para cualquier aclaración

-

Por el momento podras hacer tu confirmacion en KALINGA

+

Por el momento podras hacer tu confirmación en KALINGA

En caso de recibir un correo con el asunto Inscripción declinada se cancelara el servicio y no podras hacer uso de los servicios

diff --git a/server/uploads/reporte.csv b/server/uploads/reporte.csv index c1167ac..70558da 100644 --- a/server/uploads/reporte.csv +++ b/server/uploads/reporte.csv @@ -1,2 +1,2 @@ -numeroCuenta,validacion,folio,monto,hizoPago,fechaInscripcion,idArea -419085500,2,44,555,true,03/17/2022,1 +numeroCuenta,idArea,folio,monto,hizoPago,fechaInscripcion,validacion,motivoCancelacion +419085500,1,9084161,11,true,03/18/2022,0,Se uso para impresiones From 3f1099b29bc2c3300cf1c39409eb15d6a1762719 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Mon, 21 Mar 2022 15:17:20 -0600 Subject: [PATCH 11/11] validacion folio --- server/controller/Admin/actualizarTicket.js | 8 ++++---- server/controller/Admin/motivo.js | 4 +++- server/controller/Admin/reporte.js | 2 +- server/controller/Admin/ticket.js | 3 +++ server/controller/Admin/todasInscripciones.js | 5 +---- server/controller/Admin/validarTicket.js | 12 ++++++++---- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/server/controller/Admin/actualizarTicket.js b/server/controller/Admin/actualizarTicket.js index 40fb4b2..70477cc 100644 --- a/server/controller/Admin/actualizarTicket.js +++ b/server/controller/Admin/actualizarTicket.js @@ -9,8 +9,8 @@ const actualizarTicket = async (body) => { 'id Inscripcion', true ); - const monto = validarNumeroEntero(body.monto, 'monto', true); + const folio = validarNumeroEntero(body.folio, 'folio', true); return Inscripcion.findOne({ where: { @@ -21,9 +21,9 @@ const actualizarTicket = async (body) => { if (!res) throw new Error('No pudimos encontrar este ticket.'); return Inscripcion.findOne({ where: { - folio: body.folio, + folio, cancelacion: 0, - idInscripcion: {[Op.ne]: idInscripcion} + idInscripcion: { [Op.ne]: idInscripcion }, }, }); }) @@ -34,7 +34,7 @@ const actualizarTicket = async (body) => { .then((res) => { return Inscripcion.update( { - folio: body.folio, + folio, monto, fechaTicket: body.fechaTicket, }, diff --git a/server/controller/Admin/motivo.js b/server/controller/Admin/motivo.js index 30a55e0..d95c69d 100644 --- a/server/controller/Admin/motivo.js +++ b/server/controller/Admin/motivo.js @@ -1,8 +1,10 @@ +const { validarNumeroEntero } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); const motivo = async (body) => { - const folio = body.folio; + const folio = validarNumeroEntero(body.folio, 'folio', true); + return Inscripcion.findOne({ where: { folio }, }) diff --git a/server/controller/Admin/reporte.js b/server/controller/Admin/reporte.js index 92058e4..97ede4b 100644 --- a/server/controller/Admin/reporte.js +++ b/server/controller/Admin/reporte.js @@ -38,7 +38,7 @@ const reporte = async (body) => { hizoPago: res[i].hizoPago, fechaInscripcion: moment(res[i].fechaInscripcion).format('L'), validacion: res[i].validacion, - motivoCancelacion: res[i].motivo, + motivoDeclinacion: res[i].motivo, }); } await helper.eliminarArchivo(path).catch((err) => {}); diff --git a/server/controller/Admin/ticket.js b/server/controller/Admin/ticket.js index c0b5b83..f337bde 100644 --- a/server/controller/Admin/ticket.js +++ b/server/controller/Admin/ticket.js @@ -1,7 +1,10 @@ +const { validarNumeroEntero } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); const ticket = async (body) => { + const folio = validarNumeroEntero(body.folio, 'folio', true); + return Inscripcion.findOne({ where: { folio: body.folio }, attributes: ['rutaTicket', 'extension', 'motivo'], diff --git a/server/controller/Admin/todasInscripciones.js b/server/controller/Admin/todasInscripciones.js index 5278462..2f865cf 100644 --- a/server/controller/Admin/todasInscripciones.js +++ b/server/controller/Admin/todasInscripciones.js @@ -1,7 +1,4 @@ -const { - validarNumeroCuenta, - validarNumeroEntero, -} = require('../../helper/validar'); +const { validarNumeroEntero } = require('../../helper/validar'); const { Op } = require('sequelize'); const dbPath = '../../db/tablas'; const Usuario = require(`${dbPath}/Usuario`); diff --git a/server/controller/Admin/validarTicket.js b/server/controller/Admin/validarTicket.js index 2654421..d6289e8 100644 --- a/server/controller/Admin/validarTicket.js +++ b/server/controller/Admin/validarTicket.js @@ -1,16 +1,20 @@ +const { validarNumeroEntero } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Inscripcion = require(`${dbPath}/Inscripcion`); const validarTicket = async (body) => { + const validacion = validarNumeroEntero(body.validacion, 'validacion', true); + const folio = validarNumeroEntero(body.folio, 'folio', true); + 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) { + if (validacion == 1) { return Inscripcion.findOne({ - where: { folio: body.folio, validacion: 1 }, + where: { folio, validacion: 1 }, }); } }) @@ -18,11 +22,11 @@ const validarTicket = async (body) => { if (res) throw new Error('Este folio ya fue validado'); return Inscripcion.update( { - validacion: body.validacion, + validacion, }, { where: { - folio: body.folio, + folio, }, } );