From dc4093de317d106d0d93fa2c0f6c5a81d2c7ceee Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Thu, 29 Apr 2021 01:44:51 -0500 Subject: [PATCH] pedir equipo listo --- server/controller/Prestamo/pedir.js | 102 +++++++++++++++++++--------- server/routes/Prestamo.js | 16 +++++ 2 files changed, 87 insertions(+), 31 deletions(-) diff --git a/server/controller/Prestamo/pedir.js b/server/controller/Prestamo/pedir.js index 2545191..ea3adf0 100644 --- a/server/controller/Prestamo/pedir.js +++ b/server/controller/Prestamo/pedir.js @@ -1,14 +1,14 @@ const moment = require('moment'); const validar = require('../../helper/validar'); -const Prestamo = require('../../db/tablas/Prestamo'); -const Usuario = require('../../db/tablas/Carrera'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); -const TipoCarrito = require('../../db/tablas/TipoCarrito'); -const Carrito = require('../../db/tablas/Carrito'); -const Equipo = require('../../db/tablas/Equipo'); -const Status = require('../../db/tablas/Status'); -const Programa = require('../../db/tablas/Programa'); -const Modulo = require('../../db/tablas/Modulo'); +const dbPath = '../../db/tablas'; +const Prestamo = require(`${dbPath}/Prestamo`); +const Usuario = require(`${dbPath}/Usuario`); +const TipoCarrito = require(`${dbPath}/TipoCarrito`); +const Carrito = require(`${dbPath}/Carrito`); +const Equipo = require(`${dbPath}/Equipo`); +const Status = require(`${dbPath}/Status`); +const Programa = require(`${dbPath}/Programa`); +const Modulo = require(`${dbPath}/Modulo`); const pedir = async (body) => { const ahora = moment(); @@ -18,9 +18,23 @@ const pedir = async (body) => { ? validar.validarId(body.idPrograma) : null; const idModulo = idPrograma ? 1 : validar.validarId(body.idModulo); - let equipo = {}; + let idEquipo; - return Usuario.findOne({ where: { idUsuario } }) + return TipoCarrito.findOne({ where: { idTipoCarrito } }) + .then((res) => { + if (!res) throw new Error('No existe este tipo de equipo.'); + return Modulo.findOne({ where: { idModulo } }); + }) + .then((res) => { + if (!res) throw new Error('No existe este modulo.'); + return Programa.findOne({ where: { idPrograma } }); + }) + .then((res) => { + if (!res && idPrograma) { + throw new Error('No existe ese programa.'); + } + return Usuario.findOne({ where: { idUsuario } }); + }) .then((res) => { if (!res) throw new Error('Ese usuario no existe.'); if (res.multa) @@ -38,21 +52,21 @@ const pedir = async (body) => { 'Este usuario ya cuenta con un prestamo activo. No sepuede solicitar otro equipo de computo.' ); return Equipo.findOne({ - where: { activo: false }, + where: { + activo: false, + idStatus: 1, + idPrograma: idPrograma ? idPrograma : null, + }, include: [ { model: Carrito, - include: [ - { model: TipoCarrito, where: { idTipoCarrito } }, - { model: Modulo, where: { idModulo } }, - ], - }, - { model: Status, where: { idStatus: 1 } }, - { - model: Programa, - where: { idPrograma: idPrograma ? idPrograma : null }, + where: { idTipoCarrito, idModulo }, + include: [{ model: TipoCarrito }, { model: Modulo }], }, + { model: Status }, + { model: Programa }, ], + order: [['updatedAt']], }); }) .then((res) => { @@ -60,22 +74,48 @@ const pedir = async (body) => { throw new Error( 'No hay un equipo de computo con las características solicitadas disponible. Intenta más tarde o con otras características.' ); - equipo = res; - equipo.activo = true; - return Equipo.update( - { activo: true }, - { where: { idEquipo: equipo.idEquipo } } - ); + idEquipo = res.idEquipo; + return Equipo.update({ activo: true }, { where: { idEquipo } }); }) .then((res) => Prestamo.create({ - horaInicio: ahora.add(10, 'm'), - horaFin: ahora.add(130, 'm'), + horaInicio: ahora.add(10, 'm').format(), + horaFin: ahora.add(120, 'm').format(), idUsuario, - idEquipo: equipo.idEquipo, + idEquipo, }) ) - .then((res) => ({ equipo })); + .then((res) => { + return Prestamo.findOne({ + where: { idPrestamo: res.idPrestamo }, + include: [ + { + model: Equipo, + include: [ + { + model: Carrito, + include: [{ model: Modulo }, { model: TipoCarrito }], + }, + { model: Programa }, + ], + }, + ], + }); + }) + .then((res) => { + delete res.dataValues.idUsuario; + delete res.dataValues.idOperadorEntrega; + delete res.dataValues.idOperadorRegreso; + delete res.dataValues.idEquipo; + delete res.dataValues.Equipo.dataValues.idCarrito; + delete res.dataValues.Equipo.dataValues.idStatus; + delete res.dataValues.Equipo.dataValues.idPrograma; + delete res.dataValues.Equipo.dataValues.Carrito.dataValues.idTipoCarrito; + delete res.dataValues.Equipo.dataValues.Carrito.dataValues.idModulo; + if (!res.Equipo.Programa) + delete res.dataValues.Equipo.dataValues.Programa; + return res; + }); }; module.exports = pedir; diff --git a/server/routes/Prestamo.js b/server/routes/Prestamo.js index 60f8d0a..b52d999 100644 --- a/server/routes/Prestamo.js +++ b/server/routes/Prestamo.js @@ -7,6 +7,22 @@ const activos = require(`${controllerPath}/activos`); const historial = require(`${controllerPath}/historial`); const historialEquipo = require(`${controllerPath}/activos`); const historialUsuario = require(`${controllerPath}/historialUsuario`); +const pedir = require(`${controllerPath}/pedir`); + +app.post( + `${route}/pedir`, + // verificaToken, + (req, res) => { + return pedir(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + console.log(err); + res.status(400).json({ message: err.message }); + }); + } +); app.get( `${route}/activos`,