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); // { // 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;