Files

207 lines
5.2 KiB
JavaScript
Raw Permalink Normal View History

2020-11-16 12:47:46 -06:00
const moment = require('moment');
const validator = require('validator');
2022-01-02 19:34:55 -06:00
const Servicio = require('../db/tablas/Servicio');
2020-11-15 22:49:00 -06:00
2022-01-02 14:42:39 -06:00
// Caractéres especiales permitidos en una string
const caracterEspecial = (char) => {
2021-01-22 12:08:31 -06:00
const charset = [
' ',
'.',
',',
':',
';',
2022-01-02 14:42:39 -06:00
'?',
'¿',
'!',
'¡',
'(',
')',
2021-01-22 12:08:31 -06:00
'"',
"'",
2022-01-02 14:42:39 -06:00
'-',
2021-01-22 12:08:31 -06:00
'_',
2022-01-02 14:42:39 -06:00
'/',
'#',
2021-02-04 18:34:42 -06:00
'%',
2021-01-25 13:05:42 -06:00
'\n',
2021-01-22 12:08:31 -06:00
];
2020-11-26 13:40:37 -06:00
for (let i = 0; i < charset.length; i++) if (charset[i] === char) return true;
return false;
};
2022-01-02 14:42:39 -06:00
const yaExiste = (campo, m) => {
throw new Error(`Ya se encuentra en uso ${m ? 'el' : 'la'} ${campo}.`);
};
const noValido = (campo, m, razon) => {
2022-01-02 19:34:55 -06:00
console.log(m);
2022-01-02 14:42:39 -06:00
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;
};
/*
2022-01-02 15:27:30 -06:00
Valida que la stirng mandada sea solo caracteres del abcdario.
2022-01-02 14:42:39 -06:00
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');
2020-11-15 22:49:00 -06:00
return texto;
};
2022-01-02 14:42:39 -06:00
/*
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);
2020-11-26 13:40:37 -06:00
for (let i = 0; i < texto.length; i++) {
2022-01-02 14:42:39 -06:00
if (caracterEspecial(texto[i])) continue;
if (!validator.isAlphanumeric(texto[i], 'es-ES'))
noValido(campo, m, 'contiene caracteres no validos');
2020-11-26 13:40:37 -06:00
}
return texto;
};
2022-01-02 14:42:39 -06:00
/*
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 }))
2022-01-02 19:34:55 -06:00
noValido(campo, m, 'tiene caracteres que no son números');
2020-11-16 09:58:55 -06:00
return numeroCuenta;
};
2022-01-02 14:42:39 -06:00
/*
Valida que la variable sea una fecha moment valida.
*/
const validarFecha = (fecha, campo, m) => {
2020-11-16 12:47:46 -06:00
let fechaMoment = moment(fecha);
2022-01-02 14:42:39 -06:00
noHay(fecha, campo, m);
if (!fechaMoment.isValid()) noValido(campo, m, 'no es una fecha válida');
2020-11-16 12:47:46 -06:00
return fechaMoment;
};
2022-01-02 14:42:39 -06:00
/*
Valida que una string contenga solo números
*/
const validarNumero = (
numero,
campo,
m,
length,
no_symbols = true,
makeNumber = false
) => {
validacionBasicaStr(numero, campo, m, length);
2022-01-02 19:34:55 -06:00
if (!validator.isNumeric(numero, { no_symbols }))
noValido(campo, m, 'tiene caracteres que no son números');
2021-05-05 19:16:15 -05:00
if (makeNumber) return Number(numero);
2020-11-17 10:12:30 -06:00
return numero;
};
2022-01-02 14:42:39 -06:00
// 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.');
// };
2021-04-05 15:24:18 -05:00
2022-01-02 14:42:39 -06:00
/*
Te dice si un objeto esta vacio o no.
*/
2021-05-13 14:06:07 -05:00
const validarObjetoVacio = (obj) => {
2022-01-02 14:42:39 -06:00
for (let key in obj) if (obj.hasOwnProperty(key)) return false;
2021-01-05 23:59:05 -06:00
return true;
};
2022-01-02 19:34:55 -06:00
const validarPreTermino = (idServicio) => {
return Servicio.findOne({ where: { idServicio } })
.then((res) => {
if (
res.idCuestionarioPrograma &&
res.idCuestionarioAlumno &&
res.cartaTermino &&
res.informeGlobal
)
return Servicio.update({ idStatus: 5 }, { where: { idServicio } });
return false;
})
.then((res) =>
res
? 'Este Servicio Social paso a Termino, espera a que COESI autorice tu liberación.'
: ''
);
};
2020-11-15 22:49:00 -06:00
module.exports = {
2020-11-16 12:47:46 -06:00
yaExiste,
2022-01-02 14:42:39 -06:00
noValido,
2020-11-16 12:47:46 -06:00
noHay,
2022-01-02 14:42:39 -06:00
validacionBasicaStr,
validarNumeroEntero,
2020-11-15 22:49:00 -06:00
validarCorreo,
validarTexto,
2020-11-26 13:40:37 -06:00
validarAlfanumerico,
2020-11-16 09:58:55 -06:00
validarNumeroCuenta,
2020-11-16 12:47:46 -06:00
validarFecha,
2020-11-17 10:12:30 -06:00
validarNumero,
2021-05-13 14:06:07 -05:00
validarObjetoVacio,
2022-01-02 19:34:55 -06:00
validarPreTermino,
2020-11-15 22:49:00 -06:00
};