Commit Graph
143 Commits
Author SHA1 Message Date
Björn Fromme 26bbba5a2e feat: streamlined flash messages 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 0cac2969ae feat: log contact form submissions 2026-03-16 12:02:59 +01:00
Björn Fromme c582e0820a feat: move profile completeness check from login to booking flow entry
- Add profileComplete flag to User entity to avoid API calls
- Set flag during login (BpnAuthenticator) and profile save
- Check flag in IndexController when entering booking flow
- Remove ProfileCompletionSubscriber (no longer needed)

Users with incomplete profiles are only redirected when starting
a new booking, not on every login. Eliminates extra API call by
caching completeness status on the user entity.
2026-03-16 12:02:59 +01:00
Björn Fromme 0a0987873f feat: enforce profile data completeness before entering booking flow 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 6d418ee8cc fix: account for discounts applied by bpn api in validation request 2026-03-16 12:02:28 +01:00
Björn Fromme fba3becb06 feat: always load fresh api data when starting to edit booking 2026-03-16 12:02:28 +01:00
Björn Fromme 384744c958 feat: xlsx export of booking edit draft data for admins 2026-03-16 12:02:28 +01:00
Björn Fromme 136e2d68a2 feat: integrate with easy admin bundle 2026-03-16 12:02:27 +01:00
Björn Fromme bdcd54687d feat: streamlined booking number property 2026-03-16 12:02:27 +01:00
Björn Fromme 99190b0ef1 wip: integrate with easy admin bundle 2026-03-16 12:02:27 +01:00
Björn Fromme 30496a4875 feat: cleanup, log successful bookings 2026-03-16 12:02:27 +01:00
Björn Fromme e09e5858d8 fix: don't update booking session and draft on form refresh
Each form refresh would create a draft even for users that just explore
booking options causing stale draft records in the database.
2026-03-16 12:02:27 +01:00
Björn Fromme fedfcc247e fix: update draft together with session on refresh 2026-03-16 12:02:27 +01:00
Björn Fromme 8186adfaeb fix: show actual error message 2026-03-16 12:02:27 +01:00
Björn Fromme 8646dfbf02 fix: avoid float rounding errors when comparing 2026-03-16 12:02:27 +01:00
Björn Fromme 7942656026 fix: redirect to dashboard as default when logged in 2026-03-16 12:01:09 +01:00
Björn Fromme 96d4b8ed45 fix: apply correct return type and response handling 2026-03-16 12:01:09 +01:00
Björn Fromme c18ba3d815 fix: only invalidate cache and remove draft on successful edit 2026-03-16 12:01:09 +01:00
Björn Fromme fd81079247 chore: code cleanup 2026-03-16 12:01:09 +01:00
Björn Fromme e5781fbabc fix: invalidate booking data caches after updating personal data 2026-03-16 12:01:09 +01:00
Björn Fromme db74b6049c feat: remove cancel confirmation since obsolete because of drafts 2026-03-16 12:01:09 +01:00
Björn Fromme 0b5c7af4be feat: automatic saving of drafts when editing bookings 2026-03-16 12:01:09 +01:00
Björn Fromme 02742aef5b fix: catch travel data not found errors to show proper flash message 2026-03-16 12:01:09 +01:00
Björn Fromme 643f65ce3b chore: reduce noise in logs 2026-03-16 12:00:56 +01:00
Björn Fromme 465ce3e69a feat: add logging to api endpoint 2026-03-16 12:00:56 +01:00
Björn Fromme 3c2ade9299 feat: loading indicator on initial page load 2026-03-16 12:00:56 +01:00
Björn Fromme 12b69bd681 feat: load availability data once per booking session 2026-03-16 12:00:56 +01:00
Björn Fromme 80c81c11fb feat: log pickups planning data api calls 2026-03-16 12:00:56 +01:00
Björn Fromme 65f8436aa7 feat: extended oauth2 user info and refactored authenticator 2026-03-16 12:00:56 +01:00
Björn Fromme d1e807b11f feat: adjust oauth2 implementation for TYPO3 backend login 2026-03-16 12:00:56 +01:00
Björn Fromme ee84690cd9 feat: basic themes for event sites 2026-03-16 12:00:56 +01:00
Björn Fromme c7a27f1dc7 feat: api endpoints for pickups planning 2026-03-16 12:00:56 +01:00
Björn Fromme 654ae4dc0b feat: use query parameters for booking urls 2026-03-16 12:00:56 +01:00
Björn Fromme 96619c6cec fix: reset room assignments after updated selection if required 2026-03-16 12:00:56 +01:00
Björn Fromme 65398d59d4 chore: simplify parameter handling 2026-03-16 12:00:55 +01:00
Björn Fromme 3df9659ce2 feat: configurable choices for body dimensions
closes #8697phk21
2026-03-16 12:00:55 +01:00
Björn Fromme b567b6a840 feat: re-implement contact form submissions api endpoint for website 2026-03-16 12:00:55 +01:00
Björn Fromme 3d1b75b591 fix: ensure flash message is displayed after redirect 2026-03-16 12:00:55 +01:00
Björn Fromme 6bbef0a975 feat: various improvements in styles and layout 2026-03-16 12:00:55 +01:00
Björn Fromme 15fdfdc42e feat: load cms data early to display image on login page 2026-03-16 12:00:55 +01:00
Björn Fromme a6d2661562 feat: improved error handling and redirect on invalid session 2026-03-16 12:00:55 +01:00
Björn Fromme 4b95b12a7b feat: indicate incomplete participant data in cards 2026-03-16 12:00:55 +01:00
Björn Fromme 28c426ca3c feat: increase availability cache ttl and ensure fresh data when entering form 2026-03-16 12:00:55 +01:00
Björn Fromme 87439ee509 feat: optional return url 2026-03-16 12:00:41 +01:00
Björn Fromme 400407358d fix: remove obsolete htmx attributes from forms 2026-03-16 11:59:12 +01:00
Björn Fromme 1e107c68b4 feat: implement hx-boost for reliable loading indication 2026-03-16 11:59:12 +01:00
Björn Fromme 4a2d1f4a02 feat: implement screendesign 2026-03-16 11:59:12 +01:00
Björn Fromme 8c8aae9a1e feat: refactoring and cleanup 2026-03-16 11:59:12 +01:00