feat: prefer discounted transportation services
addresses #869axbjbz
This commit is contained in:
@@ -43,10 +43,18 @@
|
||||
- **Field Handlers**: 15+ specialized handlers in `src/Form/Service/`
|
||||
- Registered via service tags with dependency resolution
|
||||
- Process in dependency order via `ParticipantFieldHandlerRegistry`
|
||||
- `ParticipantDateOfBirthFieldHandler` handles array input from BirthdayType widget
|
||||
- **Conditional Fields**: Universal condition system (`FieldConditionInterface`)
|
||||
- Age-based, field-dependent, service-specific conditions
|
||||
- Applied via `CreateFieldStateProvider` / `EditFieldStateProvider`
|
||||
- **HTMX Integration**: Real-time updates for dynamic fields
|
||||
- **Date of Birth Field**: Uses `BirthdayType` with three text inputs (day, month, year)
|
||||
- Widget: `widget: 'text'` renders separate text fields instead of dropdowns
|
||||
- Input format: `input: 'datetime_immutable'` for immutable date handling
|
||||
- Custom theme: `birthday_widget` block in `templates/forms.html.twig` handles rendering
|
||||
- German format: Day.Month.Year with hardcoded placeholders ("Tag", "Monat", "Jahr")
|
||||
- Field order explicitly set to `['day', 'month', 'year']` for German date convention
|
||||
- HTMX attributes applied to parent container for form refresh on change
|
||||
|
||||
### Service Layer (`src/Service/`)
|
||||
- `BookingService` - Core booking workflow
|
||||
@@ -213,6 +221,8 @@ Critical for correct pricing and auto-reassignment:
|
||||
- Courses, additional services, board, insurance hidden until DOB provided
|
||||
- Age evaluated at travel start date, not current date
|
||||
- Dual constraint types: absolute_age, birth_year, mixed
|
||||
- **Array input handling**: `ParticipantDateOfBirthFieldHandler` processes array `['day' => X, 'month' => Y, 'year' => Z]` from three-field widget
|
||||
- **Date normalization**: Handler converts array to `DateTimeImmutable` using `sprintf()` with proper formatting
|
||||
|
||||
### Bulk Insurance Booking
|
||||
- Applicant enables bulk → applies to all participants
|
||||
|
||||
Reference in New Issue
Block a user