import { ActionParams } from "../../action/type/ActionParams"; import { Context } from "../../context/Context"; import { CustomError } from "../../exception/CustomError"; import { IRule } from "../interface/IRule"; import Validator from 'validatorjs'; export class BaseRule implements IRule { public validator!: Validator.Validator; public errors: Array = []; public passes : boolean = false; public fails : boolean = false; public params! : ActionParams; constructor(params: ActionParams){ this.params = params; } public addError(error: any): void { let customError = CustomError.parseCustomError(error); if(customError instanceof Array){ customError.map((itemError)=>{this.errors.push(itemError)}); }else{ this.errors.push(customError); } } public getErrors():Array{ return this.errors; } public evaluate (data: any, rules: any, messages: any): boolean { this.validator = new Validator(data, rules, messages); let passes = this.validator.passes(); let fails = this.validator.fails(); this.addError(this.validator.errors); if(passes) return true; else if(fails) return false; return false; } public reset (): void { this.errors = []; this.passes = false; this.fails = false; } public passesOrFails (passes:Array): boolean { if(passes.every((pass : boolean) => pass == true)){ this.passes = true; return true; }else{ this.fails = true; return false; } } public validate(rules: Array, context: Context): boolean { return this.passes; } }