feat: extensible participant status determination for booking creation

Adds a rule-based system to determine participant status in CREATE
payloads. Participants selecting a 'Begleitperson' service now receive
status 'O' (Option), all others default to 'F' (Final).

- Add ParticipantStatusRuleInterface for defining status rules
- Add ParticipantStatusRuleRegistry for priority-based rule evaluation
- Add ChaperonServiceStatusRule for Begleitperson detection
- Integrate status evaluation into BookingPayloadBuilder
This commit is contained in:
Björn Fromme
2026-03-16 12:02:59 +01:00
parent e1f1b60608
commit c1425f0562
10 changed files with 525 additions and 4 deletions
@@ -285,9 +285,9 @@ class ParticipantFieldOptionsProvider extends AbstractFieldOptionsProvider
}
$priceLabel = (null === $service->price || 0.0 === $service->price)
? 'inkl.'
: number_format($service->price, 2, ',', '.') . ' €';
: number_format($service->price, 2, ',', '.').' €';
return $service->label . ' (' . $priceLabel . ')';
return $service->label.' ('.$priceLabel.')';
},
'choice_attr' => function (?Service $service) use ($bookingDto, $participantIndex) {
if (null === $service) {