import {JsonForm} from "../../../../models/JsonForms";
import {FORM_RULES} from "../../../../hooks/useValidateForm";


export const makeFormRules = (form: JsonForm): FORM_RULES => {
    const rules: FORM_RULES = {};

    form.form_sections.forEach((sec) => {
        sec.form_fields.forEach((field) => {
            if (field.type === 'text' && field.rule && field.required) {
                // Field has rule and is required
                rules[field.name] = {
                    condition: (e: any) => new RegExp(field.rule!.condition).test(e),
                    message: field.rule!.message,
                };
            } else if (field.type === 'text' && field.rule) {
                // Field has rule but NOT required (allow empty)
                rules[field.name] = {
                    condition: (e: any) => new RegExp(field.rule!.condition).test(e) || e === '',
                    message: field.rule!.message,
                };
            } else if (field.required && field.type === 'select') {
                // Required select allows null (when not rendered)
                rules[field.name] = {
                    condition: (e: any) => Boolean(e) || e === null,
                    message: 'Το πεδίο είναι υποχρεωτικό',
                };
            } else if (field.required) {
                // Other required fields must be truthy
                rules[field.name] = {
                    condition: (e: any) => Boolean(e),
                    message: 'Το πεδίο είναι υποχρεωτικό',
                };
            }
        });
    });

    return rules;
};
