Files
AsineApi/routes/enviarRecibo.js
T
2020-09-28 00:13:55 -05:00

172 lines
6.6 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: `
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
Una vez realizado el pago, deberá ingresar nuevamente a la plataforma y adjuntar el voucher o imagen del pago realizado 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.
`, // plain text body
attachments: [{ // file on disk as an attachment
filename: 'ficha de deposito.pdf',
path: `${path.join('./files/fichasDeposito', `ficha-${idPersona}.pdf`)}`// 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('/enviarRecibo', async(req, res) => {
console.log(req.files);
console.log(req.body);
if ( req.files === null || req.files.fichaDeposito === null || typeof(req.files) === 'undefined' || typeof(req.files.fichaDeposito) === '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', '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"
});
}
let idPersona = req.body.idPersona;
try {
console.log(req.body)
if (req.files.fichaDeposito != undefined) {
let sampleFile = req.files.fichaDeposito;
sampleFile.mv( path.join('./files/recibos', `deposito-${idPersona}.pdf`), function(err) {
if (err)
return res.status(400).json({ error: true, msj: "Error al registrar el cartel" });
});
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}, '${ req.body.bancoProcedencia }', '${ req.body.fechaOperacion }', '${ req.body.claveRastreo }', '${ req.body.cuentaRetiro }', '${ req.body.importe }', '${ req.body.cuentaDeposito }' ) ;`;
await query(sqlString);
if( typeof(req.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}, '${ req.body.rfc }', '${ req.body.telefono }', '${ req.body.correoPersona }', '${ req.body.nombrePersona }', '${ req.body.apellidoPaterno }', '${ req.body.apellidoMaterno }', '${ req.body.calle }', '${ req.body.noInterior }' , '${ req.body.noExterior }', '${ req.body.colonia }', '${ req.body.municipio }', '${ req.body.estado }', '${ req.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_pago", type: err });
return;
}
res.status(200).json({ error: false, msj: "exito " });
return;
});
module.exports = app;