Files
AsineApi/routes/enviarFicha.js
T
2020-10-19 02:33:48 -05:00

238 lines
9.4 KiB
JavaScript

const connection = require('../conf/connection.js');;
const express = require('express');
const fileUpload = require('express-fileupload');
var path = require('path');
const nodemailer = require("nodemailer");
const fs = require("fs");
var app = express()
app.use(fileUpload());
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function depurado(cadena) {
if (cadena != null)
return cadena.replace(/'/g, "''");
else
return null;
}
async function sendEmail( destination, idPersona ) {
// 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({
service: "Gmail",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'asinea103@fa.unam.mx', // generated ethereal user
pass: 'As1n34103++'
},
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"ASINEA 2020" <asinea103@fa.unam.mx>', // sender address
to: `"${destination}"`, // list of receivers
subject: "Ficha de deposito ASINEA 2020", // Subject line
text: `
Enviamos la referencia bancaria para poder realizar el pago.
El pago puede realizarse por medio de transferencia interbancaria o depósito en banco (BBVA). Le adjuntamos las instrucciones de acuerdo al banco* desde el que desee realizarlo.
https://drive.google.com/file/d/1ygl7kQDTHOmLN9UNZ1D_Bx1u2IOBww7g/view?usp=sharing
Nota: En el número de CLABE le pedimos que se base en la que aparece en las imágenes de acuerdo al banco desde el que lo realice.
Si realiza el pago desde BBVA, deberán dirigirse a pago de servicios, ingresar el número de convenio, que inicia con 14 y aparecerán los datos de la UNAM, después deberá ingresar la referencia.
La referencia tiene una vigencia de 3 días. En este lapso deberá enviar su comprobante para poder validar que el pago fue realizado correctamente. De no usarla, la referencia será cancelada.
Una vez realizado el pago, deberá ingresar nuevamente a la plataforma donde realizaste tu registro para adjuntar el archivo en pdf del voucher de pago con los siguientes datos:
-Número de referencia o convenio
-Banco de procedencia
-Fecha de la operación
-Clave de rastreo
-Cuenta de retiro
-Cuenta de depósito e importe.
De no tener estos datos, su pago no podrá ser rastreado.
Ahí podrá solicitar su factura. El tiempo de envío es entre 15 y 20 días hábiles una vez validado el comprobante.El uso del CFDI en las facturas será generara en automático por Gastos en General, si requiere de otro tipo notificarlo al correo asinea103@fa.unam.mx
La siguiente imagen te apoyará para saber como subir tu comprobante de pago y los datos antes mencionados a la plataforma, además adjuntamos a este correo un manual para realizar transferencias a los Convenios BBVA Bancome
`, // plain text body
attachments: [
{
filename: 'ficha de deposito.pdf',
path: `${path.join('./files/fichasDeposito', `ficha-${idPersona}.pdf`)}`// stream this file
},
{
filename: 'Manual para transferencia.pdf',
path: `${path.join('./public', 'manual.pdf')}`
},
{
filename: 'Guia para subir el comprobante de pago.png',
path: `${path.join('./public', `guiaComprobante.png`)}`// stream this file
}
]
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
app.post('/enviarFicha', async(req, res) => {
console.log(req.files);
console.log(req.body);
if ( req.files === null || typeof(req.files) === 'undefined' ) {
res.status(400).json({error: true, msj: 'Falata seleccionar el archivo'});
return;
}
try {
console.log(req.files);
if (req.files.fichaDeposito != undefined) {
let sampleFile = req.files.fichaDeposito;
let nombreCortado = sampleFile.name.split('.');
let extencion = nombreCortado[nombreCortado.length - 1];
let extensionValidas = ['pdf', 'jpg', 'jpeg', 'png', 'docx', 'doc', 'odt', 'pdf'];
if (extensionValidas.indexOf(extencion) < 0) {
return res.status(400).json({
error: true,
msj: "Extensión invalida del archivo de fichaDeposito"
});
}
}
} catch (err) {
console.log(err);
return res.status(400).json({
error: true,
msj: "error al verificar la extensión"
});
}
try {
console.log(req.body)
if (req.files.fichaDeposito != undefined) {
let idPersona = req.body.idPersona;
let correo = req.body.correo;
let sampleFile = req.files.fichaDeposito;
sampleFile.mv( path.join('./files/fichasDeposito', `ficha-${idPersona}.pdf`), function(err) {
if (err)
return res.status(400).json({ error: true, msj: "Error al guardar la ficha de deposito" });
});
await sendEmail(correo, idPersona);
let sqlString = `update persona set referenciaEnviada = true, fechaEnvioFicha = NOW() where idPersona=${idPersona}`;
await query(sqlString);
}
} catch (err) {
console.log(err);
res.status(400).json({ error: true, msj: "Error al subir el archivo de ficha de deposito", type: err });
return;
}
try {
console.log(req.body)
if (req.files.reciboPago != undefined) {
let sampleFile = req.files.reciboPago;
console.log('este es el body antes', req.body);
//req.body = req.body.datos;
let body = req.body;
console.log('este es el body despues', body);
for( item in body){
console.log(`${item} : ${body[item]}`);
}
let idPersona= body.idPersona;
sampleFile.mv( path.join('./files/recibos', `recibo-${idPersona}.pdf`), function(err) {
if (err)
return res.status(400).json({ error: true, msj: "Error al registrar al guardar el recibo de pago" });
});
let sqlString = `update persona set envioComprobante = true where idPersona=${idPersona}`;
await query(sqlString);
// CREATE TABLE `comprobante` ( `idComprobante` integer `idPersona` int, `bancoProcedencia` varchar(250), `fechaOperacion` date, `claveRastreo` varchar(250), `cuentaRetiro` varchar(250), `importe` varchar(250), `cuentaDeposito` varchar(250)
sqlString = `INSERT INTO comprobante values (null, ${idPersona}, '${ body.bancoProcedencia }', '${ body.fechaOperacion }', '${ body.claveRastreo }', '${ body.cuentaRetiro }', '${ body.importe }', '${ body.cuentaDeposito }' ) ;`;
await query(sqlString);
if( typeof(body.factura) !== 'undefined' ){
sqlString = `update persona set requiereFactura = true where idPersona=${idPersona}`;
await query(sqlString);
// CREATE TABLE `factura` ( `idFactura` integer , `idPersona` int, `rfc` varchar(255), `telefono` varchar(255), `correo` varchar(255), `nombre` varchar(255), ` apellidoPaterno` varchar(255), `apellidoMaterno` varchar(255), `calle` varchar(255), `noInterior` varchar(255), `noExterior` varchar(255), `colonia` varchar(255), `municipio` varchar(255), `estado` varchar(255), `codigoPostal` varchar(255)
sqlString = `INSERT INTO factura values (null, ${idPersona}, '${ body.rfc }', '${ body.telefono }', '${ body.correoPersona }', '${ body.nombrePersona }', '${ body.apellidoPaterno }', '${ body.apellidoMaterno }', '${ body.calle }', '${ body.noInterior }' , '${ body.noExterior }', '${ body.colonia }', '${ body.municipio }', '${ body.estado }', '${ body.codigoPostal }' ) ;`;
await query(sqlString);
res.status(200).json({ error: false, msj: "exito " });
return;
}
}
} catch (err) {
console.log(err);
res.status(400).json({ error: true, msj: "Error al subir el archivo de comprobante de pago", type: err });
return;
}
res.status(200).json({ error: false, msj: "exito " });
return;
});
module.exports = app;