diff --git a/src/utils/validationHandler.ts b/src/utils/validationHandler.ts index 85db98349cd54843fcc6c7d02918a1d59b828eaa..5d49c0e4a32975b673f68484f4395bcb58b29202 100644 --- a/src/utils/validationHandler.ts +++ b/src/utils/validationHandler.ts @@ -23,7 +23,7 @@ import { FormAnswer } from "../core/formAnswer"; import { Input } from "../core/input"; import { InputAnswer, InputAnswerDict } from "../core/inputAnswer"; import { ValidationType } from "./enumHandler"; -import { ValidationDict, ValidationError } from "./validationError"; +import { ValidationDict, ValidationError } from "./validationError"; /** * Validation's handler. Manage parse validation through the project. @@ -67,7 +67,7 @@ export class ValidationHandler { * @returns - True if has at max Size chars, else false. */ private static validateMaxChar(answer: string, size: string): boolean { - return (answer !== null && answer !== undefined && parseInt(size, 10) >= answer.length); + return (answer !== null && answer !== undefined && parseInt(size, 10) >= answer.length); } /** @@ -79,13 +79,13 @@ export class ValidationHandler { private static validateTypeOf(answer: string, type: string): boolean { // Using string here to avoid validate validations if (type === "int") { - return(!isNaN(parseInt(answer, 10))); + return (!isNaN(parseInt(answer, 10))); } else if (type === "float") { - return(!isNaN(parseFloat(answer))); + return (!isNaN(parseFloat(answer))); } else if (type === "date") { - return((new Date(answer)).toString() !== "Invalid Date"); + return ((new Date(answer)).toString() !== "Invalid Date"); } else { - return(false); + return (false); } } @@ -166,6 +166,19 @@ export class ValidationHandler { private static validateInput(input: Input, inputAnswers: InputAnswerDict): string { const errors: string[] = []; + let inputMandatory: boolean = false; + + for (const val of input.validation) { + if (val.type === ValidationType.MANDATORY) { + inputMandatory = true; + break; + } + } + + if ((inputAnswers[input.id] === undefined || inputAnswers[input.id][0].value === "") && !(inputMandatory)) { + return; + } + for (const validation of input.validation) { switch (validation.type) { @@ -247,7 +260,7 @@ export class ValidationHandler { } } - if ( Object.keys(errorsDict).length > 0) { + if (Object.keys(errorsDict).length > 0) { throw new ValidationError(errorsDict, "Validation Error"); } }