From 9a5ffb838844ec1dd00e72bd83fd12003b305ee3 Mon Sep 17 00:00:00 2001 From: "Lemuel H. Marquez Rosas" Date: Tue, 6 Oct 2020 15:25:42 -0500 Subject: [PATCH] prestamo cancelar, status, get, actualizar, regreso --- src/controller/prestamo/activar.js | 45 +++++++++++++++++++ src/controller/prestamo/cancelar.js | 24 ++++++++++ src/controller/prestamo/equipo.js | 1 + src/controller/prestamo/get.js | 68 ++++++++++++++++++++++++++--- src/controller/prestamo/regreso.js | 46 +++++++++++++++++++ src/controller/prestamo/salon.js | 11 +++++ src/controller/prestamo/status.js | 68 ++++++++++++++++++++++++++--- src/routes/prestamo.js | 59 ++++++++++++++++++++++--- 8 files changed, 305 insertions(+), 17 deletions(-) diff --git a/src/controller/prestamo/activar.js b/src/controller/prestamo/activar.js index e69de29..7f61683 100644 --- a/src/controller/prestamo/activar.js +++ b/src/controller/prestamo/activar.js @@ -0,0 +1,45 @@ +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 activar = async (body) => { + let idPrestamo = await validador.validarId(body.idPrestamo).then((res) => res) + let idOperador = await validador.validarId(body.idOperador).then((res) => res) + + return Operador.findOne({ where: { idOperador } }) + .then((res) => { + if (!res) validador.error('No existe este operador.', 400) + return Prestamo.findOne({ + where: { idPrestamo }, + include: [{ model: Equipo }], + }) + }) + .then((res) => { + if (!res) validador.error('No existe ese prestamo.', 400) + if (!res.activo && !res.idOperadorRegreso && !res.idOperadorEntrega) + validador.error('Este prestamo fue cancelado.', 400) + if (res.idOperadorEntrega) + validador.error('Ya se ha entregado este equipo.', 400) + if (res.Equipo.activo) validador.error('Este equipo ya esta en uso.', 400) + return Equipo.update( + { activo: true }, + { where: { idEquipo: res.idEquipo } } + ) + }) + .then(() => { + return Prestamo.update( + { idOperadorEntrega: idOperador }, + { where: { idPrestamo } } + ) + }) + .then(() => { + return { + code: 200, + message: 'Se ha entregado el equipo al usuario correctamente.', + } + }) +} + +module.exports = activar diff --git a/src/controller/prestamo/cancelar.js b/src/controller/prestamo/cancelar.js index e69de29..1bc3175 100644 --- a/src/controller/prestamo/cancelar.js +++ b/src/controller/prestamo/cancelar.js @@ -0,0 +1,24 @@ +const validador = require('../validador') +const Prestamo = require('../../db/tables/Prestamo') + +const cancelar = async (body) => { + let idPrestamo = await validador.validarId(body.idPrestamo).then((res) => res) + let busqueda = { where: { idPrestamo } } + let actualizar = { activo: false } + + return Prestamo.findOne(busqueda) + .then((res) => { + if (!res) validador.error('No existe ese prestamo.', 400) + if (res.activo === false) + validador.error('Ya ha sido desactivado este prestamo.', 400) + return Prestamo.update(actualizar, busqueda) + }) + .then(() => { + return { + code: 200, + message: 'Haz cancelado tu prestamo.', + } + }) +} + +module.exports = cancelar diff --git a/src/controller/prestamo/equipo.js b/src/controller/prestamo/equipo.js index 6ca9bca..f3ce92a 100644 --- a/src/controller/prestamo/equipo.js +++ b/src/controller/prestamo/equipo.js @@ -145,6 +145,7 @@ const equipo = async (body) => { }, }, }, + qr: `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${res.idPrestamo}`, }, } }) diff --git a/src/controller/prestamo/get.js b/src/controller/prestamo/get.js index 230f6c2..5369b6a 100644 --- a/src/controller/prestamo/get.js +++ b/src/controller/prestamo/get.js @@ -1,11 +1,69 @@ 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 get = async () => { - return Prestamo.findAll() - .then((res) => { - return res - }) - .catch((err) => {}) + let busqueda = { + include: [ + { model: Horario }, + { + model: Equipo, + include: [ + { model: Status }, + { model: Carrito, include: [{ model: TipoCarrito }] }, + ], + }, + ], + where: { activo: true }, + } + + return Prestamo.findAll(busqueda).then((res) => { + let data = [] + + for (let i = 0; i < res.length; i++) { + let prestamo = { + idPrestamo: res[i].idPrestamo, + horaFin: res[i].horaFin, + activo: res[i].activo, + createdAt: res[i].createdAt, + updatedAt: res[i].updatedAt, + idUsuario: res[i].idUsuario, + idOperadorEntrega: res[i].idOperadorEntrega, + idOperadorRegreso: res[i].idOperadorRegreso, + idMesa: res[i].idMesa, + Horario: { + idHorario: res[i].Horario.idHorario, + horario: res[i].Horario.horario, + }, + Equipo: { + idEquipo: res[i].Equipo.idEquipo, + noSerie: res[i].Equipo.noSerie, + noInventario: res[i].Equipo.noInventario, + sobrenombre: res[i].Equipo.sobrenombre, + activo: res[i].Equipo.activo, + updatedAt: res[i].Equipo.updatedAt, + Status: { + idStatus: res[i].Equipo.Status.idStatus, + status: res[i].Equipo.Status.status, + }, + Carrito: { + idCarrito: res[i].Equipo.Carrito.idCarrito, + sobrenombre: res[i].Equipo.Carrito.sobrenombre, + kiosko: res[i].Equipo.Carrito.kiosko, + TipoCarrito: { + idTipoCarrito: res[i].Equipo.Carrito.TipoCarrito.idTipoCarrito, + nombre: res[i].Equipo.Carrito.TipoCarrito.nombre, + }, + }, + }, + } + data.push(prestamo) + } + return { data, code: 200 } + }) } module.exports = get diff --git a/src/controller/prestamo/regreso.js b/src/controller/prestamo/regreso.js index e69de29..4e37546 100644 --- a/src/controller/prestamo/regreso.js +++ b/src/controller/prestamo/regreso.js @@ -0,0 +1,46 @@ +const validador = require('../validador') +const Prestamo = require('../../db/tables/Prestamo') +const Operador = require('../../db/tables/Operador') +const Equipo = require('../../db/tables/Equipo') + +const activar = async (body) => { + let idPrestamo = await validador.validarId(body.idPrestamo).then((res) => res) + let idOperador = await validador.validarId(body.idOperador).then((res) => res) + + return Operador.findOne({ where: { idOperador } }) + .then((res) => { + if (!res) validador.error('No existe este operador.', 400) + return Prestamo.findOne({ + where: { idPrestamo }, + include: [{ model: Equipo }], + }) + }) + .then((res) => { + if (!res) validador.error('No existe ese prestamo.', 400) + if (!res.activo && !res.idOperadorRegreso && !res.idOperadorEntrega) + validador.error('Este prestamo fue cancelado.', 400) + if (!res.idOperadorEntrega) + validador.error('Aun no ha sido entregado este equipo.', 400) + if (res.idOperadorRegreso) + validador.error('Ya se ha regresado este equipo.', 400) + if (!res.Equipo.activo) validador.error('Este equipo ya se entrego.', 400) + return Equipo.update( + { activo: false }, + { where: { idEquipo: res.idEquipo } } + ) + }) + .then(() => { + return Prestamo.update( + { idOperadorRegreso: idOperador, activo: false }, + { where: { idPrestamo } } + ) + }) + .then(() => { + return { + code: 200, + message: 'Se ha regresado el equipo correctamente.', + } + }) +} + +module.exports = activar diff --git a/src/controller/prestamo/salon.js b/src/controller/prestamo/salon.js index e69de29..d6bed5f 100644 --- a/src/controller/prestamo/salon.js +++ b/src/controller/prestamo/salon.js @@ -0,0 +1,11 @@ +const Prestamo = require('../../db/tables/Prestamo') + +const status = async (body) => { + let busqueda = { where: { idPrestamo: body.idPrestamo } } + + return Prestamo.findOne(busqueda).then((res) => { + return { code: 200, data: res } + }) +} + +module.exports = status diff --git a/src/controller/prestamo/status.js b/src/controller/prestamo/status.js index 306f67c..b0dc21d 100644 --- a/src/controller/prestamo/status.js +++ b/src/controller/prestamo/status.js @@ -1,11 +1,69 @@ +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 status = async (body) => { - return Prestamo.findOne({ where: { idPrestamo: body.idPrestamo } }) - .then((res) => { - return res - }) - .catch((err) => {}) + let idPrestamo = await validador.validarId(body.idPrestamo).then((res) => res) + let busqueda = { + include: [ + { model: Horario }, + { + model: Equipo, + include: [ + { model: Status }, + { model: Carrito, include: [{ model: TipoCarrito }] }, + ], + }, + ], + where: { idPrestamo }, + } + + 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, + }, + } + }) } module.exports = status diff --git a/src/routes/prestamo.js b/src/routes/prestamo.js index f70375a..0098c27 100644 --- a/src/routes/prestamo.js +++ b/src/routes/prestamo.js @@ -1,16 +1,28 @@ const express = require('express') const app = express() const get = require('../controller/prestamo/get') +const status = require('../controller/prestamo/status') const equipo = require('../controller/prestamo/equipo') +const cancelar = require('../controller/prestamo/cancelar') +const activar = require('../controller/prestamo/activar') +const regreso = require('../controller/prestamo/regreso') const route = '/prestamo' -// app.get(`${route}`, (req, res) => { -// return get(req.query) -// .then((data) => { -// res.status(data.code).json({ prestamo: data.data }) -// }) -// .catch((err) => res.status(err.code).json({ err: err.message })) -// }) +app.get(`${route}`, (req, res) => { + return get() + .then((data) => { + res.status(data.code).json({ prestamos: data.data }) + }) + .catch((err) => res.status(err.code).json({ err: err.message })) +}) + +app.get(`${route}/status`, (req, res) => { + return status(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) @@ -22,4 +34,37 @@ app.post(`${route}/equipo`, (req, res) => { }) }) +app.put(`${route}/cancelar`, (req, res) => { + return cancelar(req.body) + .then((data) => { + res.status(data.code).json({ message: data.message }) + }) + .catch((err) => { + console.log(err) + res.status(err.code).json({ err: err.message }) + }) +}) + +app.put(`${route}/activar`, (req, res) => { + return activar(req.body) + .then((data) => { + res.status(data.code).json({ message: data.message }) + }) + .catch((err) => { + console.log(err) + res.status(err.code).json({ err: err.message }) + }) +}) + +app.put(`${route}/regreso`, (req, res) => { + return regreso(req.body) + .then((data) => { + res.status(data.code).json({ message: data.message }) + }) + .catch((err) => { + console.log(err) + res.status(err.code).json({ err: err.message }) + }) +}) + module.exports = app