From 3cfff170e87da05daf233951d9b33ec366128333 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Tue, 30 Nov 2021 12:18:12 -0600 Subject: [PATCH] reasignar programas --- .../controller/Programa/reasignarProgramas.js | 40 +++++++++++++++++++ server/routes/Programa.js | 12 ++++++ 2 files changed, 52 insertions(+) create mode 100644 server/controller/Programa/reasignarProgramas.js diff --git a/server/controller/Programa/reasignarProgramas.js b/server/controller/Programa/reasignarProgramas.js new file mode 100644 index 0000000..bc453c4 --- /dev/null +++ b/server/controller/Programa/reasignarProgramas.js @@ -0,0 +1,40 @@ +const { validarId, validarCorreo } = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Usuario = require(`${dbPath}/Usuario`); + +const reasignarProgramas = async (body) => { + const idUsuario = validarId(body.idUsuario); + const correoOtroResponsable = validarCorreo(body.correoOtroResponsable); + let otorResponsable = {}; + + return Usuario.findOne({ + where: { idUsuario }, + }) + .then((res) => { + if (!res) throw new Error('No existe este usuario.'); + if (res.idTipoUsuario != 2) + throw new Error('No es un usuario de tipo responsable'); + if (res.usuario === correoOtroResponsable) + throw new Error('Son el mismo usuario.'); + return Usuario.findOne({ where: { usuario: correoOtroResponsable } }); + }) + .then((res) => { + if (!res) throw new Error('No existe este usuario.'); + otorResponsable = res; + return Programa.update( + { idUsuario }, + { + where: { idUsuario: otorResponsable.idUsuario }, + } + ); + }) + .then((res) => + Usuario.destroy({ where: { idUsuario: otorResponsable.idUsuario } }) + ) + .then((res) => ({ + message: `Se elimino correctamente al usuario ${correoOtroResponsable} y se reasigno correctamente sus programas.`, + })); +}; + +module.exports = reasignarProgramas; diff --git a/server/routes/Programa.js b/server/routes/Programa.js index 469fcb0..fbce79a 100644 --- a/server/routes/Programa.js +++ b/server/routes/Programa.js @@ -8,6 +8,7 @@ const controllerPath = '../controller/Programa'; const cargaMasiva = require(`${controllerPath}/cargaMasiva`); const programasAdmin = require(`${controllerPath}/programasAdmin`); const programasResponsable = require(`${controllerPath}/programasResponsable`); +const reasignarProgramas = require(`${controllerPath}/reasignarProgramas`); // POST app.post( @@ -30,6 +31,17 @@ app.post( } ); +// PUT +app.put(`${route}/reasignar_programas`, verificaToken, (req, res) => { + return reasignarProgramas(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + // GET app.get(`${route}/programas_admin`, verificaToken, (req, res) => { return programasAdmin(req.query)