From bf7dd8f3945aeba25d579862cbb84987ced058eb Mon Sep 17 00:00:00 2001 From: lemuel Date: Thu, 2 Sep 2021 17:27:28 -0500 Subject: [PATCH] reporte y multa por numero de inventari --- .../Multa/multarNumeroInventario.js | 63 +++++++++++++++++++ .../Reporte/reportarNumeroInventario.js | 41 ++++++++++++ server/routes/Multa.js | 17 ++++- server/routes/Reporte.js | 15 +++++ 4 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 server/controller/Multa/multarNumeroInventario.js create mode 100644 server/controller/Reporte/reportarNumeroInventario.js diff --git a/server/controller/Multa/multarNumeroInventario.js b/server/controller/Multa/multarNumeroInventario.js new file mode 100644 index 0000000..eaa45d7 --- /dev/null +++ b/server/controller/Multa/multarNumeroInventario.js @@ -0,0 +1,63 @@ +const moment = require('moment'); +const validar = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Infraccion = require(`${dbPath}/Infraccion`); +const Equipo = require(`${dbPath}/Equipo`); +const Multa = require(`${dbPath}/Multa`); +const Prestamo = require(`${dbPath}/Prestamo`); +const Usuario = require(`${dbPath}/Usuario`); + +const multar = async (body) => { + const idInfraccion = validar.validarId(body.idInfraccion); + const numeroInventario = validar.validarAlfanumerico( + body.numeroInventario, + 'El numero de inventario', + 20 + ); + const descripcion = validar.validarTexto( + body.descripcion, + 'La descripción', + 500 + ); + let prestamo = {}; + let fechaFin = moment(); + + return Infraccion.findOne({ where: { idInfraccion } }) + .then((res) => { + if (!res) throw new Error('No existe esta infracción.'); + 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 }, + ], + }); + }) + .then((res) => { + if (!res) + throw new Error('No existe un prestamo activo con este equipo.'); + prestamo = res; + return Multa.findOne({ where: { idPrestamo: prestamo.idPrestamo } }); + }) + .then((res) => { + if (res) + throw new Error('A este prestamo ya se le ha asignado una multa.'); + return Usuario.update( + { multa: true }, + { where: { idUsuario: prestamo.Usuario.idUsuario } } + ); + }) + .then((res) => + Multa.create({ + descripcion, + idInfraccion, + idPrestamo: prestamo.idPrestamo, + fechaFin: fechaFin.format(), + }) + ) + .then((res) => ({ message: `Se multo correctamente al alumno.` })); +}; + +module.exports = multar; diff --git a/server/controller/Reporte/reportarNumeroInventario.js b/server/controller/Reporte/reportarNumeroInventario.js new file mode 100644 index 0000000..3871de6 --- /dev/null +++ b/server/controller/Reporte/reportarNumeroInventario.js @@ -0,0 +1,41 @@ +const validar = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Reporte = require(`${dbPath}/Reporte`); +const Prestamo = require(`${dbPath}/Prestamo`); +const Equipo = require(`${dbPath}/Equipo`); + +const reportar = async (body) => { + const numeroInventario = validar.validarAlfanumerico( + body.numeroInventario, + 'El numero de inventario', + 20 + ); + const descripcion = validar.validarTexto( + body.descripcion, + 'La descripción', + 500 + ); + let prestamo = {}; + + return Prestamo.findOne({ + where: { activo: true }, + include: [{ model: Equipo, where: { numeroInventario } }], + }) + .then((res) => { + if (!res) + throw new Error('No existe un prestamo activo con este equipo.'); + prestamo = res; + return Reporte.findOne({ where: { idPrestamo: prestamo.idPrestamo } }); + }) + .then((res) => { + if (res) throw new Error('Ya existe un reporte con este prestamo.'); + return Reporte.create({ + descripcion, + idPrestamo: prestamo.idPrestamo, + idEquipo: prestamo.idEquipo, + }); + }) + .then((res) => ({ message: 'Se levanto correctamente el reporte.' })); +}; + +module.exports = reportar; diff --git a/server/routes/Multa.js b/server/routes/Multa.js index f9cba66..d761b36 100644 --- a/server/routes/Multa.js +++ b/server/routes/Multa.js @@ -3,10 +3,11 @@ const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/multa'; const multar = require('../controller/Multa/multar'); +const multarNumeroInventario = require('../controller/Multa/multarNumeroInventario'); const historialMultas = require('../controller/Multa/historialMultas'); app.post( - `${route}`, + `${route}/multar`, //verificaToken, (req, res) => { return multar(req.body) @@ -19,6 +20,20 @@ app.post( } ); +app.post( + `${route}/multar_numero_inventario`, + //verificaToken, + (req, res) => { + return multarNumeroInventario(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); + } +); + app.get( `${route}/historial_multas`, //verificaToken, diff --git a/server/routes/Reporte.js b/server/routes/Reporte.js index c00a1a3..d39b777 100644 --- a/server/routes/Reporte.js +++ b/server/routes/Reporte.js @@ -4,6 +4,7 @@ const { verificaToken } = require('../middleware/autentificacion'); const route = '/reporte'; const reportar = require('../controller/Reporte/reportar'); const reportarEquipo = require('../controller/Reporte/reportarEquipo'); +const reportarNumeroInventario = require('../controller/Reporte/reportarNumeroInventario'); const historialReportes = require('../controller/Reporte/historialReportes'); app.post( @@ -34,6 +35,20 @@ app.post( } ); +app.post( + `${route}/reportar_numero_inventario`, + //verificaToken, + (req, res) => { + return reportarNumeroInventario(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); + } +); + app.get( `${route}/historial_reportes`, //verificaToken,