diff --git a/server/controller/Servicio/reporte.js b/server/controller/Servicio/reporte.js index e69de29..f833b41 100644 --- a/server/controller/Servicio/reporte.js +++ b/server/controller/Servicio/reporte.js @@ -0,0 +1,50 @@ +const fs = require('fs'); +const { convertArrayToCSV } = require('convert-array-to-csv'); +const { Op } = require('sequelize'); +const validar = require('../../helper/validar'); +const Servicio = require('../../db/tablas/Servicio'); +const Programa = require('../../db/tablas/Programa'); +const Usuario = require('../../db/tablas/Usuario'); +const Carrera = require('../../db/tablas/Carrera'); + +const get = async (body) => { + const inicio = validar.validarFecha(body.inicio); + const fin = validar.validarFecha(body.fin); + const path = `csv/reporte.csv`; + const data = []; + + return Servicio.findAll({ + where: { + fechaInicio: { [Op.gte]: inicio }, + fechaInicio: { [Op.lte]: fin }, + }, + include: [{ model: Programa }, { model: Usuario }, { model: Carrera }], + }).then((res) => { + for (let i = 0; i < res.length; i++) + data.push({ + numeroCuenta: res[i].Usuario.Usuario, + nombre: res[i].Usuario.nombre, + licenciatura: res[i].Carrera.carrera, + correo: res[i].correo, + fehcaInicio: res[i].fechaInicio, + fechaFin: res[i].fechaFin, + institucion: res[i].Programa.institucion, + dependencia: res[i].Programa.dependencia, + programa: res[i].Programa.programa, + clave: res[i].Programa.clavePrograma, + }); + try { + fs.unlinkSync(path); + } catch (err) { + console.log(err); + } + fs.appendFile(path, convertArrayToCSV(data), (err) => { + if (err) throw new Error(err); + }); + return { + message: `Se creo/actualizo correctamente el csv del reporte de servicios sociales.`, + }; + }); +}; + +module.exports = get; diff --git a/server/routes/Servicio.js b/server/routes/Servicio.js index 7c07196..c61f1bc 100644 --- a/server/routes/Servicio.js +++ b/server/routes/Servicio.js @@ -21,6 +21,7 @@ const rechazarAceptacion = require('../controller/Servicio/rechazarAceptacion'); const rechazarTermino = require('../controller/Servicio/rechazarTermino'); const rechazarInforme = require('../controller/Servicio/rechazarInforme'); const update = require('../controller/Servicio/update'); +const reporte = require('../controller/Servicio/reporte'); const eliminarArchivo = (filename) => { fs.unlinkSync(`./server/uploads/${filename}`); @@ -82,6 +83,20 @@ app.get(`${route}/alumno`, verificaToken, (req, res) => { }); }); +app.get( + `${route}/reporte`, + // verificaToken, + (req, res) => { + return reporte(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); + } +); + app.put(`${route}/cancelar`, verificaToken, (req, res) => { return cancelar(req.body) .then((data) => {