From ff462be1685a2f8ca9f9c5de5be9eff913d503f8 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Sun, 11 Jul 2021 23:29:35 -0500 Subject: [PATCH] get carrera horario --- server/controller/CarreraHorario/get.js | 35 +++++++++++++++++++++++++ server/controller/TercerSemestre/get.js | 3 --- server/routes/CarreraHorario.js | 17 ++++++++++++ server/routes/index.js | 1 + 4 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 server/controller/CarreraHorario/get.js create mode 100644 server/routes/CarreraHorario.js diff --git a/server/controller/CarreraHorario/get.js b/server/controller/CarreraHorario/get.js new file mode 100644 index 0000000..8e7ff91 --- /dev/null +++ b/server/controller/CarreraHorario/get.js @@ -0,0 +1,35 @@ +const { Op, json } = require('sequelize'); +const { validarId } = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const CarreraHorario = require(`${dbPath}/CarreraHorario`); +const Horario = require(`${dbPath}/Horario`); +const PrimerSemestre = require(`${dbPath}/PrimerSemestre`); + +const get = async (body) => { + const idCarrera = validarId(body.idCarrera); + + return Carrera.findOne({ where: { idCarrera } }) + .then((res) => { + if (!res) throw new Error('No existe esta carrera.'); + return CarreraHorario.findAll({ + where: { idCarrera }, + include: [{ model: Horario }], + }); + }) + .then(async (res) => { + const data = []; + + for (let i = 0; i < res.length; i++) { + let lugaresOcupados = await PrimerSemestre.findAll({ + where: { idHorario: res[i].Horario.idHorario }, + }).then((res) => res.length); + + if (lugaresOcupados < 50) + data.push({ Horario: res[i].Horario, lugares: 50 - lugaresOcupados }); + } + return data; + }); +}; + +module.exports = get; diff --git a/server/controller/TercerSemestre/get.js b/server/controller/TercerSemestre/get.js index ed877f0..f87f6c9 100644 --- a/server/controller/TercerSemestre/get.js +++ b/server/controller/TercerSemestre/get.js @@ -30,9 +30,6 @@ const get = async (body) => { .then((res) => { delete res.dataValues.idHorario; delete res.dataValues.idGrupo; - res.dataValues.Horario.dataValues.horario = moment( - res.Horario.horario - ).format(); return { alumnoTercerSemestre, GrupoHorario: res }; }); }; diff --git a/server/routes/CarreraHorario.js b/server/routes/CarreraHorario.js new file mode 100644 index 0000000..ba647f1 --- /dev/null +++ b/server/routes/CarreraHorario.js @@ -0,0 +1,17 @@ +const express = require('express'); +const app = express(); +const route = '/carrera_horario'; +const controllerPath = '../controller/CarreraHorario'; +const get = require(`${controllerPath}/get`); + +app.get(`${route}`, (req, res) => { + return get(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/index.js b/server/routes/index.js index 351b0a4..2b28725 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -2,6 +2,7 @@ const express = require('express'); const app = express(); app.use(require('./Carrera')); +app.use(require('./CarreraHorario')); app.use(require('./Grupo')); app.use(require('./TercerSemestre'));