From 8356ae53cae6ab21194626f70bfbc2d3ae76b2dd Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Wed, 22 Sep 2021 23:54:03 -0500 Subject: [PATCH 1/3] Agregue hora min y max --- server/controller/Prestamo/pedir.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/server/controller/Prestamo/pedir.js b/server/controller/Prestamo/pedir.js index 6c964d7..94fbf94 100644 --- a/server/controller/Prestamo/pedir.js +++ b/server/controller/Prestamo/pedir.js @@ -12,14 +12,22 @@ const Usuario = require(`${dbPath}/Usuario`); const pedir = async (body) => { const ahora = moment(); + const horaMax = moment().format('20:00:00'); + const horaMin = moment().format('09:00:00'); const idUsuario = validarId(body.idUsuario); const idTipoCarrito = validarId(body.idTipoCarrito); const idPrograma = body.idPrograma ? validarId(body.idPrograma) : null; const idModulo = idPrograma ? 1 : validarId(body.idModulo); let idEquipo; - // Checar que sea en el horario establecido return TipoCarrito.findOne({ where: { idTipoCarrito } }) + .then((res) => { + if (ahora.format('HH:mm:ss') > horaMax) + throw new Error('Es demasido tarde para otorgar prestamos'); + if (ahora.format('HH:mm:ss') < horaMin) + throw new Error('Es demasido temprano para otorgar prestamos'); + return Prestamo.findOne({ where: { idUsuario } }); + }) .then((res) => { if (!res) throw new Error('No existe este tipo de equipo.'); return Modulo.findOne({ where: { idModulo } }); From 33f628a8109d7ee346d13f6455d27983bb0faba8 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Thu, 23 Sep 2021 16:30:11 -0500 Subject: [PATCH 2/3] ya multo en caso de que se demore en entregar el equipo --- server/controller/Multa/multar.js | 7 ++++--- server/controller/Prestamo/regresar.js | 23 +++++++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/server/controller/Multa/multar.js b/server/controller/Multa/multar.js index 8c03602..a612472 100644 --- a/server/controller/Multa/multar.js +++ b/server/controller/Multa/multar.js @@ -18,10 +18,9 @@ const multar = async (body) => { ); let prestamo = {}; let fechaFin = moment(); - return Operador.findOne({ where: { idOperador: idOperadorMulta } }) .then((res) => { - if (!res) throw new Error('No existe esta este operador.'); + if (!res) throw new Error('No existe este operador.'); return Infraccion.findOne({ where: { idInfraccion } }); }) .then((res) => { @@ -55,7 +54,9 @@ const multar = async (body) => { idPrestamo, }) ) - .then((res) => ({ message: `Se levantó correctamente el reporte de multa.` })); + .then((res) => ({ + message: `Se levantó correctamente el reporte de multa.`, + })); }; module.exports = multar; diff --git a/server/controller/Prestamo/regresar.js b/server/controller/Prestamo/regresar.js index dd53b07..9190efd 100644 --- a/server/controller/Prestamo/regresar.js +++ b/server/controller/Prestamo/regresar.js @@ -1,5 +1,7 @@ const moment = require('moment'); +const multar = require('../Multa/multar'); const { validarId } = require('../../helper/validar'); +const prestamo = require('./prestamoUsuario'); const dbPath = '../../db/tablas'; const Equipo = require(`${dbPath}/Equipo`); const Operador = require(`${dbPath}/Operador`); @@ -10,7 +12,6 @@ const regresar = async (body) => { const idOperadorRegreso = validarId(body.idOperadorRegreso); const ahora = moment(); - // Multar por hora de entrega return Operador.findOne({ where: { idOperador: idOperadorRegreso } }) .then((res) => { if (!res) throw new Error('No existe este operador.'); @@ -19,18 +20,28 @@ const regresar = async (body) => { include: [{ model: Equipo }], }); }) - .then((res) => { - if (!res) throw new Error('No existe este prestamo.'); - if (!res.activo) throw new Error('Este prestamo ya no esta activo.'); + .then(async (res) => { + if (!res) throw new Error('No existe este préstamo.'); + if (!res.activo) throw new Error('Este préstamo ya no esta activo.'); if (!res.Equipo.enUso) throw new Error('Aun no se ha entregado el equipo al usuario.'); + + if (res.horaFin > ahora) { + await multar({ + idOperadorMulta: idOperadorRegreso, + idPrestamo: res.idPrestamo, + idInfraccion: 1, + descripcion: 'Demora', + }); + } + return Equipo.update( { enUso: false, apartado: false }, { where: { idEquipo: res.Equipo.idEquipo } } ); }) - .then((res) => { - Prestamo.update( + .then(async (res) => { + await Prestamo.update( { idOperadorRegreso, horaEntrega: ahora.format(), activo: false }, { where: { idPrestamo } } ); From bbbdeedb40b180c66d4292ebfef807e381c94031 Mon Sep 17 00:00:00 2001 From: Andres2908 Date: Thu, 23 Sep 2021 19:33:27 -0500 Subject: [PATCH 3/3] Solo falta definir el mensaje y los 15 min extras --- server/controller/Infraccion/get.js | 4 +++- server/controller/Prestamo/regresar.js | 2 +- .../controller/Prestamo/regresarNumeroInventario.js | 12 +++++++++++- server/db/install.js | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/server/controller/Infraccion/get.js b/server/controller/Infraccion/get.js index 171f4f9..fa12ecc 100644 --- a/server/controller/Infraccion/get.js +++ b/server/controller/Infraccion/get.js @@ -1,5 +1,7 @@ const Infraccion = require('../../db/tablas/Infraccion'); +const { Op } = require('sequelize'); -const get = async () => Infraccion.findAll(); +const get = async () => + Infraccion.findAll({ where: { idInfraccion: { [Op.ne]: 1 } } }); module.exports = get; diff --git a/server/controller/Prestamo/regresar.js b/server/controller/Prestamo/regresar.js index 9190efd..aec630f 100644 --- a/server/controller/Prestamo/regresar.js +++ b/server/controller/Prestamo/regresar.js @@ -26,7 +26,7 @@ const regresar = async (body) => { if (!res.Equipo.enUso) throw new Error('Aun no se ha entregado el equipo al usuario.'); - if (res.horaFin > ahora) { + if (res.horaFin < ahora) { await multar({ idOperadorMulta: idOperadorRegreso, idPrestamo: res.idPrestamo, diff --git a/server/controller/Prestamo/regresarNumeroInventario.js b/server/controller/Prestamo/regresarNumeroInventario.js index ee290ff..ace5cd7 100644 --- a/server/controller/Prestamo/regresarNumeroInventario.js +++ b/server/controller/Prestamo/regresarNumeroInventario.js @@ -1,4 +1,5 @@ const moment = require('moment'); +const multar = require('../Multa/multar'); const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Equipo = require(`${dbPath}/Equipo`); @@ -23,12 +24,21 @@ const regresarNumeroInventario = async (body) => { include: [{ model: Equipo, where: { numeroInventario } }], }); }) - .then((res) => { + .then(async (res) => { if (!res) throw new Error('No existe un prestamo activo con este equipo.'); if (!res.Equipo.enUso) throw new Error('Aun no se ha entregado el equipo al usuario.'); idPrestamo = res.idPrestamo; + + if (res.horaFin < ahora) { + await multar({ + idOperadorMulta: idOperadorRegreso, + idPrestamo: res.idPrestamo, + idInfraccion: 1, + descripcion: 'Demora', + }); + } return Equipo.update( { enUso: false, apartado: false }, { where: { idEquipo: res.Equipo.idEquipo } } diff --git a/server/db/install.js b/server/db/install.js index f05244c..07ed86c 100644 --- a/server/db/install.js +++ b/server/db/install.js @@ -177,6 +177,7 @@ const dataAdmin = async () => { const dataInfraccion = async () => { const data = [ + { infraccion: 'Demora', gravedad: '1' }, { infraccion: 'Manchas de suciedad', gravedad: '1' }, { infraccion: 'Etiquetas Removidas', gravedad: '1' }, { infraccion: 'Rayon en carcasa', gravedad: '1' },