Commit Graph
146 Commits
Author SHA1 Message Date
fromme f595183c05 fix: don't require email address from participants under 16 2026-09-01 15:15:58 +02:00
Björn Fromme 6ee00f2bee feat: hide unavailable ski passes from selection in create flow 2026-08-06 13:08:46 +02:00
Björn Fromme 2cfa87f44b feat: indicate family insurance eligibility 2026-08-05 15:11:58 +02:00
Björn Fromme 0b642dcfe4 fix: reconcile assigned family insurance rate on updated participant 2026-08-05 15:11:48 +02:00
Björn Fromme 8a46908856 fix: incorrect rules around family insurances
addresses #869dr80qj
2026-08-05 15:11:37 +02:00
Björn Fromme c929d4da3b feat: show tooltips for parking space option and omit price when 0,00
addresses #869ebkmhw
2026-08-01 16:19:14 +02:00
Björn Fromme b323c120f9 fix: consider parking space availability 2026-07-23 17:44:08 +02:00
Björn Fromme a8d2852313 fix: log swallowed exceptions in date parsing and webhook 2026-06-26 17:17:49 +02:00
Björn Fromme 08f6633507 fix: sync booking model when transportation discount is replaced 2026-06-23 16:24:15 +02:00
Björn Fromme dbe33ec760 fix: exclude name and date of birth from editable fields for now 2026-06-23 15:47:33 +02:00
Björn Fromme 145f7de781 fix: make personal data editable in bookings as permitted by bpn 2026-06-23 15:24:10 +02:00
Björn Fromme eaff989bdd fix: always filter ski passes by participant's age 2026-05-07 11:40:45 +02:00
Björn Fromme 1fa8f88a6d chore: code cleanup with rector and php-cs-fixer 2026-05-04 17:20:01 +02:00
Björn Fromme 083e68ee4d feat: placeholder text for room remarks field
closes #869ch2wv8
2026-04-21 15:10:50 +02:00
Björn Fromme 0fcecc9c58 chore: fix phpstan errors 2026-04-16 16:27:35 +02:00
Björn Fromme a927d6bf59 chore: cgl cleanup 2026-04-16 13:34:54 +02:00
Björn Fromme d1c92f2957 feat: replace *Service suffix with role-based class names 2026-04-16 13:34:54 +02:00
Björn Fromme 63e8a068b3 feat: move prepopulation guards into participant service 2026-04-11 18:28:32 +02:00
Björn Fromme 1b0e479e49 feat: refactor participant card DTOs and labels 2026-04-11 18:28:32 +02:00
Björn Fromme cb56a4fe46 feat: implement mutability cutoff for rentals
addresses #869cca42x
2026-03-17 10:29:43 +01:00
Björn Fromme 752e6752b4 feat: limit room remarks field to 200 characters to align with buspro 2026-03-17 10:01:40 +01:00
Björn Fromme c510cbf590 feat: auto-booking services
addresses #869cfcptv
2026-03-16 20:24:58 +01:00
Björn Fromme 0e644260b6 feat: update wording 2026-03-16 12:03:00 +01:00
Björn Fromme 709b0ff61e fix: ensure drop-offs are submitted when same as pickups 2026-03-16 12:03:00 +01:00
Björn Fromme 9cef24f827 fix: enforce mutability checks for all fields 2026-03-16 12:03:00 +01:00
Björn Fromme 40c0042158 feat: use normalized checkbox values in field handlers 2026-03-16 12:03:00 +01:00
Björn Fromme 1670b8b8d2 fix: avoid selection trap for mandatory services with age constraints 2026-03-16 12:03:00 +01:00
Björn Fromme f99a2d99a2 fix: show pickup select field for outbound bus travel only 2026-03-16 12:03:00 +01:00
Björn Fromme f795a3ea21 feat: selectable drop-offs for inbound bus travel 2026-03-16 12:03:00 +01:00
Björn Fromme c7b70dbd56 feat: dummy data fill
closes #869c3khk0
2026-03-16 12:03:00 +01:00
Björn Fromme 1f27c744d2 chore: code cleanup 2026-03-16 12:02:59 +01:00
Björn Fromme f9d420fecd feat: revert allow updating room assignments in edit mode 2026-03-16 12:02:59 +01:00
Björn Fromme f46cc59041 fix: allow updating room assignments in edit mode 2026-03-16 12:02:59 +01:00
Björn Fromme c1425f0562 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
2026-03-16 12:02:59 +01:00
Björn Fromme aa3b23ecb8 feat: info text and correct field type for service group 'VEG'
addresses #869bvch71
2026-03-16 12:02:59 +01:00
Björn Fromme 1e653e213a fix: don't hide voucher fields for booking status 'O'
closes #869bvbkrd
2026-03-16 12:02:59 +01:00
Björn Fromme 957e20d763 fix: preserve selected services from booking even when unavailable
When editing a booking, services that were previously booked but are no
longer available in the travel catalog were being dropped. This caused
API error 650 ("Anzahl Leistung stimmt nicht mit Teilnehmerzuordnung
überein") because the service participant counts no longer matched.

The fix ensures that in edit mode, booked services are merged with
travel data services in both:
- Form rendering (ParticipantFieldOptionsProvider): so checkboxes appear
- Handler validation (AbstractParticipantFieldHandler): so selections
  are accepted

This allows users to keep their existing service selections or
deliberately replace them with other available options. Create mode
remains unchanged.
2026-03-16 12:02:28 +01:00
Björn Fromme 875943e4da feat: match modes for room selection condition to detect MBZ*
addresses #869btdcyh
2026-03-16 12:02:28 +01:00
Björn Fromme 10e674cdd0 feat: improved logic to control field visibility
addresses #869btdphv
2026-03-16 12:02:28 +01:00
Björn Fromme 70c6617e88 feat: merge draft data with api response for selected fields 2026-03-16 12:02:28 +01:00
Björn Fromme dd0f1a25d0 feat: always allow editing of participants for internal bookings
Prior to this commit the mutability flag from BusProNet was evaluated
and would potentially conflict with this rule. This flag is now
completely ignored for internal bookings.
2026-03-16 12:02:27 +01:00
Björn Fromme 95d0ce33d4 feat: new service category 'VEG' 2026-03-16 12:02:27 +01:00
Björn Fromme e222f448bb feat: proper determination of agency initiated bookings
For booking that are agency initiated (groups) different rules apply
concerning mutability and requirement of personal data and whether the
first participant is the applicant or not. This commit adds logic to
evaluate the agency id assigned to the booking data to decide.
2026-03-16 12:02:27 +01:00
Björn Fromme d7fd273475 fix: ensure rental insurance is selectable when insurance is available
addresses #869bp9ev5
2026-03-16 12:01:09 +01:00
Björn Fromme ce828a6ef5 fix: correctly distinguish between first participant and applicant 2026-03-16 12:01:09 +01:00
Björn Fromme e3bdd8737f feat: update field label 2026-03-16 12:01:09 +01:00
Björn Fromme ea1ce4a029 docs: add inline documentation where missing 2026-03-16 12:01:09 +01:00
Björn Fromme ee84690cd9 feat: basic themes for event sites 2026-03-16 12:00:56 +01:00
Björn Fromme 1fd9f8d1f8 feat: always show all available ski passes but readonly if age doesn't match 2026-03-16 12:00:56 +01:00
Björn Fromme b57d849ecd feat: update labels of voucher fields
addresses #869bf8tzv
2026-03-16 12:00:56 +01:00