63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { validarRespuesta, ResultadoValidacion } from './validador';
|
|
|
|
/**
|
|
* Servicio para validar respuestas de cuestionarios
|
|
* Utiliza los validadores específicos según el tipo de validación requerido
|
|
*/
|
|
@Injectable()
|
|
export class ValidadorRespuestasService {
|
|
/**
|
|
* Valida una respuesta de acuerdo al tipo de validación de la pregunta
|
|
* @param respuesta Texto de la respuesta a validar
|
|
* @param tipoValidacion Tipo de validación ('correo', 'telefono', 'nombre', etc.)
|
|
* @returns Resultado de la validación (válido y mensaje)
|
|
*/
|
|
validarRespuesta(respuesta: string, tipoValidacion: string): ResultadoValidacion {
|
|
// Si no hay tipo de validación, la respuesta se considera válida
|
|
if (!tipoValidacion) {
|
|
return {
|
|
valido: true,
|
|
mensaje: 'No se requiere validación específica'
|
|
};
|
|
}
|
|
|
|
return validarRespuesta(respuesta, tipoValidacion);
|
|
}
|
|
|
|
/**
|
|
* Valida múltiples respuestas basadas en sus tipos de validación
|
|
* @param respuestas Array de respuestas a validar
|
|
* @param tiposValidacion Array de tipos de validación correspondientes
|
|
* @returns Object con resultados de validación usando las posiciones como claves
|
|
*/
|
|
validarRespuestas(
|
|
respuestas: string[],
|
|
tiposValidacion: string[]
|
|
): { [key: number]: ResultadoValidacion } {
|
|
const resultados: { [key: number]: ResultadoValidacion } = {};
|
|
|
|
respuestas.forEach((respuesta, index) => {
|
|
if (index < tiposValidacion.length) {
|
|
resultados[index] = this.validarRespuesta(respuesta, tiposValidacion[index]);
|
|
} else {
|
|
// Si no hay un tipo de validación correspondiente, se asume válida
|
|
resultados[index] = {
|
|
valido: true,
|
|
mensaje: 'No se requiere validación específica'
|
|
};
|
|
}
|
|
});
|
|
|
|
return resultados;
|
|
}
|
|
|
|
/**
|
|
* Comprueba si todas las respuestas son válidas
|
|
* @param resultados Resultados de validación
|
|
* @returns true si todas las validaciones son correctas, false en caso contrario
|
|
*/
|
|
todasValidas(resultados: { [key: number]: ResultadoValidacion }): boolean {
|
|
return Object.values(resultados).every(resultado => resultado.valido);
|
|
}
|
|
} |