const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); const helperPath = '../../helper'; const helper = require(`${helperPath}/helper`); const { validarNumero } = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const CuestionarioAlumno = require(`${dbPath}/CuestionarioAlumno`); const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); const Usuario = require(`${dbPath}/Usuario`); const CuestionarioAlumno2 = require(`${dbPath}/CuestionarioAlumno2`); const getOld = async (body) => { const year = validarNumero(body.year, 'año', true, 4); const path = `server/uploads/${year}_cuestionario_alumno.csv`; const data = []; return Servicio.findAll({ include: [ { model: CuestionarioAlumno, where: { idCuestionarioAlumno: { [Op.not]: null } }, }, { model: Programa, where: { clavePrograma: { [Op.like]: `${year}%` } } }, { model: Usuario }, { model: Carrera }, ], order: [['createdAt']], }) .then(async (res) => { for (let i = 0; i < res.length; i++) data.push({ idServicio: res[i].idServicio, clavePrograma: res[i].Programa.clavePrograma, usuario: res[i].Usuario.usuario, nombre: res[i].Usuario.nombre, carrera: res[i].Carrera.carrera, idCuestionarioAlumno: res[i].CuestionarioAlumno.idCuestionarioAlumno, sexo: res[i].CuestionarioAlumno.sexo, edad: res[i].CuestionarioAlumno.edad, servicioMedico: res[i].CuestionarioAlumno.servicioMedico, p1: res[i].CuestionarioAlumno.p1, p2: res[i].CuestionarioAlumno.p2, p3: res[i].CuestionarioAlumno.p3, p4: res[i].CuestionarioAlumno.p4, p5: res[i].CuestionarioAlumno.p5, p6: res[i].CuestionarioAlumno.p6, p7: res[i].CuestionarioAlumno.p7, p8: res[i].CuestionarioAlumno.p8, p9: res[i].CuestionarioAlumno.p9, p10: res[i].CuestionarioAlumno.p10, p11: res[i].CuestionarioAlumno.p11, p12: res[i].CuestionarioAlumno.p12, p13: res[i].CuestionarioAlumno.p13, p14: res[i].CuestionarioAlumno.p14, p15: res[i].CuestionarioAlumno.p15, p16: res[i].CuestionarioAlumno.p16, p17: res[i].CuestionarioAlumno.p17, p18: res[i].CuestionarioAlumno.p18, p19: res[i].CuestionarioAlumno.p19, p20: res[i].CuestionarioAlumno.p20, p21: res[i].CuestionarioAlumno.p21, p22: res[i].CuestionarioAlumno.p22, p23: res[i].CuestionarioAlumno.p23, p24: res[i].CuestionarioAlumno.p24, p25: res[i].CuestionarioAlumno.p25, p26: res[i].CuestionarioAlumno.p26, p27: res[i].CuestionarioAlumno.p27, p28: res[i].CuestionarioAlumno.p28, p29: res[i].CuestionarioAlumno.p29, p30: res[i].CuestionarioAlumno.p30, createdAt: res[i].CuestionarioAlumno.createdAt, }); await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => path); }; const get = async (body) => { const year = validarNumero(body.year, 'año', true, 4); const path = `server/uploads/${year}_cuestionario_alumno.csv`; const data = []; console.log(year); /* return Servicio.findAll({ include: [ { model: CuestionarioAlumno2, where: { idCuestionarioAlumno: { [Op.not]: null } }, }, { model: Programa, where: { clavePrograma: { [Op.like]: `${year}%` } } }, { model: Usuario }, { model: Carrera }, ], order: [['createdAt']], }) */ /* return CuestionarioAlumno2.findAll({ where: { idCuestionarioAlumno2: { [Op.not]: null, }, }, // order: [['createdAt', 'ASC']], // Descomentar si se requiere ordenamiento }) .then(async (res) => { console.log("segunda parte",res); for (let i = 0; i < res.length; i++) data.push({ ...res}) data.push({ idServicio: res[i].idServicio, clavePrograma: res[i].Programa.clavePrograma, usuario: res[i].Usuario.usuario, nombre: res[i].Usuario.nombre, carrera: res[i].Carrera.carrera, idCuestionarioAlumno: res[i].CuestionarioAlumno.idCuestionarioAlumno, sexo: res[i].CuestionarioAlumno.sexo, edad: res[i].CuestionarioAlumno.edad, servicioMedico: res[i].CuestionarioAlumno.servicioMedico, p1: res[i].CuestionarioAlumno.p1, p2: res[i].CuestionarioAlumno.p2, p3: res[i].CuestionarioAlumno.p3, p4: res[i].CuestionarioAlumno.p4, p5: res[i].CuestionarioAlumno.p5, p6: res[i].CuestionarioAlumno.p6, p7: res[i].CuestionarioAlumno.p7, p8: res[i].CuestionarioAlumno.p8, p9: res[i].CuestionarioAlumno.p9, p10: res[i].CuestionarioAlumno.p10, p11: res[i].CuestionarioAlumno.p11, p12: res[i].CuestionarioAlumno.p12, p13: res[i].CuestionarioAlumno.p13, p14: res[i].CuestionarioAlumno.p14, p15: res[i].CuestionarioAlumno.p15, p16: res[i].CuestionarioAlumno.p16, p17: res[i].CuestionarioAlumno.p17, p18: res[i].CuestionarioAlumno.p18, p19: res[i].CuestionarioAlumno.p19, p20: res[i].CuestionarioAlumno.p20, p21: res[i].CuestionarioAlumno.p21, p22: res[i].CuestionarioAlumno.p22, p23: res[i].CuestionarioAlumno.p23, p24: res[i].CuestionarioAlumno.p24, p25: res[i].CuestionarioAlumno.p25, p26: res[i].CuestionarioAlumno.p26, p27: res[i].CuestionarioAlumno.p27, p28: res[i].CuestionarioAlumno.p28, p29: res[i].CuestionarioAlumno.p29, p30: res[i].CuestionarioAlumno.p30, createdAt: res[i].CuestionarioAlumno.createdAt, }); await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => path); }; */ return CuestionarioAlumno2.findAll({ where: { idCuestionarioAlumno2: { [Op.not]: null, }, }, }) .then(async (res) => { console.log("segunda parte", res); for (let i = 0; i < res.length; i++) { data.push(res[i].get({ plain: true })); } // Alternativa manual si necesitas campos específicos /* for (let i = 0; i < res.length; i++) { const row = res[i].get({ plain: true }); data.push({ idCuestionarioAlumno2: row.idCuestionarioAlumno2, p1: row.p1, p2: row.p2, p3: row.p3, p4: row.p4, p5: row.p5, // Agrega los demás campos según sea necesario }); } */ await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => path); } module.exports = get;