feat(form-builder): form_field_validation_rules table + polymorphic owner + scope + cascade

This commit is contained in:
2026-04-24 22:01:36 +02:00
parent 87fc964ead
commit fedaed1b32
17 changed files with 798 additions and 37 deletions

View File

@@ -48,7 +48,7 @@ use App\Models\VolunteerAvailability;
use App\Events\FormBuilder\FormSubmissionSubmitted;
use App\Listeners\FormBuilder\SyncTagPickerSelectionsOnSubmit;
use App\Listeners\FormBuilder\TriggerPersonIdentityMatchOnFormSubmit;
use App\Observers\FormBuilder\FormFieldBindingsCascadeObserver;
use App\Observers\FormBuilder\FormFieldChildTablesCascadeObserver;
use App\Observers\FormBuilder\FormSubmissionObserver;
use App\Observers\FormBuilder\FormValueObserver;
use App\Observers\PersonObserver;
@@ -95,10 +95,12 @@ class AppServiceProvider extends ServiceProvider
FormValue::observe(FormValueObserver::class);
\App\Models\FormBuilder\FormSubmission::observe(FormSubmissionObserver::class);
// Cascade binding rows on owner delete (WS-5a). Bindings are physical
// state; deleted on soft-delete as well as hard-delete of the owner.
FormField::observe(FormFieldBindingsCascadeObserver::class);
FormFieldLibrary::observe(FormFieldBindingsCascadeObserver::class);
// Cascade binding / validation-rule / config rows on owner delete.
// Children are physical state; deleted on soft-delete as well as
// hard-delete of the owner (WS-5a bindings, WS-5b validation rules
// + configs).
FormField::observe(FormFieldChildTablesCascadeObserver::class);
FormFieldLibrary::observe(FormFieldChildTablesCascadeObserver::class);
// ARCH §31.10 — FORM-02 TAG_PICKER sync listener.
\Illuminate\Support\Facades\Event::listen(