const connection = require('../conf/connection.js'); const express = require('express'); const fs = require('fs'); var app = express() const { Parser } = require('json2csv'); 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 = '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].tipo_evento == 'Dialogo magistral') { aux.magistral = 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 = 'No'; aux.pago = n_ans[0].metodo_pago_asignado; 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].tipo_evento == 'Dialogo magistral') { aux.magistral = n_ans[j].nombre_evento; } aux.pago = tot; } data.academico.push(aux); } } const parser = new Parser(data); const csv = parser.parse(myData); console.log(csv); // console.log(p); // 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;