diff --git a/app.js b/app.js deleted file mode 100644 index 2c2a27d..0000000 --- a/app.js +++ /dev/null @@ -1,26 +0,0 @@ -require('./config/config'); -const colors = require('colors'); -const bodyParser = require('body-parser'); -const cors = require('cors'); -const express = require('express'); -const app = express(); - -app.use(cors()); - -app.use( - bodyParser.urlencoded({ - extended: false, - }) -); - -app.use(bodyParser.json()); - -app.get('/', (req, res) => res.send('API Plantilla')); - -app.use(require('./routes/index')); - -app.listen(Number(process.env.PORT), () => - console.log( - `API Plantilla corriendo en el puerto: ${process.env.PORT}`.rainbow - ) -); diff --git a/config/config.js b/config/config.js deleted file mode 100644 index b7736ee..0000000 --- a/config/config.js +++ /dev/null @@ -1,11 +0,0 @@ -const dotenv = require('dotenv'); -const colors = require('colors'); -let result = {}; - -try { - result = dotenv.config(); - if (result.error) throw result.error; - console.log('El archivo .env se cargado correctamente.'.underline.bold.cyan); -} catch (err) { - console.log('El archivo .env no se cargo.'.underline.bold.red); -} diff --git a/config/sequelize.conf.js b/config/sequelize.conf.js deleted file mode 100644 index 3502aaf..0000000 --- a/config/sequelize.conf.js +++ /dev/null @@ -1,19 +0,0 @@ -require('./config'); -const { Sequelize } = require('sequelize'); - -const sequelize = new Sequelize( - process.env.DB, - process.env.USERDB, - process.env.PASSWORDDB, - { - host: process.env.HOSTDB, - dialect: process.env.TYPEDB, - logging: false, - dialectOptions: { - useUTC: false, - }, - timezone: '-05:00', - } -); - -module.exports = sequelize; diff --git a/config/test.js b/config/test.js deleted file mode 100644 index dca3a96..0000000 --- a/config/test.js +++ /dev/null @@ -1,13 +0,0 @@ -const sequelize = require('./sequelize.conf'); -require('colors'); - -sequelize - .authenticate() - .then(() => { - console.log('Se ha conectado a la base de datos exitosamente.'.green); - process.exit(); - }) - .catch((err) => { - console.error('Hubo un error al conectarse a la base de datos: '.red, err); - process.exit(); - }); diff --git a/db/data-fake.js b/db/data-fake.js deleted file mode 100644 index a2830eb..0000000 --- a/db/data-fake.js +++ /dev/null @@ -1,32 +0,0 @@ -const Usuario = require('./tablas/Usuario'); -const { encriptar } = require('../helper/encriptar'); - -const dataUsuarios = async () => { - let usuario = ['416313221', '111111111', '222222222']; - let nombre = [ - 'Adriana De Luna Ramirez', - 'Nombre Falso 1', - 'Nombre Falso 2', - ]; - - for (let i = 0; i < usuario.length; i++) { - await Usuario.create({ - usuario: usuario[i], - nombre: nombre[i], - password: encriptar('holi'), - idTipoUsuario: 2, - }); - console.log(`Se insertó el usuario ${usuario[i]}.`.magenta); - } -}; - -const exec = async () => { - await dataUsuarios(); - console.log( - '\nSe ha instalado exitosamente la información falsa en la base de datos.\n' - .underline.bold.green - ); - process.exit(); -}; - -exec(); diff --git a/db/install.js b/db/install.js deleted file mode 100644 index 9a98f47..0000000 --- a/db/install.js +++ /dev/null @@ -1,302 +0,0 @@ -require('../config/config'); -const colors = require('colors'); -// const encriptar = require('../helper/encriptar'); -const TipoUsuario = require('./tablas/TipoUsuario'); -const Periodo = require('./tablas/Periodo'); -const Carrera = require('./tablas/Carrera'); -const TipoCuestionario = require('./tablas/TipoCuestionario'); -const TipoPregunta = require('./tablas/TipoPregunta'); -const Modalidad = require('./tablas/Modalidad'); -const Alumno = require('./tablas/Alumno'); -const Grupo = require('./tablas/Grupo'); -const Materia = require('./tablas/Materia'); -const CarreraPeriodo = require('./tablas/CarreraPeriodo'); -const Usuario = require('./tablas/Usuario'); -const Trabajador = require('./tablas/Trabajador'); -const UsuarioCarrera = require('./tablas/UsuarioCarrera'); -const Cuestionario = require('./tablas/Cuestionario'); -const CarreraPeriodoGrupo = require('./tablas/CarreraPeriodoGrupo'); -const CuestionarioCarrera = require('./tablas/CuestionarioCarrera'); -const Seccion = require('./tablas/Seccion'); -const GrupoMateria = require('./tablas/GrupoMateria'); -const Pregunta = require('./tablas/Pregunta'); -const MateriaAlumno = require('./tablas/MateriaAlumno'); -const Opcion = require('./tablas/Opcion'); -const RespuestaAbiertaEd = require('./tablas/RespuestaAbiertaEd'); -const RespuestaEd = require('./tablas/RespuestaEd'); -const RespuestaAbiertaAlumno = require('./tablas/RespuestaAbiertaAlumno'); -const RespuestaAlumno = require('./tablas/RespuestaAlumno'); -const RespuestaAbiertaTrabajador = require('./tablas/RespuestaAbiertaTrabajador'); -const RespuestaTrabajador = require('./tablas/RespuestaTrabajador'); -const DirigidoA = require('./tablas/DirigidoA'); - -const drop = async () => { - console.log('\nPaso 1) Desinstalando la db.'.bold.blue); - - await RespuestaTrabajador.drop(); - console.log('La tabla RespuestaTrabajador se desinstalo correctamente.'.magenta); - - await RespuestaAbiertaTrabajador.drop(); - console.log('La tabla RespuestaAbiertaTrabajador se desinstalo correctamente.'.magenta); - - await RespuestaAlumno.drop(); - console.log('La tabla RespuestaAlumno se desinstalo correctamente.'.magenta); - - await RespuestaAbiertaAlumno.drop(); - console.log('La tabla RespuestaAbiertaAlumno se desinstalo correctamente.'.magenta); - - await RespuestaAbiertaEd.drop(); - console.log('La tabla RespuestaAbiertaEd se desinstalo correctamente.'.magenta); - - await RespuestaEd.drop(); - console.log('La tabla RespuestaEd se desinstalo correctamente.'.magenta); - - await Opcion.drop(); - console.log('La tabla Opcion se desinstalo correctamente.'.magenta); - - await MateriaAlumno.drop(); - console.log('La tabla MateriaAlumno se desinstalo correctamente.'.magenta); - - await Pregunta.drop(); - console.log('La tabla Pregunta se desinstalo correctamente.'.magenta); - - await GrupoMateria.drop(); - console.log('La tabla GrupoMateria se desinstalo correctamente.'.magenta); - - await Seccion.drop(); - console.log('La tabla Seccion se desinstalo correctamente.'.magenta); - - await CuestionarioCarrera.drop(); - console.log('La tabla CuestionarioCarrera se desinstalo correctamente.'.magenta); - - await CarreraPeriodoGrupo.drop(); - console.log('La tabla CarreraPeriodoGrupo se desinstalo correctamente.'.magenta); - - await Cuestionario.drop(); - console.log('La tabla Cuestionario se desinstalo correctamente.'.magenta); - - await UsuarioCarrera.drop(); - console.log('La tabla UsuarioCarrera se desinstalo correctamente.'.magenta); - - await Trabajador.drop(); - console.log('La tabla Trabajador se desinstalo correctamente.'.magenta); - - await Usuario.drop(); - console.log('La tabla Usuario se desinstalo correctamente.'.magenta); - - await CarreraPeriodo.drop(); - console.log('La tabla CarreraPeriodo se desinstalo correctamente.'.magenta); - - await Materia.drop(); - console.log('La tabla Materia se desinstalo correctamente.'.magenta); - - await Grupo.drop(); - console.log('La tabla Grupo se desinstalo correctamente.'.magenta); - - await Alumno.drop(); - console.log('La tabla Alumno se desinstalo correctamente.'.magenta); - - await Modalidad.drop(); - console.log('La tabla Modalidad se desinstalo correctamente.'.magenta); - - await TipoPregunta.drop(); - console.log('La tabla TipoPregunta se desinstalo correctamente.'.magenta); - - await TipoCuestionario.drop(); - console.log('La tabla TipoCuestionario se desinstalo correctamente.'.magenta); - - await DirigidoA.drop(); - console.log('La tabla DirigidoA se desinstalo correctamente.'.magenta); - - await Carrera.drop(); - console.log('La tabla Carrera se desinstalo correctamente.'.magenta); - - await Periodo.drop(); - console.log('La tabla Periodo se desinstalo correctamente.'.magenta); - - await TipoUsuario.drop(); - console.log('La tabla TipoUsuario se desinstalo correctamente.'.magenta); - -}; - -const sync = async () => { - console.log('\nPaso 2) Instalando la db.'.bold.blue); - - await TipoUsuario.sync(); - console.log('La tabla TipoUsuario se instalo correctamente.'.magenta); - - await Periodo.sync(); - console.log('La tabla Periodo se instalo correctamente.'.magenta); - - await Carrera.sync(); - console.log('La tabla Carrera se instalo correctamente.'.magenta); - - await DirigidoA.sync(); - console.log('La tabla DirigidoA se instalo correctamente.'.magenta); - - await TipoCuestionario.sync(); - console.log('La tabla TipoCuestionario se instalo correctamente.'.magenta); - - await TipoPregunta.sync(); - console.log('La tabla TipoPregunta se instalo correctamente.'.magenta); - - await Modalidad.sync(); - console.log('La tabla Modalidad se instalo correctamente.'.magenta); - - await Alumno.sync(); - console.log('La tabla Alumno se instalo correctamente.'.magenta); - - await Grupo.sync(); - console.log('La tabla Grupo se instalo correctamente.'.magenta); - - await Materia.sync(); - console.log('La tabla Materia se instalo correctamente.'.magenta); - - await CarreraPeriodo.sync(); - console.log('La tabla CarreraPeriodo se instalo correctamente.'.magenta); - - await Usuario.sync(); - console.log('La tabla Usuario se instalo correctamente.'.magenta); - - await Trabajador.sync(); - console.log('La tabla Trabajador se instalo correctamente.'.magenta); - - await UsuarioCarrera.sync(); - console.log('La tabla UsuarioCarrera se instalo correctamente.'.magenta); - - await Cuestionario.sync(); - console.log('La tabla Cuestionario se instalo correctamente.'.magenta); - - await CarreraPeriodoGrupo.sync(); - console.log('La tabla CarreraPeriodoGrupo se instalo correctamente.'.magenta); - - await CuestionarioCarrera.sync(); - console.log('La tabla CuestionarioCarrera se instalo correctamente.'.magenta); - - await Seccion.sync(); - console.log('La tabla Seccion se instalo correctamente.'.magenta); - - await GrupoMateria.sync(); - console.log('La tabla GrupoMateria se instalo correctamente.'.magenta); - - await Pregunta.sync(); - console.log('La tabla Pregunta se instalo correctamente.'.magenta); - - await MateriaAlumno.sync(); - console.log('La tabla MateriaAlumno se instalo correctamente.'.magenta); - - await Opcion.sync(); - console.log('La tabla Opcion se instalo correctamente.'.magenta); - - await RespuestaEd.sync(); - console.log('La tabla RespuestaEd se instalo correctamente.'.magenta); - - await RespuestaAbiertaEd.sync(); - console.log('La tabla RespuestaAbiertaEd se instalo correctamente.'.magenta); - - await RespuestaAbiertaAlumno.sync(); - console.log('La tabla RespuestaAbiertaAlumno se instalo correctamente.'.magenta); - - await RespuestaAlumno.sync(); - console.log('La tabla Opcion se instalo correctamente.'.magenta); - - await RespuestaAbiertaTrabajador.sync(); - console.log('La tabla RespuestaAbiertaTrabajador se instalo correctamente.'.magenta); - - await RespuestaTrabajador.sync(); - console.log('La tabla RespuestaTrabajador se instalo correctamente.'.magenta); - -}; - -const dataTipoUsuario = async () => { - const data = ['admin', 'alumno', 'profesor']; - - console.log('\nPaso 3) Instalando catalogo tipo usuario.'.bold.blue); - for (let i = 0; i < data.length; i++) - await TipoUsuario.create({ tipoUsuario: data[i] }); -}; - -const dataModalidad = async () => { - const data = ['Presencial', 'A distancia']; - - console.log('\nPaso 4) Instalando catalogo modalidad.'.bold.blue); - for (let i = 0; i < data.length; i++) - await Modalidad.create({ modalidad: data[i] }); -}; - -const dataTipoPregunta = async () => { - const data = ['Abierta', 'Cerrada', 'Opcion multiple']; - - console.log('\nPaso 5) Instalando catalogo tipo pregunta.'.bold.blue); - for (let i = 0; i < data.length; i++) - await TipoPregunta.create({ tipoPregunta: data[i] }); -}; - -const dataDirigidoA = async () => { - const data = ['Alumnos', 'ED', 'Trabajadores']; - - console.log('\nPaso 6) Instalando catalogo tipo cuestionario.'.bold.blue); - for (let i = 0; i < data.length; i++) - await DirigidoA.create({ dirigidoA: data[i] }); -}; - -const dataTipoCuestionario = async () => { - const data = ['Simple', 'Dependiente']; - - console.log('\nPaso 7) Instalando catalogo tipo cuestionario.'.bold.blue); - for (let i = 0; i < data.length; i++) - await TipoCuestionario.create({ tipoCuestionario: data[i], idDirigidoA: i+1 }); -}; - -const dataCarrera = async () => { - const data = ['Carrera 1', 'Carrera 2']; - - console.log('\nPaso 8) Instalando catalogo carrera.'.bold.blue); - for (let i = 0; i < data.length; i++) - await Carrera.create({ carrera: data[i] }); -}; - -const dataPeriodo = async () => { - const data = ['Periodo 1', 'Periodo 2']; - - console.log('\nPaso 9) Instalando catalogo periodo.'.bold.blue); - for (let i = 0; i < data.length; i++) - await Periodo.create({ periodo: data[i], activo: true}); -}; - -const dataGrupo = async () => { - const data = ['Grupo 1', 'Grupo 2']; - - console.log('\nPaso 10) Instalando catalogo grupo.'.bold.blue); - for (let i = 0; i < data.length; i++) - await Grupo.create({ grupo: data[i] }); -}; - -const dataMateria = async () => { - const data = ['Materia 1', 'Materia 2']; - - console.log('\nPaso 11) Instalando catalogo materia.'.bold.blue); - for (let i = 0; i < data.length; i++) - await Materia.create({ materia: data[i] }); -}; - -const exe = async () => { - await drop(); - await sync(); - await dataTipoUsuario(); - await dataModalidad(); - await dataTipoPregunta(); - await dataDirigidoA(); - await dataTipoCuestionario(); - await dataCarrera(); - await dataPeriodo(); - await dataGrupo(); - await dataMateria(); - console.log( - '\nSe ha instalado exitosamente la base de datos.\n'.underline.bold.green - ); - - process.exit(); -}; - -exe(); diff --git a/db/tablas/TipoUsuario.js b/db/tablas/TipoUsuario.js deleted file mode 100644 index deba06d..0000000 --- a/db/tablas/TipoUsuario.js +++ /dev/null @@ -1,27 +0,0 @@ -const { DataTypes, Model } = require('sequelize'); -const sequelize = require('../../config/sequelize.conf'); - -class TipoUsuario extends Model {} -TipoUsuario.init( - { - idTipoUsuario: { - type: DataTypes.INTEGER, - primaryKey: true, - allowNull: false, - unique: true, - autoIncrement: true, - }, - tipoUsuario: { - type: DataTypes.STRING(15), - allowNull: false, - }, - }, - { - sequelize, - modelName: 'TipoUsuario', - tableName: 'tipo_usuario', - timestamps: false, - } -); - -module.exports = TipoUsuario; diff --git a/db/tablas/Usuario.js b/db/tablas/Usuario.js deleted file mode 100644 index 84f5181..0000000 --- a/db/tablas/Usuario.js +++ /dev/null @@ -1,42 +0,0 @@ -const { DataTypes, Model } = require('sequelize'); -const sequelize = require('../../config/sequelize.conf'); -const TipoUsuario = require('./TipoUsuario'); - -class Usuario extends Model {} -Usuario.init( - { - idUsuario: { - type: DataTypes.INTEGER, - primaryKey: true, - allowNull: false, - unique: true, - autoIncrement: true, - }, - usuario: { - type: DataTypes.STRING(100), - allowNull: false, - unique: true, - }, - password: { - type: DataTypes.STRING(60), - allowNull: true, - defaultValue: null, - }, - }, - { - sequelize, - modelName: 'Usuario', - tableName: 'usuario', - timestamps: false, - } -); - -Usuario.belongsTo(TipoUsuario, { - foreignKey: { - name: 'idTipoUsuario', - type: DataTypes.INTEGER, - allowNull: false, - }, -}); - -module.exports = Usuario; diff --git a/helper/encriptar.js b/helper/encriptar.js deleted file mode 100644 index 423c929..0000000 --- a/helper/encriptar.js +++ /dev/null @@ -1,23 +0,0 @@ -const bcrypt = require('bcrypt'); -require('../config/config'); - -const comparar = (password, dbPassword) => { - if (!bcrypt.compareSync(password, dbPassword)) return false; - return true; -}; - -const encriptar = (password) => - bcrypt.hashSync(password, Number(process.env.SALT_ROUNDS)); - -const generarPassword = () => { - const length = 8; - const charset = - 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - let password = ''; - - for (let i = 0, n = charset.length; i < length; ++i) - password += charset.charAt(Math.floor(Math.random() * n)); - return password; -}; - -module.exports = { comparar, encriptar, generarPassword }; diff --git a/helper/gmail.js b/helper/gmail.js deleted file mode 100644 index ef90ff3..0000000 --- a/helper/gmail.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../config/config'); - -const send = require('gmail-send')({ - user: process.env.GMAIL, - pass: process.env.GMAILPASSWORD, -}); - -const gmail = (subject, to, text) => { - return new Promise((resolve, reject) => { - send({ subject, to, text }, (error, result, fullResult) => { - if (error) reject(error); - console.log(fullResult); - resolve(result); - }); - }); -}; - -module.exports = gmail; diff --git a/helper/helper.js b/helper/helper.js deleted file mode 100644 index f269aa5..0000000 --- a/helper/helper.js +++ /dev/null @@ -1,37 +0,0 @@ -const fs = require('fs'); -const moment = require('moment'); - -const crearDDMMAAAA = (date) => { - const fechaMoment = moment(date); - let ddmmaaaa = ''; - - if (fechaMoment.isValid()) - ddmmaaaa = `${fechaMoment.date()}/${ - fechaMoment.month() + 1 - }/${fechaMoment.year()}`; - return ddmmaaaa; -}; - -const eliminarArchivo = (path) => { - return new Promise((resolve, reject) => { - fs.unlink(path, (err) => { - if (err) reject(err); - resolve({ message: 'Se elimino el archivo correctamente.' }); - }); - }); -}; - -const crearArchivo = (path, texto) => { - return new Promise((resolve, reject) => { - fs.appendFile(path, texto, (err) => { - if (err) reject(err); - resolve({ message: 'Se creo el archivo correctamente.' }); - }); - }); -}; - -module.exports = { - crearDDMMAAAA, - eliminarArchivo, - crearArchivo, -}; diff --git a/helper/validar.js b/helper/validar.js deleted file mode 100644 index 090ae6a..0000000 --- a/helper/validar.js +++ /dev/null @@ -1,184 +0,0 @@ -const moment = require('moment'); -const validator = require('validator'); - -// Caractéres especiales permitidos en una string -const caracterEspecial = (char) => { - const charset = [ - ' ', - '.', - ',', - ':', - ';', - '?', - '¿', - '!', - '¡', - '(', - ')', - '"', - "'", - '-', - '_', - '/', - '#', - '%', - '\n', - ]; - - for (let i = 0; i < charset.length; i++) if (charset[i] === char) return true; - return false; -}; - -const yaExiste = (campo, m) => { - throw new Error(`Ya se encuentra en uso ${m ? 'el' : 'la'} ${campo}.`); -}; - -const noValido = (campo, m, razon) => { - throw new Error( - `${m ? 'El' : 'La'} ${campo} no es valid${m ? 'o' : 'a'}, ${razon}.` - ); -}; - -/* - Valida que la variable contenga un valor, de lo contrario saca un error. -*/ -const noHay = (variable, campo, m) => { - if (!variable) throw new Error(`No se mando ${m ? 'el' : 'la'} ${campo}.`); -}; - -/* - Valida que la variable sea una string y, si se necesita, que mida igual - o menor que una longitud determinada. -*/ -const validacionBasicaStr = (texto, campo, m, length) => { - noHay(texto, campo, m); - if (typeof texto !== 'string') noValido(campo, m, 'no se mando una string'); - if (length && texto.length > length) - noValido(campo, m, 'tiene más carecteres de lo permitido'); - return texto; -}; - -/* - Valida que la variable sea un numero entero, ya sea que recibe una string o - un number. Usualmente se usa para validar ids. -*/ -const validarNumeroEntero = (numero, campo, m = true) => { - noHay(numero, campo, m); - if (typeof numero === 'number') numero = numero.toString(); - if (typeof numero !== 'string') - noValido(campo, m, 'no se mando una string o un number'); - if (!validator.isNumeric(numero, { no_symbols: true })) - noValido(campo, m, 'no es un número entero valido'); - return Number(numero); -}; - -/* - Valida que la stirng mandada sea un correo valido. -*/ -const validarCorreo = (correo, campo = 'correo', m = true, length) => { - validacionBasicaStr(correo, campo, m, length); - if (!validator.isEmail(correo)) noValido(campo, m, 'no es un correo válido'); - return correo; -}; - -/* - Valida que la stirng mandada sean caracteres del abcdario. - Usualmente se usa para validar nombres, apellidos, etc. -*/ -const validarTexto = (texto, campo, m, length) => { - validacionBasicaStr(texto, campo, m, length); - for (let i = 0; i < texto.length; i++) - if ( - !validator.isAlpha(texto[i], 'es-ES') && - texto[i] != ' ' && - texto[i] != '.' - ) - noValido(campo, m, 'contiene caracteres no validos'); - return texto; -}; - -/* - Lo mismo que el de arriba pero este permite números y - caracteres especiales. -*/ -const validarAlfanumerico = (texto, campo, m, length) => { - validacionBasicaStr(texto, campo, m, length); - for (let i = 0; i < texto.length; i++) { - if (caracterEspecial(texto[i])) continue; - if (!validator.isAlphanumeric(texto[i], 'es-ES')) - noValido(campo, m, 'contiene caracteres no validos'); - } - return texto; -}; - -/* - Valida que la string sea un número menor a 9 dígitos. -*/ -const validarNumeroCuenta = ( - numeroCuenta, - campo = 'numero de cuenta', - m = true -) => { - validacionBasicaStr(numeroCuenta, campo, m, 9); - if (!validator.isNumeric(numeroCuenta, { no_symbols: true })) - noValido(campo, m, 'tiene caracteres que nos son números'); - return numeroCuenta; -}; - -/* - Valida que la variable sea una fecha moment valida. -*/ -const validarFecha = (fecha, campo, m) => { - let fechaMoment = moment(fecha); - - noHay(fecha, campo, m); - if (!fechaMoment.isValid()) noValido(campo, m, 'no es una fecha válida'); - return fechaMoment; -}; - -/* - Valida que una string contenga solo números -*/ -const validarNumero = ( - numero, - campo, - m, - length, - no_symbols = true, - makeNumber = false -) => { - validacionBasicaStr(numero, campo, m, length); - if (!validator.isNumeric(numero, { no_symbols })) - noValido(campo, m, 'tiene caracteres que no son números'); - if (makeNumber) return Number(numero); - return numero; -}; - -// const validarAccesibilidad = (usuariosValidos = [], idTipoUsuario) => { -// for (let i = 0; i < usuariosValidos.length; i++) -// if (idTipoUsuario === usuariosValidos[i]) return; -// throw new Error('Este usuario no tiene permitido usar esta linea de la API.'); -// }; - -/* - Te dice si un objeto esta vacio o no. -*/ -const validarObjetoVacio = (obj) => { - for (let key in obj) if (obj.hasOwnProperty(key)) return false; - return true; -}; - -module.exports = { - yaExiste, - noValido, - noHay, - validacionBasicaStr, - validarNumeroEntero, - validarCorreo, - validarTexto, - validarAlfanumerico, - validarNumeroCuenta, - validarFecha, - validarNumero, - validarObjetoVacio, -}; diff --git a/middleware/autentificacion.js b/middleware/autentificacion.js deleted file mode 100644 index 8497762..0000000 --- a/middleware/autentificacion.js +++ /dev/null @@ -1,46 +0,0 @@ -require('../config/config'); -const jwt = require('jsonwebtoken'); - -const verificaToken = (req, res, next) => { - let token = req.headers.token; - - if (!token) - return res.status(400).json({ - message: 'No hay token', - }); - jwt.verify(token, process.env.KEY, (err, decoded) => { - if (err) { - let message = ''; - - if (err.message === 'invalid signature') - message = 'El token no es valido. Inicia sesión de nuevo.'; - if (err.message === 'jwt expired') - message = 'El token expiro. Inicia sesión de nuevo.'; - if (err.message === 'jwt malformed') - message = 'Hubo un problema con el token. Inicia sesión de nuevo.'; - return res.status(401).json({ message, err: 'token error' }); - } - req.decoded = decoded; - next(); - }); -}; - -const crearToken = (data) => { - return jwt.sign({ data }, process.env.KEY, { - expiresIn: Number(process.env.CADUCIDAD_TOKEN), - }); -}; - -const crearTokenUsuario = (data) => { - return jwt.sign({ data }, process.env.KEY, { - expiresIn: Number(process.env.CADUCIDAD_TOKEN_USUARIO), - }); -}; - -const crearTokenOperador = (data) => { - return jwt.sign({ data }, process.env.KEY, { - expiresIn: Number(process.env.CADUCIDAD_TOKEN_OPERADOR), - }); -}; - -module.exports = { verificaToken, crearToken }; diff --git a/package.json b/package.json index 251da81..d922e1c 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "main": "index.js", "scripts": { "test": "node ./server/config/test", - "db:install": "node ./db/install", - "db:data-fake": "node ./db/data-fake", + "db:install": "node ./server/db/install", + "db:data-fake": "node ./server/db/data-fake", "dev": "nodemon ./server/app", "start": "node ./server/app" }, diff --git a/routes/index.js b/routes/index.js deleted file mode 100644 index 435f92b..0000000 --- a/routes/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const express = require("express"); -const app = express(); - -// app.use(require("./")); - -module.exports = app; diff --git a/server/app.js b/server/app.js index 2c2a27d..1a28e4f 100644 --- a/server/app.js +++ b/server/app.js @@ -15,12 +15,12 @@ app.use( app.use(bodyParser.json()); -app.get('/', (req, res) => res.send('API Plantilla')); +app.get('/', (req, res) => res.send('API Sistema de Encuestas')); app.use(require('./routes/index')); app.listen(Number(process.env.PORT), () => console.log( - `API Plantilla corriendo en el puerto: ${process.env.PORT}`.rainbow + `API Sistema de Encuestas corriendo en el puerto: ${process.env.PORT}`.rainbow ) ); diff --git a/server/controller/Cuestionario/crear.js b/server/controller/Cuestionario/crear.js new file mode 100644 index 0000000..a966a68 --- /dev/null +++ b/server/controller/Cuestionario/crear.js @@ -0,0 +1,43 @@ +const validar = require(`../../helper/validar`); +const Cuestionario = require(`../../db/tablas/Cuestionario`); +const Usuario = require(`../../db/tablas/Usuario`); +const TipoCuestionario = require(`../../db/tablas/TipoCuestionario`); + +const crear = async (body) => { + const idUsuario = validar.validarNumeroEntero(body.idUsuario, 'idUsuario'); + const idTipoCuestionario = validar.validarNumeroEntero( + body.idTipoCuestionario, + 'idTipoCuestionario' + ); + const fechaInicio = validar.validarFecha(body.fechaInicio, 'fecha inicio'); + const fechaFin = validar.validarFecha(body.fechaFin, 'fecha fin'); + const titulo = validar.validacionBasicaStr(body.titulo, 'titulo', true, 100); + const descripcion = validar.validacionBasicaStr( + body.descripcion, + 'descripcion', + false, + 100 + ); + + return Usuario.findOne({ where: { idUsuario } }).then(async (res) => { + if (!res) throw new Error('Este usuario no existe en la db'); + + return TipoCuestionario.findOne({ where: { idTipoCuestionario } }).then( + async (res) => { + if (!res) + throw new Error('Este tipo de cuestionario no existe en la db'); + + return Cuestionario.create({ + idUsuario, + idTipoCuestionario, + fechaInicio, + fechaFin, + titulo, + descripcion, + }); + } + ); + }); +}; + +module.exports = crear; diff --git a/server/controller/Cuestionario/editar.js b/server/controller/Cuestionario/editar.js new file mode 100644 index 0000000..0419320 --- /dev/null +++ b/server/controller/Cuestionario/editar.js @@ -0,0 +1,47 @@ +const Cuestionario = require(`../../db/tablas/Cuestionario`); +const validar = require(`../../helper/validar`); + +const editar = async (body) => { + const idCuestionario = validar.validarNumeroEntero( + body.idCuestionario, + 'idCuestionario' + ); + const data = {}; + + if (!!body.titulo) { + data.titulo = validar.validacionBasicaStr(body.titulo, 'titulo', true, 100); + } + if (!!body.descripcion) { + data.descripcion = validar.validacionBasicaStr( + body.descripcion, + 'descripcion', + false, + 100 + ); + } + if (!!body.fechaInicio) { + data.fechaInicio = validar.validarFecha(body.fechaInicio, 'fechaInicio'); + } + if (!!body.fechaFin) { + data.fechaFin = validar.validarFecha(body.fechaFin, 'fechaFin'); + } + + return Cuestionario.findOne({ where: { idCuestionario } }) + .then((res) => { + if (!res) throw new Error('No existe este cuestionario.'); + return Cuestionario.update( + { + titulo: data.titulo, + descripcion: data.descripcion, + fechaInicio: data.fechaInicio, + fechaFin: data.fechaFin, + }, + { where: { idCuestionario } } + ); + }) + .then((res) => ({ + message: 'Se actualizó correctamente el cuestionario.', + })); +}; + +module.exports = editar; diff --git a/server/controller/Cuestionario/traerPorId.js b/server/controller/Cuestionario/traerPorId.js new file mode 100644 index 0000000..419d8f9 --- /dev/null +++ b/server/controller/Cuestionario/traerPorId.js @@ -0,0 +1,18 @@ +const Cuestionario = require('../../db/tablas/Cuestionario'); +const validar = require('../../helper/validar'); + +const traerPorId = async (query) => { + const idCuestionario = validar.validarNumeroEntero( + query.idCuestionario, + 'idCuestionario' + ); + + return Cuestionario.findOne({ + where: { idCuestionario } + }).then(res => { + if(!res) throw new Error("No hay ningun cuestionario con este id.") + return res; + }); +}; + +module.exports = traerPorId; diff --git a/server/controller/Cuestionario/traerTodos.js b/server/controller/Cuestionario/traerTodos.js new file mode 100644 index 0000000..517c8d1 --- /dev/null +++ b/server/controller/Cuestionario/traerTodos.js @@ -0,0 +1,5 @@ +const Cuestionario = require('../../db/tablas/Cuestionario'); + +const traerTodos = async () => Cuestionario.findAll(); + +module.exports = traerTodos; diff --git a/server/controller/Opcion/crear.js b/server/controller/Opcion/crear.js new file mode 100644 index 0000000..17b3393 --- /dev/null +++ b/server/controller/Opcion/crear.js @@ -0,0 +1,19 @@ +const validar = require(`../../helper/validar`); +const Pregunta = require(`../../db/tablas/Pregunta`); +const Opcion = require(`../../db/tablas/Opcion`); + +const crear = async (body) => { + const idPregunta = validar.validarNumeroEntero(body.idPregunta, 'idPregunta'); + const opcion = validar.validacionBasicaStr(body.opcion, 'opcion', false, 256); + + return Pregunta.findOne({ where: { idPregunta } }).then(async (res) => { + if (!res) throw new Error('Esta pregunta no existe en la db'); + + return Opcion.create({ + idPregunta, + opcion, + }); + }); +}; + +module.exports = crear; diff --git a/server/controller/Opcion/editar.js b/server/controller/Opcion/editar.js new file mode 100644 index 0000000..ce0d394 --- /dev/null +++ b/server/controller/Opcion/editar.js @@ -0,0 +1,23 @@ +const Opcion = require(`../../db/tablas/Opcion`); +const validar = require(`../../helper/validar`); + +const editar = async (body) => { + const idOpcion = validar.validarNumeroEntero(body.idOpcion, 'idOpcion'); + const opcion = validar.validacionBasicaStr(body.opcion, 'opcion', false, 256); + + return Opcion.findOne({ where: { idOpcion } }) + .then((res) => { + if (!res) throw new Error('No existe esta opción.'); + return Opcion.update( + { + opcion, + }, + { where: { idOpcion } } + ); + }) + .then((res) => ({ + message: 'Se actualizó correctamente la opción.', + })); +}; + +module.exports = editar; diff --git a/server/controller/Opcion/traerPorIdPregunta.js b/server/controller/Opcion/traerPorIdPregunta.js new file mode 100644 index 0000000..c8fc558 --- /dev/null +++ b/server/controller/Opcion/traerPorIdPregunta.js @@ -0,0 +1,18 @@ +const Opcion = require('../../db/tablas/Opcion'); +const validar = require('../../helper/validar'); + +const traerPoridPregunta = async (query) => { + const idPregunta = validar.validarNumeroEntero( + query.idPregunta, + 'idPregunta' + ); + + return Opcion.findAll({ + where: { idPregunta } + }).then(res => { + if(!res) throw new Error("No hay ninguna Opcion con este idPregunta.") + return res; + }); +}; + +module.exports = traerPoridPregunta; diff --git a/server/controller/Pregunta/crear.js b/server/controller/Pregunta/crear.js new file mode 100644 index 0000000..5405a4d --- /dev/null +++ b/server/controller/Pregunta/crear.js @@ -0,0 +1,49 @@ +const validar = require(`../../helper/validar`); +const Seccion = require(`../../db/tablas/Seccion`); +const TipoPregunta = require(`../../db/tablas/TipoPregunta`); +const Pregunta = require(`../../db/tablas/Pregunta`); + +const crear = async (body) => { + const idSeccion = validar.validarNumeroEntero(body.idSeccion, 'idSeccion'); + const idTipoPregunta = validar.validarNumeroEntero( + body.idTipoPregunta, + 'idTipoPregunta' + ); + const idPreguntaDepende = body.idPreguntaDepende + ? validar.validarNumeroEntero(body.idPreguntaDepende, 'idPreguntaDepende') + : null; + const pregunta = validar.validacionBasicaStr( + body.pregunta, + 'pregunta', + false, + 256 + ); + const otra = body.otra ? true : false; + const obligatoria = body.obligatoria ? true : false; + + return Seccion.findOne({ where: { idSeccion } }).then(async (res) => { + if (!res) throw new Error('Esta sección no existe en la db'); + + return TipoPregunta.findOne({ where: idTipoPregunta }).then(async (res) => { + if (!res) throw new Error('Este tipo de pregunta no existe en la db.'); + + return Pregunta.findOne({ + where: { idPregunta: idPreguntaDepende }, + }).then(async (res) => { + if (!res && body.idPreguntaDepende) + throw new Error('La pregunta de la que depende no existe.'); + + return Pregunta.create({ + idSeccion, + idTipoPregunta, + idPreguntaDepende, + pregunta, + otra, + obligatoria, + }); + }); + }); + }); +}; + +module.exports = crear; diff --git a/server/controller/Pregunta/editar.js b/server/controller/Pregunta/editar.js new file mode 100644 index 0000000..1e7226d --- /dev/null +++ b/server/controller/Pregunta/editar.js @@ -0,0 +1,66 @@ +const Pregunta = require(`../../db/tablas/Pregunta`); +const TipoPregunta = require('../../db/tablas/TipoPregunta'); +const validar = require(`../../helper/validar`); + +const editar = async (body) => { + const idPregunta = validar.validarNumeroEntero(body.idPregunta, 'idPregunta'); + const data = {}; + + if (!!body.pregunta) { + data.pregunta = validar.validacionBasicaStr( + body.pregunta, + 'pregunta', + false, + 265 + ); + } + if (!!body.idPreguntaDepende) { + data.idPreguntaDepende = validar.validarNumeroEntero( + body.idPreguntaDepende, + 'idPreguntaDepende', + true + ); + } + if (!!body.idTipoPregunta) { + data.idTipoPregunta = validar.validarNumeroEntero( + body.idTipoPregunta, + 'idTipoPregunta', + true + ); + } + if (!!body.otra !== null) data.otra = body.obligatoria; + if (!!body.obligatoria !== null) data.obligatoria = body.obligatoria; + + const extistePregunta = await Pregunta.findOne({ where: { idPregunta } }); + if (!extistePregunta) throw new Error('No existe esta pregunta.'); + + if (data.idPreguntaDepende) { + const extistePreguntaDepende = await Pregunta.findOne({ + where: { idPregunta: data.idPreguntaDepende }, + }); + if (!extistePreguntaDepende) + throw new Error('No existe la pregunta de la que depende.'); + } + + if (data.idTipoPregunta) { + const existeTipoPregunta = await TipoPregunta.findOne({ + where: { idTipoPregunta: data.idTipoPregunta }, + }); + if (!existeTipoPregunta) throw new Error('No existe el tipo pregunta.'); + } + + const res = await Pregunta.update( + { + pregunta: data.pregunta, + idTipoPregunta: data.idTipoPregunta, + idPreguntaDepende: data.idPreguntaDepende, + otra: data.otra, + obligatoria: data.obligatoria, + }, + { where: { idPregunta } } + ); + if (!res) throw new Error('Se ha actualizado la pregunta con éxito.'); + return {message: 'Se ha actualizado la pregunta con éxito.'}; +}; + +module.exports = editar; \ No newline at end of file diff --git a/server/controller/Pregunta/traerPorIdSeccion.js b/server/controller/Pregunta/traerPorIdSeccion.js new file mode 100644 index 0000000..bf48a02 --- /dev/null +++ b/server/controller/Pregunta/traerPorIdSeccion.js @@ -0,0 +1,18 @@ +const Pregunta = require('../../db/tablas/Pregunta'); +const validar = require('../../helper/validar'); + +const traerPoridSeccion = async (query) => { + const idSeccion = validar.validarNumeroEntero( + query.idSeccion, + 'idSeccion' + ); + + return Pregunta.findAll({ + where: { idSeccion } + }).then(res => { + if(!res) throw new Error("No hay ninguna pregunta con este idSeccion.") + return res; + }); +}; + +module.exports = traerPoridSeccion; diff --git a/server/controller/Respuesta/crear.js b/server/controller/Respuesta/crear.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controller/Respuesta/traerPorIdPregunta.js b/server/controller/Respuesta/traerPorIdPregunta.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controller/Seccion/crear.js b/server/controller/Seccion/crear.js new file mode 100644 index 0000000..b2ee01d --- /dev/null +++ b/server/controller/Seccion/crear.js @@ -0,0 +1,30 @@ +const validar = require(`../../helper/validar`); +const Seccion = require(`../../db/tablas/Seccion`); +const Cuestionario = require(`../../db/tablas/Cuestionario`); + +const crear = async (body) => { + const idCuestionario = validar.validarNumeroEntero( + body.idCuestionario, + 'idCuestionario' + ); + const titulo = validar.validacionBasicaStr(body.titulo, 'titulo', true, 100); + const descripcion = validar.validacionBasicaStr( + body.descripcion, + 'descripcion', + false, + 100 + ); + + return Cuestionario.findOne({ where: { idCuestionario } }).then( + async (res) => { + if (!res) throw new Error('Este cuestionario no existe en la db'); + return Seccion.create({ + idCuestionario, + titulo, + descripcion, + }); + } + ); +}; + +module.exports = crear; diff --git a/server/controller/Seccion/editar.js b/server/controller/Seccion/editar.js new file mode 100644 index 0000000..c569558 --- /dev/null +++ b/server/controller/Seccion/editar.js @@ -0,0 +1,39 @@ +const Seccion = require(`../../db/tablas/Seccion`); +const validar = require(`../../helper/validar`); + +const editar = async (body) => { + const idSeccion = validar.validarNumeroEntero( + body.idSeccion, + 'idSeccion' + ); + const data = {}; + + if (!!body.titulo) { + data.titulo = validar.validacionBasicaStr(body.titulo, 'titulo', true, 100); + } + if (!!body.descripcion) { + data.descripcion = validar.validacionBasicaStr( + body.descripcion, + 'descripcion', + false, + 100 + ); + } + + return Seccion.findOne({ where: { idSeccion } }) + .then((res) => { + if (!res) throw new Error('No existe esta sección.'); + return Seccion.update( + { + titulo: data.titulo, + descripcion: data.descripcion, + }, + { where: { idSeccion } } + ); + }) + .then((res) => ({ + message: 'Se actualizó correctamente la sección.', + })); +}; + +module.exports = editar; diff --git a/server/controller/Seccion/traerPorIdCuestionario.js b/server/controller/Seccion/traerPorIdCuestionario.js new file mode 100644 index 0000000..d055587 --- /dev/null +++ b/server/controller/Seccion/traerPorIdCuestionario.js @@ -0,0 +1,18 @@ +const Seccion = require('../../db/tablas/Seccion'); +const validar = require('../../helper/validar'); + +const traerPorIdCuestionario = async (query) => { + const idCuestionario = validar.validarNumeroEntero( + query.idCuestionario, + 'idCuestionario' + ); + + return Seccion.findAll({ + where: { idCuestionario } + }).then(res => { + if(!res) throw new Error("No hay ninguna sección con este idCuestionario.") + return res; + }); +}; + +module.exports = traerPorIdCuestionario; diff --git a/server/controller/TipoCuestionario/traerPorId.js b/server/controller/TipoCuestionario/traerPorId.js new file mode 100644 index 0000000..8b86397 --- /dev/null +++ b/server/controller/TipoCuestionario/traerPorId.js @@ -0,0 +1,17 @@ +const TipoCuestionario = require('../../db/tablas/TipoCuestionario'); +const DirigidoA = require('../../db/tablas/DirigidoA'); +const validar = require('../../helper/validar'); + +const traerPorId = (query) => { + const idTipoCuestionario = validar.validarNumeroEntero( + query.idTipoCuestionario, + 'idTipoCuestionario' + ); + + return TipoCuestionario.findOne({ + where: { idTipoCuestionario }, + include: [{ model: DirigidoA }], + }); +}; + +module.exports = traerPorId; diff --git a/server/controller/TipoCuestionario/traerTodos.js b/server/controller/TipoCuestionario/traerTodos.js new file mode 100644 index 0000000..1d85aba --- /dev/null +++ b/server/controller/TipoCuestionario/traerTodos.js @@ -0,0 +1,7 @@ +const TipoCuestionario = require('../../db/tablas/TipoCuestionario'); +const DirigidoA = require('../../db/tablas/DirigidoA'); + +const traerTodos = () => + TipoCuestionario.findAll({ include: [{ model: DirigidoA }] }); + +module.exports = traerTodos; diff --git a/server/db/data-fake.js b/server/db/data-fake.js index a2830eb..aca8822 100644 --- a/server/db/data-fake.js +++ b/server/db/data-fake.js @@ -2,7 +2,7 @@ const Usuario = require('./tablas/Usuario'); const { encriptar } = require('../helper/encriptar'); const dataUsuarios = async () => { - let usuario = ['416313221', '111111111', '222222222']; + let usuario = ['123', '111', '321']; let nombre = [ 'Adriana De Luna Ramirez', 'Nombre Falso 1', diff --git a/server/db/install.js b/server/db/install.js index f02acf1..9a98f47 100644 --- a/server/db/install.js +++ b/server/db/install.js @@ -2,16 +2,121 @@ require('../config/config'); const colors = require('colors'); // const encriptar = require('../helper/encriptar'); const TipoUsuario = require('./tablas/TipoUsuario'); +const Periodo = require('./tablas/Periodo'); +const Carrera = require('./tablas/Carrera'); +const TipoCuestionario = require('./tablas/TipoCuestionario'); +const TipoPregunta = require('./tablas/TipoPregunta'); +const Modalidad = require('./tablas/Modalidad'); +const Alumno = require('./tablas/Alumno'); +const Grupo = require('./tablas/Grupo'); +const Materia = require('./tablas/Materia'); +const CarreraPeriodo = require('./tablas/CarreraPeriodo'); const Usuario = require('./tablas/Usuario'); +const Trabajador = require('./tablas/Trabajador'); +const UsuarioCarrera = require('./tablas/UsuarioCarrera'); +const Cuestionario = require('./tablas/Cuestionario'); +const CarreraPeriodoGrupo = require('./tablas/CarreraPeriodoGrupo'); +const CuestionarioCarrera = require('./tablas/CuestionarioCarrera'); +const Seccion = require('./tablas/Seccion'); +const GrupoMateria = require('./tablas/GrupoMateria'); +const Pregunta = require('./tablas/Pregunta'); +const MateriaAlumno = require('./tablas/MateriaAlumno'); +const Opcion = require('./tablas/Opcion'); +const RespuestaAbiertaEd = require('./tablas/RespuestaAbiertaEd'); +const RespuestaEd = require('./tablas/RespuestaEd'); +const RespuestaAbiertaAlumno = require('./tablas/RespuestaAbiertaAlumno'); +const RespuestaAlumno = require('./tablas/RespuestaAlumno'); +const RespuestaAbiertaTrabajador = require('./tablas/RespuestaAbiertaTrabajador'); +const RespuestaTrabajador = require('./tablas/RespuestaTrabajador'); +const DirigidoA = require('./tablas/DirigidoA'); const drop = async () => { console.log('\nPaso 1) Desinstalando la db.'.bold.blue); + await RespuestaTrabajador.drop(); + console.log('La tabla RespuestaTrabajador se desinstalo correctamente.'.magenta); + + await RespuestaAbiertaTrabajador.drop(); + console.log('La tabla RespuestaAbiertaTrabajador se desinstalo correctamente.'.magenta); + + await RespuestaAlumno.drop(); + console.log('La tabla RespuestaAlumno se desinstalo correctamente.'.magenta); + + await RespuestaAbiertaAlumno.drop(); + console.log('La tabla RespuestaAbiertaAlumno se desinstalo correctamente.'.magenta); + + await RespuestaAbiertaEd.drop(); + console.log('La tabla RespuestaAbiertaEd se desinstalo correctamente.'.magenta); + + await RespuestaEd.drop(); + console.log('La tabla RespuestaEd se desinstalo correctamente.'.magenta); + + await Opcion.drop(); + console.log('La tabla Opcion se desinstalo correctamente.'.magenta); + + await MateriaAlumno.drop(); + console.log('La tabla MateriaAlumno se desinstalo correctamente.'.magenta); + + await Pregunta.drop(); + console.log('La tabla Pregunta se desinstalo correctamente.'.magenta); + + await GrupoMateria.drop(); + console.log('La tabla GrupoMateria se desinstalo correctamente.'.magenta); + + await Seccion.drop(); + console.log('La tabla Seccion se desinstalo correctamente.'.magenta); + + await CuestionarioCarrera.drop(); + console.log('La tabla CuestionarioCarrera se desinstalo correctamente.'.magenta); + + await CarreraPeriodoGrupo.drop(); + console.log('La tabla CarreraPeriodoGrupo se desinstalo correctamente.'.magenta); + + await Cuestionario.drop(); + console.log('La tabla Cuestionario se desinstalo correctamente.'.magenta); + + await UsuarioCarrera.drop(); + console.log('La tabla UsuarioCarrera se desinstalo correctamente.'.magenta); + + await Trabajador.drop(); + console.log('La tabla Trabajador se desinstalo correctamente.'.magenta); + await Usuario.drop(); console.log('La tabla Usuario se desinstalo correctamente.'.magenta); + await CarreraPeriodo.drop(); + console.log('La tabla CarreraPeriodo se desinstalo correctamente.'.magenta); + + await Materia.drop(); + console.log('La tabla Materia se desinstalo correctamente.'.magenta); + + await Grupo.drop(); + console.log('La tabla Grupo se desinstalo correctamente.'.magenta); + + await Alumno.drop(); + console.log('La tabla Alumno se desinstalo correctamente.'.magenta); + + await Modalidad.drop(); + console.log('La tabla Modalidad se desinstalo correctamente.'.magenta); + + await TipoPregunta.drop(); + console.log('La tabla TipoPregunta se desinstalo correctamente.'.magenta); + + await TipoCuestionario.drop(); + console.log('La tabla TipoCuestionario se desinstalo correctamente.'.magenta); + + await DirigidoA.drop(); + console.log('La tabla DirigidoA se desinstalo correctamente.'.magenta); + + await Carrera.drop(); + console.log('La tabla Carrera se desinstalo correctamente.'.magenta); + + await Periodo.drop(); + console.log('La tabla Periodo se desinstalo correctamente.'.magenta); + await TipoUsuario.drop(); console.log('La tabla TipoUsuario se desinstalo correctamente.'.magenta); + }; const sync = async () => { @@ -20,8 +125,87 @@ const sync = async () => { await TipoUsuario.sync(); console.log('La tabla TipoUsuario se instalo correctamente.'.magenta); + await Periodo.sync(); + console.log('La tabla Periodo se instalo correctamente.'.magenta); + + await Carrera.sync(); + console.log('La tabla Carrera se instalo correctamente.'.magenta); + + await DirigidoA.sync(); + console.log('La tabla DirigidoA se instalo correctamente.'.magenta); + + await TipoCuestionario.sync(); + console.log('La tabla TipoCuestionario se instalo correctamente.'.magenta); + + await TipoPregunta.sync(); + console.log('La tabla TipoPregunta se instalo correctamente.'.magenta); + + await Modalidad.sync(); + console.log('La tabla Modalidad se instalo correctamente.'.magenta); + + await Alumno.sync(); + console.log('La tabla Alumno se instalo correctamente.'.magenta); + + await Grupo.sync(); + console.log('La tabla Grupo se instalo correctamente.'.magenta); + + await Materia.sync(); + console.log('La tabla Materia se instalo correctamente.'.magenta); + + await CarreraPeriodo.sync(); + console.log('La tabla CarreraPeriodo se instalo correctamente.'.magenta); + await Usuario.sync(); console.log('La tabla Usuario se instalo correctamente.'.magenta); + + await Trabajador.sync(); + console.log('La tabla Trabajador se instalo correctamente.'.magenta); + + await UsuarioCarrera.sync(); + console.log('La tabla UsuarioCarrera se instalo correctamente.'.magenta); + + await Cuestionario.sync(); + console.log('La tabla Cuestionario se instalo correctamente.'.magenta); + + await CarreraPeriodoGrupo.sync(); + console.log('La tabla CarreraPeriodoGrupo se instalo correctamente.'.magenta); + + await CuestionarioCarrera.sync(); + console.log('La tabla CuestionarioCarrera se instalo correctamente.'.magenta); + + await Seccion.sync(); + console.log('La tabla Seccion se instalo correctamente.'.magenta); + + await GrupoMateria.sync(); + console.log('La tabla GrupoMateria se instalo correctamente.'.magenta); + + await Pregunta.sync(); + console.log('La tabla Pregunta se instalo correctamente.'.magenta); + + await MateriaAlumno.sync(); + console.log('La tabla MateriaAlumno se instalo correctamente.'.magenta); + + await Opcion.sync(); + console.log('La tabla Opcion se instalo correctamente.'.magenta); + + await RespuestaEd.sync(); + console.log('La tabla RespuestaEd se instalo correctamente.'.magenta); + + await RespuestaAbiertaEd.sync(); + console.log('La tabla RespuestaAbiertaEd se instalo correctamente.'.magenta); + + await RespuestaAbiertaAlumno.sync(); + console.log('La tabla RespuestaAbiertaAlumno se instalo correctamente.'.magenta); + + await RespuestaAlumno.sync(); + console.log('La tabla Opcion se instalo correctamente.'.magenta); + + await RespuestaAbiertaTrabajador.sync(); + console.log('La tabla RespuestaAbiertaTrabajador se instalo correctamente.'.magenta); + + await RespuestaTrabajador.sync(); + console.log('La tabla RespuestaTrabajador se instalo correctamente.'.magenta); + }; const dataTipoUsuario = async () => { @@ -32,10 +216,82 @@ const dataTipoUsuario = async () => { await TipoUsuario.create({ tipoUsuario: data[i] }); }; +const dataModalidad = async () => { + const data = ['Presencial', 'A distancia']; + + console.log('\nPaso 4) Instalando catalogo modalidad.'.bold.blue); + for (let i = 0; i < data.length; i++) + await Modalidad.create({ modalidad: data[i] }); +}; + +const dataTipoPregunta = async () => { + const data = ['Abierta', 'Cerrada', 'Opcion multiple']; + + console.log('\nPaso 5) Instalando catalogo tipo pregunta.'.bold.blue); + for (let i = 0; i < data.length; i++) + await TipoPregunta.create({ tipoPregunta: data[i] }); +}; + +const dataDirigidoA = async () => { + const data = ['Alumnos', 'ED', 'Trabajadores']; + + console.log('\nPaso 6) Instalando catalogo tipo cuestionario.'.bold.blue); + for (let i = 0; i < data.length; i++) + await DirigidoA.create({ dirigidoA: data[i] }); +}; + +const dataTipoCuestionario = async () => { + const data = ['Simple', 'Dependiente']; + + console.log('\nPaso 7) Instalando catalogo tipo cuestionario.'.bold.blue); + for (let i = 0; i < data.length; i++) + await TipoCuestionario.create({ tipoCuestionario: data[i], idDirigidoA: i+1 }); +}; + +const dataCarrera = async () => { + const data = ['Carrera 1', 'Carrera 2']; + + console.log('\nPaso 8) Instalando catalogo carrera.'.bold.blue); + for (let i = 0; i < data.length; i++) + await Carrera.create({ carrera: data[i] }); +}; + +const dataPeriodo = async () => { + const data = ['Periodo 1', 'Periodo 2']; + + console.log('\nPaso 9) Instalando catalogo periodo.'.bold.blue); + for (let i = 0; i < data.length; i++) + await Periodo.create({ periodo: data[i], activo: true}); +}; + +const dataGrupo = async () => { + const data = ['Grupo 1', 'Grupo 2']; + + console.log('\nPaso 10) Instalando catalogo grupo.'.bold.blue); + for (let i = 0; i < data.length; i++) + await Grupo.create({ grupo: data[i] }); +}; + +const dataMateria = async () => { + const data = ['Materia 1', 'Materia 2']; + + console.log('\nPaso 11) Instalando catalogo materia.'.bold.blue); + for (let i = 0; i < data.length; i++) + await Materia.create({ materia: data[i] }); +}; + const exe = async () => { await drop(); await sync(); - await dataTipoUsuario; + await dataTipoUsuario(); + await dataModalidad(); + await dataTipoPregunta(); + await dataDirigidoA(); + await dataTipoCuestionario(); + await dataCarrera(); + await dataPeriodo(); + await dataGrupo(); + await dataMateria(); console.log( '\nSe ha instalado exitosamente la base de datos.\n'.underline.bold.green ); diff --git a/db/tablas/Alumno.js b/server/db/tablas/Alumno.js similarity index 100% rename from db/tablas/Alumno.js rename to server/db/tablas/Alumno.js diff --git a/db/tablas/Carrera.js b/server/db/tablas/Carrera.js similarity index 100% rename from db/tablas/Carrera.js rename to server/db/tablas/Carrera.js diff --git a/db/tablas/CarreraPeriodo.js b/server/db/tablas/CarreraPeriodo.js similarity index 100% rename from db/tablas/CarreraPeriodo.js rename to server/db/tablas/CarreraPeriodo.js diff --git a/db/tablas/CarreraPeriodoGrupo.js b/server/db/tablas/CarreraPeriodoGrupo.js similarity index 100% rename from db/tablas/CarreraPeriodoGrupo.js rename to server/db/tablas/CarreraPeriodoGrupo.js diff --git a/db/tablas/Cuestionario.js b/server/db/tablas/Cuestionario.js similarity index 100% rename from db/tablas/Cuestionario.js rename to server/db/tablas/Cuestionario.js diff --git a/db/tablas/CuestionarioCarrera.js b/server/db/tablas/CuestionarioCarrera.js similarity index 100% rename from db/tablas/CuestionarioCarrera.js rename to server/db/tablas/CuestionarioCarrera.js diff --git a/db/tablas/DirigidoA.js b/server/db/tablas/DirigidoA.js similarity index 100% rename from db/tablas/DirigidoA.js rename to server/db/tablas/DirigidoA.js diff --git a/db/tablas/Grupo.js b/server/db/tablas/Grupo.js similarity index 100% rename from db/tablas/Grupo.js rename to server/db/tablas/Grupo.js diff --git a/db/tablas/GrupoMateria.js b/server/db/tablas/GrupoMateria.js similarity index 100% rename from db/tablas/GrupoMateria.js rename to server/db/tablas/GrupoMateria.js diff --git a/db/tablas/Materia.js b/server/db/tablas/Materia.js similarity index 100% rename from db/tablas/Materia.js rename to server/db/tablas/Materia.js diff --git a/db/tablas/MateriaAlumno.js b/server/db/tablas/MateriaAlumno.js similarity index 100% rename from db/tablas/MateriaAlumno.js rename to server/db/tablas/MateriaAlumno.js diff --git a/db/tablas/Modalidad.js b/server/db/tablas/Modalidad.js similarity index 100% rename from db/tablas/Modalidad.js rename to server/db/tablas/Modalidad.js diff --git a/db/tablas/Opcion.js b/server/db/tablas/Opcion.js similarity index 100% rename from db/tablas/Opcion.js rename to server/db/tablas/Opcion.js diff --git a/db/tablas/Periodo.js b/server/db/tablas/Periodo.js similarity index 100% rename from db/tablas/Periodo.js rename to server/db/tablas/Periodo.js diff --git a/db/tablas/Pregunta.js b/server/db/tablas/Pregunta.js similarity index 89% rename from db/tablas/Pregunta.js rename to server/db/tablas/Pregunta.js index 26ca992..9e4b532 100644 --- a/db/tablas/Pregunta.js +++ b/server/db/tablas/Pregunta.js @@ -18,10 +18,15 @@ Pregunta.init( allowNull: true, defaultValue: false, }, + obligatoria: { + type: DataTypes.BOOLEAN, + allowNull: true, + defaultValue: false, + }, pregunta: { type: DataTypes.STRING(256), allowNull: false, - } + }, }, { sequelize, @@ -52,6 +57,7 @@ Pregunta.belongsTo(Pregunta, { name: 'idPreguntaDepende', type: DataTypes.INTEGER, allowNull: true, + defaultValue: null }, }); diff --git a/db/tablas/RespuestaAbiertaAlumno.js b/server/db/tablas/RespuestaAbiertaAlumno.js similarity index 100% rename from db/tablas/RespuestaAbiertaAlumno.js rename to server/db/tablas/RespuestaAbiertaAlumno.js diff --git a/db/tablas/RespuestaAbiertaEd.js b/server/db/tablas/RespuestaAbiertaEd.js similarity index 100% rename from db/tablas/RespuestaAbiertaEd.js rename to server/db/tablas/RespuestaAbiertaEd.js diff --git a/db/tablas/RespuestaAbiertaTrabajador.js b/server/db/tablas/RespuestaAbiertaTrabajador.js similarity index 100% rename from db/tablas/RespuestaAbiertaTrabajador.js rename to server/db/tablas/RespuestaAbiertaTrabajador.js diff --git a/db/tablas/RespuestaAlumno.js b/server/db/tablas/RespuestaAlumno.js similarity index 100% rename from db/tablas/RespuestaAlumno.js rename to server/db/tablas/RespuestaAlumno.js diff --git a/db/tablas/RespuestaEd.js b/server/db/tablas/RespuestaEd.js similarity index 100% rename from db/tablas/RespuestaEd.js rename to server/db/tablas/RespuestaEd.js diff --git a/db/tablas/RespuestaTrabajador.js b/server/db/tablas/RespuestaTrabajador.js similarity index 100% rename from db/tablas/RespuestaTrabajador.js rename to server/db/tablas/RespuestaTrabajador.js diff --git a/db/tablas/Seccion.js b/server/db/tablas/Seccion.js similarity index 100% rename from db/tablas/Seccion.js rename to server/db/tablas/Seccion.js diff --git a/db/tablas/TipoCuestionario.js b/server/db/tablas/TipoCuestionario.js similarity index 100% rename from db/tablas/TipoCuestionario.js rename to server/db/tablas/TipoCuestionario.js diff --git a/db/tablas/TipoPregunta.js b/server/db/tablas/TipoPregunta.js similarity index 100% rename from db/tablas/TipoPregunta.js rename to server/db/tablas/TipoPregunta.js diff --git a/db/tablas/Trabajador.js b/server/db/tablas/Trabajador.js similarity index 100% rename from db/tablas/Trabajador.js rename to server/db/tablas/Trabajador.js diff --git a/server/db/tablas/Usuario.js b/server/db/tablas/Usuario.js index 4e7660a..84f5181 100644 --- a/server/db/tablas/Usuario.js +++ b/server/db/tablas/Usuario.js @@ -22,15 +22,6 @@ Usuario.init( allowNull: true, defaultValue: null, }, - nombre: { - type: DataTypes.STRING(70), - allowNull: true, - defaultValue: null, - }, - activo: { - type: DataTypes.BOOLEAN, - allowNull: false, - }, }, { sequelize, diff --git a/db/tablas/UsuarioCarrera.js b/server/db/tablas/UsuarioCarrera.js similarity index 100% rename from db/tablas/UsuarioCarrera.js rename to server/db/tablas/UsuarioCarrera.js diff --git a/server/routes/Cuestionario.js b/server/routes/Cuestionario.js new file mode 100644 index 0000000..523d5ec --- /dev/null +++ b/server/routes/Cuestionario.js @@ -0,0 +1,50 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/Cuestionario'; +const traerTodos = require('../controller/Cuestionario/traerTodos'); +const traerPorId = require('../controller/Cuestionario/traerPorId'); +const crear = require('../controller/Cuestionario/crear'); +const editar = require('../controller/Cuestionario/editar'); + +app.get(`${route}/TraerTodos`, (req, res) => { + return traerTodos() + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.get(`${route}/TraerPorId`, (req, res) => { + return traerPorId(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.post(`${route}/crear`, (req, res) => { + return crear(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.put(`${route}/editar`, (req, res) => { + return editar(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/Opcion.js b/server/routes/Opcion.js new file mode 100644 index 0000000..0a92ea0 --- /dev/null +++ b/server/routes/Opcion.js @@ -0,0 +1,39 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/Opcion'; +const traerPoridPregunta = require('../controller/Opcion/traerPoridPregunta'); +const crear = require('../controller/Opcion/crear'); +const editar = require('../controller/Opcion/editar'); + +app.get(`${route}/traerPoridPregunta`, async (req, res) => { + return traerPoridPregunta(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.post(`${route}/crear`, async (req, res) => { + return crear(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.put(`${route}/editar`, async (req, res) => { + return editar(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/Pregunta.js b/server/routes/Pregunta.js new file mode 100644 index 0000000..30ec4c0 --- /dev/null +++ b/server/routes/Pregunta.js @@ -0,0 +1,39 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/Pregunta'; +const traerPorIdSeccion = require('../controller/Pregunta/traerPorIdSeccion'); +const crear = require('../controller/Pregunta/crear'); +const editar = require('../controller/Pregunta/editar'); + +app.get(`${route}/TraerPorIdSeccion`, async (req, res) => { + return traerPorIdSeccion(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.post(`${route}/crear`, async (req, res) => { + return crear(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.put(`${route}/editar`, async (req, res) => { + return editar(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/Seccion.js b/server/routes/Seccion.js new file mode 100644 index 0000000..c21cd61 --- /dev/null +++ b/server/routes/Seccion.js @@ -0,0 +1,39 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/Seccion'; +const traerPorIdCuestionario = require('../controller/Seccion/traerPorIdCuestionario'); +const crear = require('../controller/Seccion/crear'); +const editar = require('../controller/Seccion/editar'); + +app.get(`${route}/TraerPorIdCuestionario`, async (req, res) => { + return traerPorIdCuestionario(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.post(`${route}/crear`, async (req, res) => { + return crear(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.put(`${route}/editar`, async (req, res) => { + return editar(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/TipoCuestionario.js b/server/routes/TipoCuestionario.js new file mode 100644 index 0000000..32b3c40 --- /dev/null +++ b/server/routes/TipoCuestionario.js @@ -0,0 +1,28 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/TipoCuestionario'; +const traerTodos = require('../controller/TipoCuestionario/traerTodos'); +const traerPorId = require('../controller/TipoCuestionario/traerPorId'); + +app.get(`${route}/TraerTodos`, (req, res) => { + return traerTodos() + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.get(`${route}/TraerPorId`, (req, res) => { + return traerPorId(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/Usuario .js b/server/routes/Usuario .js deleted file mode 100644 index 6789afe..0000000 --- a/server/routes/Usuario .js +++ /dev/null @@ -1,18 +0,0 @@ -const express = require('express'); -const app = express(); -const { verificaToken } = require('../middleware/autentificacion'); -const route = '/usuario'; -// const controllerPath = '../controller/Usuario'; -// const login = require(`${controllerPath}/login`); - -// app.post(`${route}/login`, (req, res) => { -// return login(req.body) -// .then((data) => { -// res.status(200).json(data); -// }) -// .catch((err) => { -// res.status(400).json({ message: err.message }); -// }); -// }); - -module.exports = app; diff --git a/routes/Usuario .js b/server/routes/Usuario.js similarity index 100% rename from routes/Usuario .js rename to server/routes/Usuario.js diff --git a/server/routes/index.js b/server/routes/index.js index 435f92b..45274c3 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -1,6 +1,11 @@ const express = require("express"); const app = express(); -// app.use(require("./")); +app.use(require("./Usuario")); +app.use(require("./Cuestionario")); +app.use(require("./Seccion")); +app.use(require("./Pregunta")); +app.use(require("./Opcion")); +app.use(require("./TipoCuestionario")); -module.exports = app; +module.exports = app; \ No newline at end of file