381 lines
15 KiB
JavaScript
381 lines
15 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;
|
|
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 = tot;
|
|
|
|
}
|
|
|
|
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 = tot;
|
|
|
|
}
|
|
|
|
data.academico.push(aux);
|
|
}
|
|
}
|
|
|
|
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");
|
|
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);
|
|
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");
|
|
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);
|
|
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; |