Files
2020-03-09 21:27:35 -06:00

427 lines
16 KiB
JavaScript

const connection = require('../conf/connection.js');
const express = require('express');
const fs = require('fs');
var app = express()
const JtoC = require('json2csv').parse;
const Excel = require('exceljs');
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
app.get('/crear_ccv', async(req, res) => {
data = { alumno: [], academico: [] };
try {
let cad = `select * from persona;`;
let r = query(cad);
r.then(async(p) => {
for (let i = 0; i < p.length; i++) {
if (p[i].situacion_academica == 'Alumno') {
let aux = {}
cad = `select e.*, asi.* from evento as e inner join asistencia as asi where asi.id_persona=${p[i].id_persona} and e.id_evento=asi.id_evento`;
let n_ans = await query(cad);
console.log(p[i]);
console.log("nuevo ans ", n_ans);
aux.id_persona = p[i].id_persona;
aux.nombre = p[i].nombre;
aux.apellido_p = p[i].apellido_p;
aux.apellido_m = p[i].apellido_m;
aux.comunidad = p[i].comunidad;
aux.conversatorio_ponente = 'No';
aux.conversatorio_asistente = 'No';
aux.taller = 'No';
aux.visita = 'No';
aux.magistral_1 = 'No';
aux.magistral_2 = 'No';
aux.comprobante_pago = false;
aux.carta_aceptacion = false;
aux.rfc='No_registrado';
aux.domicilio='No_registrado';
aux.f_telefono='No_registrado';
aux.f_correo='No_registrado';
let f_cad=`select * from factura where id_persona=${p[i].id_persona};`;
let f_ans=await query(f_cad);
if(f_ans.length>0)
{
aux.rfc=f_ans[0].rfc;
aux.domicilio=f_ans[0].domicilio;
aux.f_telefono=f_ans[0].telefono;
aux.f_correo=f_ans[0].correo;
}
if (fs.existsSync(`./files/carta_aceptacion-${p[i].id_persona}.docx`)) {
aux.carta_aceptacion = true;
}
if (fs.existsSync(`./files/comprobante_pago-${p[i].id_persona}.docx`)) {
aux.comprobante_pago = true;
}
aux.correo = p[i].correo;
let nueva_cadena = `select * from alumno where id_persona=${p[i].id_persona};`
let nueva_query = await query(nueva_cadena);
aux.tipo_pago = nueva_query[0].metodo_pago_asignado;
let ext = true;
if (aux.comunidad == 'UNAM')
ext = false;
let tot = 0;
for (let j = 0; j < n_ans.length; j++) {
console.log(aux.nombre, " ", aux.comunidad, " ", tot, " ", ext, " ", n_ans[j].tipo_de_participacion);
if (n_ans[j].tipo_evento == 'Conversatorio') {
if (n_ans[j].tipo_de_participacion == 'Video') {
if (ext == true)
tot += 700;
else
tot += 100;
aux.conversatorio_ponente = 'Video: ' + n_ans[j].nombre_evento;
} else
if (n_ans[j].tipo_de_participacion == 'Ensayo') {
if (ext == true)
tot += 700;
else
tot += 100;
aux.conversatorio_ponente = 'Ensayo: ' + n_ans[j].nombre_evento;
} else {
aux.conversatorio_asistente = n_ans[j].nombre_evento;
if (ext == true)
tot += 200;
else
tot += 100;
}
}
if (n_ans[j].tipo_evento == 'Taller alumno') {
if (ext == true)
tot += 900;
else
tot += 200;
aux.taller = n_ans[j].nombre_evento;
}
if (n_ans[j].tipo_evento == 'Visitas guiadas') {
if (ext == true)
tot += 500;
else
tot += 500;
aux.visita = n_ans[j].nombre_evento;
}
if (n_ans[j].nombre_evento == 'Diálogo magistral 1: Experiencias escolares. El peso de la formación en la práctica profesional') {
aux.magistral_1 = n_ans[j].nombre_evento;
}
if (n_ans[j].nombre_evento == 'Diálogo magistral 2: ¿Qué es ser arquitecto?') {
aux.magistral_2 = n_ans[j].nombre_evento;
}
aux.pago = p[i].pago;
}
data.alumno.push(aux);
console.log(" ");
console.log(" ");
}
if (p[i].situacion_academica == 'Académico') {
let aux = {}
cad = `select e.*, asi.* from evento as e inner join asistencia as asi where asi.id_persona=${p[i].id_persona} and e.id_evento=asi.id_evento`;
let n_ans = await query(cad);
aux.id_persona = p[i].id_persona;
aux.nombre = p[i].nombre;
aux.apellido_p = p[i].apellido_p;
aux.apellido_m = p[i].apellido_m;
aux.comunidad = p[i].comunidad;
aux.conversatorio_ponente = 'No';
aux.conversatorio_asistente = 'No';
aux.taller = 'No';
aux.visita = 'No';
aux.magistral_1 = 'No';
aux.magistral_2 = 'No';
aux.tipo_pago = n_ans[0].metodo_pago_asignado;
aux.pago = 0;
aux.correo = p[i].correo;
let nueva_cadena = `select * from academico where id_persona=${p[i].id_persona};`
let nueva_query = await query(nueva_cadena);
aux.tipo_pago = nueva_query[0].metodo_pago_asignado;
let tot = 0;
let ext = true;
if (aux.comunidad == 'UNAM')
ext = false;
for (let j = 0; j < n_ans.length; j++) {
if (n_ans[j].tipo_evento == 'Conversatorio') {
if (n_ans[j].tipo_de_participacion == 'Ponente') {
if (ext == true)
tot += 1000;
else
tot += 500;
aux.conversatorio_ponente = n_ans[j].nombre_event;
} else {
aux.conversatorio_asistente = n_ans[j].nombre_evento;
if (ext == true)
tot += 1300;
else
tot += 650;
}
}
if (n_ans[j].tipo_evento == 'Taller profesor') {
if (ext == true)
tot += 1500;
else
tot += 750;
aux.taller = n_ans[j].nombre_evento;
}
if (n_ans[j].tipo_evento == 'Visitas guiadas') {
if (ext == true)
tot += 500;
else
tot += 500;
aux.visita = n_ans[j].nombre_evento;
}
if (n_ans[j].nombre_evento == 'Diálogo magistral 1: Experiencias escolares. El peso de la formación en la práctica profesional') {
aux.magistral_1 = n_ans[j].nombre_evento;
}
if (n_ans[j].nombre_evento == 'Diálogo magistral 2: ¿Qué es ser arquitecto?') {
aux.magistral_2 = n_ans[j].nombre_evento;
}
aux.pago = p[i].pago;
}
data.academico.push(aux);
}
}
/*aux.rfc='No_registrado';
aux.domicilio='No_registrado';
aux.f_telefono='No_registrado';
aux.f_correo='No_registrado';*/
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet('Datos alumno');
let enc = [];
enc.push("");
enc.push("");
enc.push("");
enc.push("Alumno");
worksheet.addRow(enc);
enc = [];
enc.push("Nombre");
enc.push("Apellido Paterno");
enc.push("Apellido Materno");
enc.push("Correo");
enc.push("Comunidad");
enc.push("Conversatorio Asistente");
enc.push("Conversatorio Ponente");
enc.push("Diálogo magistral 1");
enc.push("Diálogo magistral 2");
enc.push("Taller");
enc.push("Ruta");
enc.push("Tipo de Pago");
enc.push("Total de Pago");
enc.push("RFC");
enc.push("Domicilio para la factura");
enc.push("Telefono para la factura");
enc.push("Correo para la factura");
console.log(enc);
// worksheet.columns = [
// { header: 'Nombre', key: 'nom', width: 32 },
// { header: 'Apellido Paterno', key: 'a_p', width: 32 },
// { header: 'Apellido Materno', key: 'a_m', width: 32 },
// { header: 'Correo', key: 'correo', width: 32 },
// { header: 'Comunidad', key: 'c', width: 32 },
// { header: 'Conversatorio Asistente', key: 'c_a', width: 32 },
// { header: 'Conversatorio Ponente', key: 'c_p', width: 32 },
// { header: 'Diálogo magistral 1', key: 'd_1', width: 32 },
// { header: 'Diálogo magistral 2', key: 'd_2', width: 32 },
// { header: 'Ruta', key: 'r', width: 32 },
// { header: 'Pago', key: 'p', width: 32 }
// ];
worksheet.addRow(enc)
// const csv = JtoC(data);
//<fs.writeFileSync("./datos.csv", csv)
// const parser = new Parser(data);
// const csv = parser.parse(myData);
// console.log(csv);
// console.log(p);
// aux.id_persona = p[i].id_persona;
// aux.nombre = p[i].nombre;
// aux.apellido_p = p[i].apellido_p;
// aux.apellido_m = p[i].apellido_m;
// aux.comunidad = p[i].comunidad;
// aux.conversatorio_ponente = 'No';
// aux.conversatorio_asistente = 'No';
// aux.taller = 'No';
// aux.visita = 'No';
// aux.magistral_1 = 'No';
// aux.magistral_2 = 'No';
// aux.comprobante_pago = false;
// aux.carta_aceptacion = false;
for (let i = 0; i < data.alumno.length; i++) {
let d = data.alumno[i];
let a = [];
console.log(d);
// d.forEach(Element => {
// a.push(Element);
// });
// worksheet.addRow(a);
// worksheet.addRow({ nom: d.nombre, a_p: d.apellido_p, a_m: d.apellido_m, correo: d.correo, c: d.comunidad, c_a: d.conversatorio_asistente, c_p: d.conversatorio_ponente, d_1: d.magistral_1, d_2: d.magistral_2, r: d.visita, p: d.pago });
a.push(d.nombre);
a.push(d.apellido_p);
a.push(d.apellido_m);
a.push(d.correo);
a.push(d.comunidad);
a.push(d.conversatorio_asistente);
a.push(d.conversatorio_ponente);
a.push(d.magistral_1);
a.push(d.magistral_2);
a.push(d.taller);
a.push(d.visita);
a.push(d.tipo_pago);
a.push(d.pago);
a.push(d.rfc)
a.push(d.domicilio);
a.push(d.f_telefono);
a.push(d.f_correo);
/*aux.rfc='No_registrado';
aux.domicilio='No_registrado';
aux.f_telefono='No_registrado';
aux.f_correo='No_registrado';*/
worksheet.addRow(a);
}
enc = [];
worksheet.addRow(enc);
enc = [];
worksheet.addRow(enc);
enc = [];
worksheet.addRow(enc);
enc.push("");
enc.push("");
enc.push("");
enc.push("Academico");
worksheet.addRow(enc);
enc = [];
enc.push("Nombre");
enc.push("Apellido Paterno");
enc.push("Apellido Materno");
enc.push("Correo");
enc.push("Comunidad");
enc.push("Conversatorio Asistente");
enc.push("Conversatorio Ponente");
enc.push("Diálogo magistral 1");
enc.push("Diálogo magistral 2");
enc.push("Taller");
enc.push("Ruta");
enc.push("Tipo de Pago");
enc.push("Total de Pago");
enc.push("RFC");
enc.push("Domicilio para la factura");
enc.push("Telefono para la factura");
enc.push("Correo para la factura");
worksheet.addRow(enc);
for (let i = 0; i < data.academico.length; i++) {
let d = data.academico[i];
let a = [];
console.log(d);
// d.forEach(Element => {
// a.push(Element);
// });
// worksheet.addRow(a);
// worksheet.addRow({ nom: d.nombre, a_p: d.apellido_p, a_m: d.apellido_m, correo: d.correo, c: d.comunidad, c_a: d.conversatorio_asistente, c_p: d.conversatorio_ponente, d_1: d.magistral_1, d_2: d.magistral_2, r: d.visita, p: d.pago });
a.push(d.nombre);
a.push(d.apellido_p);
a.push(d.apellido_m);
a.push(d.correo);
a.push(d.comunidad);
a.push(d.conversatorio_asistente);
a.push(d.conversatorio_ponente);
a.push(d.magistral_1);
a.push(d.magistral_2);
a.push(d.taller);
a.push(d.visita);
a.push(d.tipo_pago);
a.push(d.pago);
a.push(d.rfc)
a.push(d.domicilio);
a.push(d.f_telefono);
a.push(d.f_correo);
worksheet.addRow(a);
}
//fs.writeFileSync("./nuevo.xlsx", workbook);
res.attachment(__dirname + `/../public/ASINEA-2020.xlsx`)
workbook
.xlsx
.write(res)
.then(() => {
res.end()
})
.catch((err) => {
res.status(400).json({ error: false, msj: "no se pudo descargar" });
});
//res.status(200).json({ error: false, datos: data });
})
} catch (err) {
return res.status(400).json({ error: true, msj: "Error al traer los datos" });
}
});
module.exports = app;