Files
formularios_api/src/validaciones/validador-respuestas.service.ts
T

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);
}
}