From cd90641c07e5571c1b3e38ca165c02d3d101f53a Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 13 Feb 2022 20:38:54 -0600 Subject: [PATCH] multas aparentemente listas --- server/controller/Multa/multar.js | 41 +++++++++++++++--- server/controller/Multa/multarIdPrestamo.js | 43 ++++--------------- .../Multa/multarNumeroInventario.js | 34 ++++----------- 3 files changed, 50 insertions(+), 68 deletions(-) diff --git a/server/controller/Multa/multar.js b/server/controller/Multa/multar.js index 80ba34f..a7be73f 100644 --- a/server/controller/Multa/multar.js +++ b/server/controller/Multa/multar.js @@ -9,6 +9,7 @@ const Prestamo = require(`${dbPath}/Prestamo`); const Usuario = require(`${dbPath}/Usuario`); const multar = async (body) => { + const ahora = moment(); const idOperadorMulta = validar.validarNumeroEntero( body.idOperadorMulta, 'id operador multa', @@ -43,8 +44,6 @@ const multar = async (body) => { if (!res) throw new Error('No existe esta infracción.'); // Checar si tiene una multa activa, agragar días a multa gravedad = res.gravedad; - if (gravedad === '1') fechaFin.add(7, 'd'); - else fechaFin.add(100, 'y'); return Prestamo.findOne({ where: { idPrestamo }, include: [{ model: Usuario }], @@ -52,6 +51,10 @@ const multar = async (body) => { }) .then((res) => { if (!res) throw new Error('No existe este préstamo.'); + if (res.canceladoUsuario || res.canceladoOperador) + throw new Error( + 'No se puede usar un préstamo cancelado para multar a un usuario.' + ); prestamo = res; return Prestamo.findOne({ where: { idUsuario: prestamo.idUsuario, activo: true }, @@ -60,17 +63,41 @@ const multar = async (body) => { .then((res) => { if (res) throw new Error( - 'No se puede multar a este usuario ya que tiene un préstamo activo.' + 'No se puede multar a un usuario mientras tenga un préstamo activo.' ); return Multa.findOne({ where: { idPrestamo, idInfraccion: { [Op.ne]: 1 } }, }); }) - .then((res) => { + .then(async (res) => { if (res) throw new Error( 'Este préstamo ya ha sido usado para multar a un usuario.' ); + if (prestamo.Usuario.multa) { + await Multa.findOne({ + where: { + createdAt: { [Op.gte]: ahora }, + fechaFin: { [Op.lte]: ahora }, + }, + include: [ + { + model: Prestamo, + include: [ + { model: Usuario, where: { idUsuario: prestamo.idUsuario } }, + ], + }, + ], + }).then((res) => { + if (!res) + throw new Error( + 'El usuario esta multado pero no se encontro una multa activa. Favor de comunicarse con los desarrolladores.' + ); + fechaFin.moment(res.fechaFin); + }); + } + if (gravedad === '1') fechaFin.add(7, 'd'); + else fechaFin.add(100, 'y'); return Usuario.update( { multa: true }, { where: { idUsuario: prestamo.idUsuario } } @@ -78,11 +105,11 @@ const multar = async (body) => { }) .then(() => Multa.create({ - descripcion, - fechaFin: fechaFin.format('YYYY-MM-DD'), + idPrestamo, idOperadorMulta, idInfraccion, - idPrestamo, + descripcion, + fechaFin: fechaFin.format('YYYY-MM-DD'), }) ) .then(() => ({ diff --git a/server/controller/Multa/multarIdPrestamo.js b/server/controller/Multa/multarIdPrestamo.js index 0970863..8e0a59d 100644 --- a/server/controller/Multa/multarIdPrestamo.js +++ b/server/controller/Multa/multarIdPrestamo.js @@ -1,5 +1,4 @@ const moment = require('moment'); -const { Op } = require('sequelize'); const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Infraccion = require(`${dbPath}/Infraccion`); @@ -31,8 +30,6 @@ const multar = async (body) => { 500 ); let fechaFin = moment(); - let prestamo = {}; - let gravedad = ''; return Operador.findOne({ where: { idOperador: idOperadorMulta } }) .then((res) => { @@ -41,51 +38,27 @@ const multar = async (body) => { }) .then((res) => { if (!res) throw new Error('No existe esta infracción.'); - // Checar si tiene una multa activa, agragar días a multa - gravedad = res.gravedad; - if (gravedad === '1') fechaFin.add(7, 'd'); + if (res.gravedad === '1') fechaFin.add(7, 'd'); else fechaFin.add(100, 'y'); - return Prestamo.findOne({ - where: { idPrestamo }, - include: [{ model: Usuario }], - }); + return Prestamo.findOne({ where: { idPrestamo } }); }) .then((res) => { if (!res) throw new Error('No existe este préstamo.'); - prestamo = res; - return Prestamo.findOne({ - where: { idUsuario: prestamo.idUsuario, activo: true }, - }); - }) - .then((res) => { - if (res) - throw new Error( - 'No se puede multar a este usuario ya que tiene un préstamo activo.' - ); - return Multa.findOne({ - where: { idPrestamo, idInfraccion: { [Op.ne]: 1 } }, - }); - }) - .then((res) => { - if (res) - throw new Error( - 'Este préstamo ya ha sido usado para multar a un usuario.' - ); return Usuario.update( { multa: true }, - { where: { idUsuario: prestamo.idUsuario } } + { where: { idUsuario: res.idUsuario } } ); }) - .then((res) => + .then(() => Multa.create({ - descripcion, - fechaFin: fechaFin.format('YYYY-MM-DD'), + idPrestamo, idOperadorMulta, idInfraccion, - idPrestamo, + descripcion, + fechaFin: fechaFin.format('YYYY-MM-DD'), }) ) - .then((res) => ({ + .then(() => ({ message: `Se levantó correctamente el reporte de multa.`, })); }; diff --git a/server/controller/Multa/multarNumeroInventario.js b/server/controller/Multa/multarNumeroInventario.js index 59affec..a7ca751 100644 --- a/server/controller/Multa/multarNumeroInventario.js +++ b/server/controller/Multa/multarNumeroInventario.js @@ -32,8 +32,7 @@ const multarNumeroInventario = async (body) => { 500 ); let fechaFin = moment(); - let prestamo = {}; - let gravedad = ''; + let idPrestamo = null; return Operador.findOne({ where: { idOperador: idOperadorMulta } }) .then((res) => { @@ -42,46 +41,29 @@ const multarNumeroInventario = async (body) => { }) .then((res) => { if (!res) throw new Error('No existe esta infracción.'); - // Checar si tiene una multa activa, agragar días a multa - gravedad = res.gravedad; - if (gravedad === '1') fechaFin.add(7, 'd'); + if (res.gravedad === '1') fechaFin.add(7, 'd'); else fechaFin.add(100, 'y'); return Prestamo.findOne({ where: { activo: true }, - include: [ - { model: Equipo, where: { numeroInventario } }, - { model: Usuario }, - ], + include: [{ model: Equipo, where: { numeroInventario } }], }); }) .then((res) => { if (!res) throw new Error('No existe un prestamo activo con este equipo.'); - prestamo = res; - return Multa.findOne({ - where: { - idPrestamo: prestamo.idPrestamo, - idInfraccion: { [Op.ne]: 1 }, - }, - }); - }) - .then((res) => { - if (res) - throw new Error( - 'Este préstamo ya ha sido usado para multar a un usuario.' - ); + idPrestamo = res.idPrestamo; return Usuario.update( { multa: true }, - { where: { idUsuario: prestamo.idUsuario } } + { where: { idUsuario: res.idUsuario } } ); }) .then(() => Multa.create({ - descripcion, - fechaFin: fechaFin.format('YYYY-MM-DD'), + idPrestamo, idOperadorMulta, idInfraccion, - idPrestamo: prestamo.idPrestamo, + descripcion, + fechaFin: fechaFin.format('YYYY-MM-DD'), }) ) .then(() => ({