From b92a95ac2e3ed82469a7252daffbc57accddd5c1 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Thu, 29 Apr 2021 22:17:40 -0500 Subject: [PATCH] endpoint recuperar prestamo --- server/controller/Operador/operadores.js | 0 server/controller/Prestamo/pedir.js | 4 +- server/controller/Prestamo/prestamo.js | 57 +++++++++++++++++++ server/controller/Prestamo/prestamoUsuario.js | 43 ++++++++++++++ server/controller/Prestamo/recoger.js | 35 +++++++++--- server/controller/Prestamo/regresar.js | 3 +- server/routes/Prestamo.js | 31 ++++++++++ 7 files changed, 160 insertions(+), 13 deletions(-) create mode 100644 server/controller/Operador/operadores.js create mode 100644 server/controller/Prestamo/prestamo.js create mode 100644 server/controller/Prestamo/prestamoUsuario.js diff --git a/server/controller/Operador/operadores.js b/server/controller/Operador/operadores.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controller/Prestamo/pedir.js b/server/controller/Prestamo/pedir.js index 59ffa0d..0d606e5 100644 --- a/server/controller/Prestamo/pedir.js +++ b/server/controller/Prestamo/pedir.js @@ -31,12 +31,12 @@ const pedir = async (body) => { }) .then((res) => { if (!res && idPrograma) { - throw new Error('No existe ese programa.'); + throw new Error('No existe este programa.'); } return Usuario.findOne({ where: { idUsuario } }); }) .then((res) => { - if (!res) throw new Error('Ese usuario no existe.'); + if (!res) throw new Error('No existe este usuario.'); if (res.multa) throw new Error( 'Este usuario tiene una multa activa, no puede solicitar un equipo de computo.' diff --git a/server/controller/Prestamo/prestamo.js b/server/controller/Prestamo/prestamo.js new file mode 100644 index 0000000..1065c68 --- /dev/null +++ b/server/controller/Prestamo/prestamo.js @@ -0,0 +1,57 @@ +const validar = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Carrito = require(`${dbPath}/Carrito`); +const Equipo = require(`${dbPath}/Equipo`); +const Modulo = require(`${dbPath}/Modulo`); +const Operador = require(`${dbPath}/Operador`); +const Prestamo = require(`${dbPath}/Prestamo`); +const Programa = require(`${dbPath}/Programa`); +const TipoCarrito = require(`${dbPath}/TipoCarrito`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require(`${dbPath}/Usuario`); + +const prestamo = async (body) => { + const idPrestamo = validar.validarId(body.idPrestamo); + + return Prestamo.findOne({ + where: { idPrestamo }, + include: [ + { + model: Equipo, + include: [ + { + model: Carrito, + include: [{ model: TipoCarrito }, { model: Modulo }], + }, + { model: Programa }, + ], + }, + { model: Usuario, include: [{ model: TipoUsuario }, { model: Carrera }] }, + { model: Operador, as: 'OperadorRegreso' }, + { model: Operador, as: 'OperadorEntrega' }, + ], + }).then((res) => { + if (!res) throw new Error('No existe este prestamo.'); + delete res.dataValues.idUsuario; + delete res.dataValues.idOperadorEntrega; + delete res.dataValues.idOperadorRegreso; + delete res.dataValues.idEquipo; + delete res.dataValues.Equipo.dataValues.idPrograma; + delete res.dataValues.Equipo.dataValues.idStatus; + delete res.dataValues.Equipo.dataValues.idCarrito; + delete res.dataValues.Equipo.Carrito.dataValues.idTipoCarrito; + delete res.dataValues.Equipo.Carrito.dataValues.idModulo; + delete res.dataValues.Usuario.dataValues.idTipoUsuario; + delete res.dataValues.Usuario.dataValues.idCarrera; + delete res.dataValues.Usuario.dataValues.password; + if (!res.Equipo.Programa) delete res.dataValues.Equipo.dataValues.Programa; + if (!res.OperadorEntrega) delete res.dataValues.OperadorEntrega; + else delete res.dataValues.OperadorEntrega.dataValues.password; + if (!res.OperadorRegreso) delete res.dataValues.OperadorRegreso; + else delete res.dataValues.OperadorRegreso.dataValues.password; + return res; + }); +}; + +module.exports = prestamo; diff --git a/server/controller/Prestamo/prestamoUsuario.js b/server/controller/Prestamo/prestamoUsuario.js new file mode 100644 index 0000000..3998852 --- /dev/null +++ b/server/controller/Prestamo/prestamoUsuario.js @@ -0,0 +1,43 @@ +const validar = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Carrito = require(`${dbPath}/Carrito`); +const Equipo = require(`${dbPath}/Equipo`); +const Modulo = require(`${dbPath}/Modulo`); +const Prestamo = require(`${dbPath}/Prestamo`); +const TipoCarrito = require(`${dbPath}/TipoCarrito`); + +const prestamo = async (body) => { + const idUsuario = validar.validarId(body.idUsuario); + + return Prestamo.findOne({ + where: { idUsuario, activo: true }, + include: [ + { + model: Equipo, + include: [ + { + model: Carrito, + include: [{ model: TipoCarrito }, { model: Modulo }], + }, + ], + }, + ], + }).then((res) => { + if (!res) throw new Error('Este usuario no tiene un prestamo activo.'); + delete res.dataValues.idUsuario; + delete res.dataValues.idOperadorEntrega; + delete res.dataValues.idOperadorRegreso; + delete res.dataValues.idEquipo; + delete res.dataValues.Equipo.dataValues.idPrograma; + delete res.dataValues.Equipo.dataValues.idStatus; + delete res.dataValues.Equipo.dataValues.idCarrito; + delete res.dataValues.Equipo.Carrito.dataValues.idTipoCarrito; + delete res.dataValues.Equipo.Carrito.dataValues.idModulo; + // delete res.dataValues.Usuario.dataValues.idTipoUsuario; + // delete res.dataValues.Usuario.dataValues.idCarrera; + // delete res.dataValues.Usuario.dataValues.password; + return res; + }); +}; + +module.exports = prestamo; diff --git a/server/controller/Prestamo/recoger.js b/server/controller/Prestamo/recoger.js index f7012bb..0bc2770 100644 --- a/server/controller/Prestamo/recoger.js +++ b/server/controller/Prestamo/recoger.js @@ -1,12 +1,16 @@ const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; -const Prestamo = require(`${dbPath}/Prestamo`); +const Carrito = require(`${dbPath}/Carrito`); const Equipo = require(`${dbPath}/Equipo`); +const Modulo = require(`${dbPath}/Modulo`); const Operador = require(`${dbPath}/Operador`); +const Prestamo = require(`${dbPath}/Prestamo`); +const TipoCarrito = require(`${dbPath}/TipoCarrito`); const recoger = async (body) => { const idPrestamo = validar.validarId(body.idPrestamo); const idOperadorEntrega = validar.validarId(body.idOperadorEntrega); + let idEquipo; return Operador.findOne({ where: { idOperador: idOperadorEntrega } }) .then((res) => { @@ -21,18 +25,31 @@ const recoger = async (body) => { if (!res.activo) throw new Error('Este prestamo ya no esta activo.'); if (res.Equipo.enUso) throw new Error('Ya se entrego el equipo al usuario.'); - return Equipo.update( - { enUso: true }, - { where: { idEquipo: res.Equipo.idEquipo } } - ); + idEquipo = res.Equipo.idEquipo; + return Equipo.update({ enUso: true }, { where: { idEquipo } }); }) .then((res) => { Prestamo.update({ idOperadorEntrega }, { where: { idPrestamo } }); }) - .then((res) => ({ - message: - 'Se ha activado correctamente el equio de computo. Puedes llevartelo.', - })); + .then((res) => { + return Equipo.findOne({ + where: { idEquipo }, + include: [ + { + model: Carrito, + include: [{ model: TipoCarrito }, { model: Modulo }], + }, + ], + }); + }) + .then((res) => { + delete res.dataValues.idCarrito; + delete res.dataValues.idStatus; + delete res.dataValues.idPrograma; + delete res.dataValues.Carrito.dataValues.idTipoCarrito; + delete res.dataValues.Carrito.dataValues.idModulo; + return res; + }); }; module.exports = recoger; diff --git a/server/controller/Prestamo/regresar.js b/server/controller/Prestamo/regresar.js index cbdc208..97c07b2 100644 --- a/server/controller/Prestamo/regresar.js +++ b/server/controller/Prestamo/regresar.js @@ -23,7 +23,6 @@ const recoger = async (body) => { if (!res.activo) throw new Error('Este prestamo ya no esta activo.'); if (!res.Equipo.enUso) throw new Error('Aun no se ha entregado el equipo al usuario.'); - if (res) throw new Error('.'); return Equipo.update( { enUso: false, apartado: false }, { where: { idEquipo: res.Equipo.idEquipo } } @@ -36,7 +35,7 @@ const recoger = async (body) => { ); }) .then((res) => ({ - message: 'Se ha entregado correctamente el equio de computo.', + message: 'Se ha regresado correctamente el equio de computo.', })); }; diff --git a/server/routes/Prestamo.js b/server/routes/Prestamo.js index dcb6185..4f31380 100644 --- a/server/routes/Prestamo.js +++ b/server/routes/Prestamo.js @@ -10,6 +10,8 @@ const historialUsuario = require(`${controllerPath}/historialUsuario`); const pedir = require(`${controllerPath}/pedir`); const recoger = require(`${controllerPath}/recoger`); const regresar = require(`${controllerPath}/regresar`); +const prestamo = require(`${controllerPath}/prestamo`); +const prestamoUsuario = require(`${controllerPath}/prestamoUsuario`); app.post( `${route}/pedir`, @@ -108,4 +110,33 @@ app.get( }); } ); + +app.get( + `${route}`, + // verificaToken, + (req, res) => { + return prestamo(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); + } +); + +app.get( + `${route}/prestamo_usuario`, + // verificaToken, + (req, res) => { + return prestamoUsuario(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); + } +); + module.exports = app;