diff --git a/src/controller/carrera/get.js b/src/controller/carrera/get.js index 162ed5c..9f61b96 100644 --- a/src/controller/carrera/get.js +++ b/src/controller/carrera/get.js @@ -5,31 +5,27 @@ const Plantel = require('../../db/tables/Plantel') const get = async (body) => { let idPlantel = await validador.validarId(body.idPlantel).then((res) => res) - let busquedaCarrera = { - where: { idPlantel: body.idPlantel }, - include: [{ model: Carrera }], - } - let busquedaPlantel = { where: idPlantel } - return Plantel.findOne(busquedaPlantel) + return Plantel.findOne({ where: idPlantel }) .then((res) => { if (!res) validador.error('El plantel no existe.', 400) - return CarreraPlantel.findAll(busquedaCarrera) + return CarreraPlantel.findAll({ + where: { idPlantel: body.idPlantel }, + include: [{ model: Carrera }], + }) }) .then((res) => { let data = [] - for (let i = 0; i < res.length; i++) { - let carrera = { + for (let i = 0; i < res.length; i++) + data.push({ idCarreraPlantel: res[i].idCarreraPlantel, Carrera: { idCarrera: res[i].Carrera.idCarrera, carrera: res[i].Carrera.carrera, nivel: res[i].Carrera.nivel, }, - } - data.push(carrera) - } + }) return { code: 200, data } }) } diff --git a/src/controller/equipo/get.js b/src/controller/equipo/get.js index a300e94..faec7a9 100644 --- a/src/controller/equipo/get.js +++ b/src/controller/equipo/get.js @@ -6,15 +6,14 @@ const Status = require('../../db/tables/Status') const get = async (body) => { let idEquipo = await validador.validarId(body.idEquipo).then((res) => res) - let busqueda = { + + return Equipo.findOne({ where: { idEquipo }, include: [ { model: Carrito, include: [{ model: TipoCarrito }] }, { model: Status }, ], - } - - return Equipo.findOne(busqueda).then((res) => { + }).then((res) => { if (!res) validador.error('No existe el equipo.', 400) return { code: 200, diff --git a/src/controller/horario/get.js b/src/controller/horario/get.js index cd309f4..e5fd75e 100644 --- a/src/controller/horario/get.js +++ b/src/controller/horario/get.js @@ -1,19 +1,14 @@ const moment = require('moment') const Horario = require('../../db/tables/Horario') +const validador = require('../validador') const get = async () => { return Horario.findAll().then((res) => { - let data = [] let now = moment().add(15, 'minutes') + let data = [] for (let i = 0; i < res.length; i++) { - let hora = res[i].horario.substr(res[i].horario.indexOf('-') + 1) - let horaNumero = Number(hora.substr(0, hora.indexOf(':'))) - let horaLimite = moment() - - horaLimite.set('hour', horaNumero) - horaLimite.set('minute', 0) - horaLimite.set('second', 0) + let horaLimite = validador.stringToMoment(res[i].horario) /* Para la noche xd */ // horaLimite.add(1, 'days') diff --git a/src/controller/operador/create.js b/src/controller/operador/create.js index efdf789..d50c8b3 100644 --- a/src/controller/operador/create.js +++ b/src/controller/operador/create.js @@ -8,21 +8,18 @@ const create = async (body) => { let password = await validador .validarTexto(body.password) .then((res) => bcrypt.hashSync(res, Number(process.env.SALT_ROUNDS))) - let busqueda = { where: { nombre } } - return Operador.findOne(busqueda) + return Operador.findOne({ where: { nombre } }) .then((res) => { - let data = { + if (res) validador.error('Ya existe un operador con este nombre.', 400) + return Operador.create({ nombre, password, idTipoOperador: 2, - } - - if (res) validador.error('Ya existe un operador con este nombre.', 400) - return Operador.create(data) + }) }) .then((res) => { - return { code: 201, message: 'Se creo un operador correctamente' } + return { code: 201, message: 'Haz creado un operador.' } }) } diff --git a/src/controller/operador/get.js b/src/controller/operador/get.js index d3f978a..9fc6691 100644 --- a/src/controller/operador/get.js +++ b/src/controller/operador/get.js @@ -2,24 +2,20 @@ const Operador = require('../../db/tables/Operador') const TipoOperador = require('../../db/tables/TipoOperador') const get = async () => { - let busqueda = { + return Operador.findAll({ include: [{ model: TipoOperador }], - } - - return Operador.findAll(busqueda).then((res) => { + }).then((res) => { let data = [] for (let i = 0; i < res.length; i++) { - let operador = { + data.push({ idOperador: res[i].idOperador, nombre: res[i].nombre, TipoOperador: { idTipoOperador: res[i].TipoOperador.idTipoOperador, nombre: res[i].TipoOperador.nombre, }, - } - - data.push(operador) + }) } return { code: 200, diff --git a/src/controller/operador/login.js b/src/controller/operador/login.js index a5e8d50..248e267 100644 --- a/src/controller/operador/login.js +++ b/src/controller/operador/login.js @@ -6,15 +6,14 @@ const TipoOperador = require('../../db/tables/TipoOperador') const login = async (body) => { let nombre = await validador.validarTexto(body.nombre).then((res) => res) let password = await validador.validarTexto(body.password).then((res) => res) - let busqueda = { + + return Operador.findOne({ where: { nombre }, include: [{ model: TipoOperador }], - } - - return Operador.findOne(busqueda).then((res) => { + }).then((res) => { if (res) { if (!bcrypt.compareSync(password, res.password)) - validador.error('El Operador o contraseña son incorrectos.', 400) + validador.error('La contraseña es incorrecta.', 400) return { data: { idOperador: res.idOperador, @@ -23,11 +22,12 @@ const login = async (body) => { idTipoOperador: res.TipoOperador.idTipoOperador, nombre: res.TipoOperador.nombre, }, + token: '', }, code: 200, } } - validador.error('El usuario no existe.', 400) + validador.error('El operador no existe.', 400) }) } diff --git a/src/controller/prestamo/activar.js b/src/controller/prestamo/activar.js index 3d31c4f..e301012 100644 --- a/src/controller/prestamo/activar.js +++ b/src/controller/prestamo/activar.js @@ -1,3 +1,4 @@ +const { Op } = require('sequelize') const validador = require('../validador') const Prestamo = require('../../db/tables/Prestamo') const Operador = require('../../db/tables/Operador') @@ -10,27 +11,38 @@ const activar = async (body) => { return Operador.findOne({ where: { idOperador } }) .then((res) => { - if (!res) validador.error('No existe este operador.', 400) + if (!res) validador.error('No existe el 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) validador.error('No existe este prestamo.', 400) + if (!res.idOperadorEntrega) { + if (!res.activo) validador.error('Este prestamo fue cancelado.', 400) + if (res.Equipo.activo) + validador.error( + 'No se ha regresado el equipo del previo prestamo.', + 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) + validador.error('Ya se ha entregado el equipo al usuario.', 400) return Equipo.update( { activo: true }, - { where: { idEquipo: res.idEquipo }, order: [['updatedAt', 'DESC']] } + { where: { idEquipo: res.idEquipo } } ) }) .then(() => { + return Mesa.findAll({ + where: { [Op.and]: [{ activo: false }, { idStatus: 1 }] }, + order: [['updatedAt', 'DESC']], + }) + }) + .then((res) => { return Prestamo.update( - { idOperadorEntrega: idOperador }, + { idOperadorEntrega: idOperador, idMesa: res[0].idMesa }, { where: { idPrestamo } } ) }) diff --git a/src/controller/prestamo/equipo.js b/src/controller/prestamo/equipo.js index f3ce92a..8a86508 100644 --- a/src/controller/prestamo/equipo.js +++ b/src/controller/prestamo/equipo.js @@ -40,6 +40,7 @@ const equipo = async (body) => { }, ], where: { idStatus: 1 }, + order: [['updatedAt', 'DESC']], } return Prestamo.findOne(busquedaPrestamo) @@ -112,39 +113,7 @@ const equipo = async (body) => { return { code: 200, 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, - 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, - }, - }, - }, + prestamo: validador.objetoPrestamoEquipo(res), qr: `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${res.idPrestamo}`, }, } diff --git a/src/controller/usuario/create.js b/src/controller/usuario/create.js index a350b7c..eecbadf 100644 --- a/src/controller/usuario/create.js +++ b/src/controller/usuario/create.js @@ -17,15 +17,20 @@ const create = async (body) => { .then((res) => res) let correo = await validador.validarEmail(body.email).then((res) => res) let telefono = body.telefono + let idPlantel = await validador.validarId(body.idPlantel).then((res) => res) let idCarreraPlantel = await validador .validarId(body.idCarreraPlantel) .then((res) => res) - let idTipoUsuario = 1 + let idTipoUsuario + + if (idPlantel >= 200 && idPlantel < 300) idTipoUsuario = 1 + else idTipoUsuario = 2 return Usuario.findOne({ where: { idUsuario } }) .then((res) => { - if (res) validador.error('El numero de cuanta ya a sido registrado.', 400) - let data = { + if (res) + validador.error('El número de cuenta ya ha sido registrado.', 400) + return Usuario.create({ idUsuario, password, nombre, @@ -37,13 +42,12 @@ const create = async (body) => { foto: '', idTipoUsuario, idCarreraPlantel, - } - return Usuario.create(data) + }) }) .then((res) => { return { code: 201, - message: 'Se registro correctamente el numero de cuenta', + message: 'Te haz registrado correctamente.', } }) } diff --git a/src/controller/usuario/get.js b/src/controller/usuario/get.js index 253aa71..a059efa 100644 --- a/src/controller/usuario/get.js +++ b/src/controller/usuario/get.js @@ -1,3 +1,4 @@ +const { Op } = require('sequelize') const validador = require('../validador') const Usuario = require('../../db/tables/Usuario') const TipoUsuario = require('../../db/tables/TipoUsuario') @@ -5,10 +6,18 @@ const CarreraPlantel = require('../../db/tables/CarreraPlantel') const Carrera = require('../../db/tables/Carrera') const Plantel = require('../../db/tables/Plantel') const Prestamo = require('../../db/tables/Prestamo') +const Mesa = require('../../db/tables/Mesa') +const Status = require('../../db/tables/Status') +const Equipo = require('../../db/tables/Equipo') +const Carrito = require('../../db/tables/Carrito') +const TipoCarrito = require('../../db/tables/TipoCarrito') +const Horario = require('../../db/tables/Horario') const get = async (body) => { let idUsuario = await validador.validarId(body.idUsuario).then((res) => res) - let busqueda = { + let usuario = {} + + return Usuario.findOne({ where: { idUsuario }, include: [ { model: TipoUsuario }, @@ -17,13 +26,10 @@ const get = async (body) => { include: [{ model: Plantel }, { model: Carrera }], }, ], - } - - return Usuario.findOne(busqueda).then((res) => { - if (!res) validador.error('No existe este número de cuenta.', 400) - return { - code: 200, - data: { + }) + .then((res) => { + if (!res) validador.error('Ese número de cuenta no esta registrado.', 400) + usuario = { idUsuario: res.idUsuario, nombre: res.nombre, apPaterno: res.apPaterno, @@ -50,9 +56,32 @@ const get = async (body) => { nivel: res.CarreraPlantel.Carrera.nivel, }, }, - }, - } - }) + } + return Prestamo.findAll({ + where: { [Op.and]: [{ idUsuario }, { idSalon: null }] }, + include: [ + { model: Mesa, include: [{ model: Status }] }, + { model: Horario }, + { + model: Equipo, + include: [ + { model: Status }, + { model: Carrito, include: [{ model: TipoCarrito }] }, + ], + }, + ], + }) + }) + .then((res) => { + let prestamos = [] + + for (let i = 0; i < res.length; i++) + prestamos.push(validador.objetoPrestamoEquipo(res[i])) + return { + code: 200, + data: { usuario, prestamos }, + } + }) } module.exports = get diff --git a/src/controller/usuario/login.js b/src/controller/usuario/login.js index 3e145f6..a30a99c 100644 --- a/src/controller/usuario/login.js +++ b/src/controller/usuario/login.js @@ -6,24 +6,24 @@ const TipoUsuario = require('../../db/tables/TipoUsuario') const login = async (body) => { let idUsuario = await validador.validarId(body.idUsuario).then((res) => res) let password = await validador.validarTexto(body.password).then((res) => res) - let busqueda = { + + return Usuario.findOne({ where: { idUsuario }, include: [{ model: TipoUsuario }], - } - - return Usuario.findOne(busqueda).then((res) => { + }).then((res) => { if (res) { if (!bcrypt.compareSync(password, res.password)) - validador.error('El usuario o contraseña son incorrectos.', 400) + validador.error('La contraseña es incorrecta.', 400) return { + code: 200, data: { idUsuario: res.idUsuario, nombre: res.nombre, apPaterno: res.apPaterno, apMaterno: res.apMaterno, TipoUsuario: res.TipoUsuario, + token: '', }, - code: 200, } } validador.error('El usuario no existe.', 400) diff --git a/src/controller/validador.js b/src/controller/validador.js index c47c461..1716446 100644 --- a/src/controller/validador.js +++ b/src/controller/validador.js @@ -1,4 +1,5 @@ const validator = require('validator') +const moment = require('moment') const objetoError = (message, code) => { return { message, code } @@ -99,6 +100,17 @@ const objetoPrestamoEquipo = (prestamo) => { return data } +const stringToMoment = (strHour) => { + let strHora = strHour.substr(strHour.indexOf('-') + 1) + let horaNumero = Number(strHora.substr(0, strHora.indexOf(':'))) + let hora = moment() + + hora.set('hour', horaNumero) + hora.set('minute', 0) + hora.set('second', 0) + return hora +} + module.exports = { error, validarId, @@ -106,4 +118,5 @@ module.exports = { validarEmail, validarNumero, objetoPrestamoEquipo, + stringToMoment, } diff --git a/src/routes/operador.js b/src/routes/operador.js index ef1ca80..a859f97 100644 --- a/src/routes/operador.js +++ b/src/routes/operador.js @@ -24,7 +24,7 @@ app.post(`${route}/create`, (req, res) => { app.post(`${route}/login`, (req, res) => { return login(req.body) .then((data) => { - res.status(data.code).json({ operador: data.data }) + res.status(data.code).json(data.data) }) .catch((err) => res.status(err.code).json({ err: err.message })) }) diff --git a/src/routes/prestamo.js b/src/routes/prestamo.js index d20e7e5..ffafc19 100644 --- a/src/routes/prestamo.js +++ b/src/routes/prestamo.js @@ -36,7 +36,7 @@ app.get(`${route}/activo`, (req, res) => { app.post(`${route}/equipo`, (req, res) => { return equipo(req.body) .then((data) => { - res.status(data.code).json({ prestamo: data.data }) + res.status(data.code).json(data.data) }) .catch((err) => { res.status(err.code).json({ err: err.message }) diff --git a/src/routes/usuario.js b/src/routes/usuario.js index e1760cc..a536ff3 100644 --- a/src/routes/usuario.js +++ b/src/routes/usuario.js @@ -8,9 +8,12 @@ const route = '/usuario' app.get(`${route}`, (req, res) => { return get(req.query) .then((data) => { - res.status(data.code).json({ usuario: data.data }) + res.status(data.code).json(data.data) + }) + .catch((err) => { + console.log(err) + res.status(err.code).json({ err: err.message }) }) - .catch((err) => res.status(err.code).json({ err: err.message })) }) app.post(`${route}/create`, (req, res) => { @@ -24,7 +27,7 @@ app.post(`${route}/create`, (req, res) => { app.post(`${route}/login`, (req, res) => { return login(req.body) .then((data) => { - res.status(data.code).json({ usuario: data.data }) + res.status(data.code).json(data.data) }) .catch((err) => res.status(err.code).json({ err: err.message })) })