diff --git a/src/controller/prestamo/activar.js b/src/controller/prestamo/activar.js index 7f61683..3d31c4f 100644 --- a/src/controller/prestamo/activar.js +++ b/src/controller/prestamo/activar.js @@ -2,7 +2,7 @@ const validador = require('../validador') const Prestamo = require('../../db/tables/Prestamo') const Operador = require('../../db/tables/Operador') const Equipo = require('../../db/tables/Equipo') -const { validarEmail } = require('../validador') +const Mesa = require('../../db/tables/Mesa') const activar = async (body) => { let idPrestamo = await validador.validarId(body.idPrestamo).then((res) => res) @@ -25,7 +25,7 @@ const activar = async (body) => { if (res.Equipo.activo) validador.error('Este equipo ya esta en uso.', 400) return Equipo.update( { activo: true }, - { where: { idEquipo: res.idEquipo } } + { where: { idEquipo: res.idEquipo }, order: [['updatedAt', 'DESC']] } ) }) .then(() => { diff --git a/src/controller/prestamo/activo.js b/src/controller/prestamo/activo.js new file mode 100644 index 0000000..7e3be4e --- /dev/null +++ b/src/controller/prestamo/activo.js @@ -0,0 +1,37 @@ +const { Op } = require('sequelize') +const validador = require('../validador') +const Prestamo = require('../../db/tables/Prestamo') +const Equipo = require('../../db/tables/Equipo') +const Carrito = require('../../db/tables/Carrito') +const TipoCarrito = require('../../db/tables/TipoCarrito') +const Status = require('../../db/tables/Status') +const Horario = require('../../db/tables/Horario') +const Mesa = require('../../db/tables/Mesa') + +const activo = async (body) => { + let idUsuario = await validador.validarId(body.idUsuario).then((res) => res) + let busqueda = { + include: [ + { model: Horario }, + { model: Mesa, include: [{ model: Status }] }, + { + model: Equipo, + include: [ + { model: Status }, + { model: Carrito, include: [{ model: TipoCarrito }] }, + ], + }, + ], + where: { [Op.and]: [{ idUsuario }, { activo: true }] }, + } + + return Prestamo.findOne(busqueda).then((res) => { + if (!res) validador.error('El usuario no tiene un prestamo activo.', 400) + return { + data: validador.objetoPrestamoEquipo(res), + code: 200, + } + }) +} + +module.exports = activo diff --git a/src/controller/prestamo/status.js b/src/controller/prestamo/status.js index b0dc21d..484d3a0 100644 --- a/src/controller/prestamo/status.js +++ b/src/controller/prestamo/status.js @@ -5,12 +5,14 @@ const Carrito = require('../../db/tables/Carrito') const TipoCarrito = require('../../db/tables/TipoCarrito') const Status = require('../../db/tables/Status') const Horario = require('../../db/tables/Horario') +const Mesa = require('../../db/tables/Mesa') const status = async (body) => { let idPrestamo = await validador.validarId(body.idPrestamo).then((res) => res) let busqueda = { include: [ { model: Horario }, + { model: Mesa, include: [{ model: Status }] }, { model: Equipo, include: [ @@ -25,43 +27,8 @@ const status = async (body) => { return Prestamo.findOne(busqueda).then((res) => { if (!res) validador.error('No existe ese prestamo.', 400) return { - data: { - idPrestamo: res.idPrestamo, - horaFin: res.horaFin, - activo: res.activo, - createdAt: res.createdAt, - updatedAt: res.updatedAt, - idUsuario: res.idUsuario, - idOperadorEntrega: res.idOperadorEntrega, - idOperadorRegreso: res.idOperadorRegreso, - idMesa: res.idMesa, - Horario: { - idHorario: res.Horario.idHorario, - horario: res.Horario.horario, - }, - Equipo: { - idEquipo: res.Equipo.idEquipo, - noSerie: res.Equipo.noSerie, - noInventario: res.Equipo.noInventario, - sobrenombre: res.Equipo.sobrenombre, - activo: res.Equipo.activo, - updatedAt: res.Equipo.updatedAt, - Status: { - idStatus: res.Equipo.Status.idStatus, - status: res.Equipo.Status.status, - }, - Carrito: { - idCarrito: res.Equipo.Carrito.idCarrito, - sobrenombre: res.Equipo.Carrito.sobrenombre, - kiosko: res.Equipo.Carrito.kiosko, - TipoCarrito: { - idTipoCarrito: res.Equipo.Carrito.TipoCarrito.idTipoCarrito, - nombre: res.Equipo.Carrito.TipoCarrito.nombre, - }, - }, - }, - code: 200, - }, + data: validador.objetoPrestamoEquipo(res), + code: 200, } }) } diff --git a/src/controller/validador.js b/src/controller/validador.js index 2e6a14b..c47c461 100644 --- a/src/controller/validador.js +++ b/src/controller/validador.js @@ -49,4 +49,61 @@ const validarNumero = (numero) => { }) } -module.exports = { error, validarId, validarTexto, validarEmail, validarNumero } +const objetoPrestamoEquipo = (prestamo) => { + let data = { + idPrestamo: prestamo.idPrestamo, + horaFin: prestamo.horaFin, + activo: prestamo.activo, + createdAt: prestamo.createdAt, + updatedAt: prestamo.updatedAt, + idUsuario: prestamo.idUsuario, + idOperadorEntrega: prestamo.idOperadorEntrega, + idOperadorRegreso: prestamo.idOperadorRegreso, + Horario: { + idHorario: prestamo.Horario.idHorario, + horario: prestamo.Horario.horario, + }, + Equipo: { + idEquipo: prestamo.Equipo.idEquipo, + noSerie: prestamo.Equipo.noSerie, + noInventario: prestamo.Equipo.noInventario, + sobrenombre: prestamo.Equipo.sobrenombre, + activo: prestamo.Equipo.activo, + updatedAt: prestamo.Equipo.updatedAt, + Status: { + idStatus: prestamo.Equipo.Status.idStatus, + status: prestamo.Equipo.Status.status, + }, + Carrito: { + idCarrito: prestamo.Equipo.Carrito.idCarrito, + sobrenombre: prestamo.Equipo.Carrito.sobrenombre, + kiosko: prestamo.Equipo.Carrito.kiosko, + TipoCarrito: { + idTipoCarrito: prestamo.Equipo.Carrito.TipoCarrito.idTipoCarrito, + nombre: prestamo.Equipo.Carrito.TipoCarrito.nombre, + }, + }, + }, + } + + if (prestamo.idMesa) + data.Mesa = { + idMesa: prestamo.Mesa.idMesa, + activo: prestamo.Mesa.activo, + updatedAt: prestamo.Mesa.updatedAt, + Status: { + idStatus: prestamo.Mesa.Status.idStatus, + status: prestamo.Mesa.Status.status, + }, + } + return data +} + +module.exports = { + error, + validarId, + validarTexto, + validarEmail, + validarNumero, + objetoPrestamoEquipo, +} diff --git a/src/routes/prestamo.js b/src/routes/prestamo.js index 0098c27..d20e7e5 100644 --- a/src/routes/prestamo.js +++ b/src/routes/prestamo.js @@ -2,6 +2,7 @@ const express = require('express') const app = express() const get = require('../controller/prestamo/get') const status = require('../controller/prestamo/status') +const activo = require('../controller/prestamo/activo') const equipo = require('../controller/prestamo/equipo') const cancelar = require('../controller/prestamo/cancelar') const activar = require('../controller/prestamo/activar') @@ -24,6 +25,14 @@ app.get(`${route}/status`, (req, res) => { .catch((err) => res.status(err.code).json({ err: err.message })) }) +app.get(`${route}/activo`, (req, res) => { + return activo(req.query) + .then((data) => { + res.status(data.code).json({ prestamos: data.data }) + }) + .catch((err) => res.status(err.code).json({ err: err.message })) +}) + app.post(`${route}/equipo`, (req, res) => { return equipo(req.body) .then((data) => { @@ -39,10 +48,7 @@ app.put(`${route}/cancelar`, (req, res) => { .then((data) => { res.status(data.code).json({ message: data.message }) }) - .catch((err) => { - console.log(err) - res.status(err.code).json({ err: err.message }) - }) + .catch((err) => res.status(err.code).json({ err: err.message })) }) app.put(`${route}/activar`, (req, res) => { @@ -50,10 +56,7 @@ app.put(`${route}/activar`, (req, res) => { .then((data) => { res.status(data.code).json({ message: data.message }) }) - .catch((err) => { - console.log(err) - res.status(err.code).json({ err: err.message }) - }) + .catch((err) => res.status(err.code).json({ err: err.message })) }) app.put(`${route}/regreso`, (req, res) => { @@ -61,10 +64,7 @@ app.put(`${route}/regreso`, (req, res) => { .then((data) => { res.status(data.code).json({ message: data.message }) }) - .catch((err) => { - console.log(err) - res.status(err.code).json({ err: err.message }) - }) + .catch((err) => res.status(err.code).json({ err: err.message })) }) module.exports = app