Björn Fromme
69f16b59cb
chore: update project dependencies
2026-03-16 12:03:00 +01:00
Björn Fromme
0e644260b6
feat: update wording
2026-03-16 12:03:00 +01:00
Björn Fromme
33609ab534
feat: shortened and filename-safe request ids
2026-03-16 12:03:00 +01:00
Björn Fromme
1cc7a025a1
fix: ensure pickups node exists in api payload
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
0d7d90a442
feat: anonymization command for request/response XML dumps
2026-03-16 12:03:00 +01:00
Björn Fromme
5cbdc5eaf2
chore: update project dependencies
2026-03-16 12:03:00 +01:00
Björn Fromme
a7c3064df6
feat: adopt new pickups planning payload JSON structure
2026-03-16 12:03:00 +01:00
Björn Fromme
f63d52c9d6
chore: cleanup
2026-03-16 12:03:00 +01:00
Björn Fromme
b752256bda
fix: validate mandatory services selection
2026-03-16 12:03:00 +01:00
Björn Fromme
474d171779
fix: correctly validate pickup selection
...
closes #869c94jqn
2026-03-16 12:03:00 +01:00
Björn Fromme
51ce9b6e45
fix: don't restore selections from draft for immutable fields
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
e6880b7fed
chore: remove dead code
2026-03-16 12:03:00 +01:00
Björn Fromme
e505eba111
chore: add git ignored temp directory
2026-03-16 12:03:00 +01:00
Björn Fromme
4e067d13b3
feat: avoid indexing of content by crawlers
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
6abfa122e4
chore: update plan for symfony 7.4 upgrade
2026-03-16 12:03:00 +01:00
Björn Fromme
032540a712
chore: update project dependencies
2026-03-16 12:03:00 +01:00
Björn Fromme
cf95048f2b
fix: prevent race conditions in htmx boost response handling
2026-03-16 12:03:00 +01:00
Björn Fromme
29a1ce7de7
fix: ensure loading indicator when entering booking flow in Chrome
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
3644b935fd
fix: always fill-in empty participants names when submitting to api
2026-03-16 12:03:00 +01:00
Björn Fromme
20162cceef
chore: update project dependencies
2026-03-16 12:03:00 +01:00
Björn Fromme
44a9de7db7
fix: correct sort order of pickups and drop-offs
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
f8a56b7de2
chore: split scheduler config for prod and staging
2026-03-16 12:03:00 +01:00
Björn Fromme
8a667ccaba
chore: update project dependencies
2026-03-16 12:03:00 +01:00
Björn Fromme
6ddd0b00bd
fix: handle empty api responses more gracefully
2026-03-16 12:03:00 +01:00
Björn Fromme
c597cfda51
feat: legal links in page footer
2026-03-16 12:03:00 +01:00
Björn Fromme
f673bc59d0
fix: catch unexpected api response for personal data
2026-03-16 12:03:00 +01:00
Björn Fromme
78b925daa6
fix: backward compatibility for new session format
2026-03-16 12:03:00 +01:00
Björn Fromme
4e05c94912
fix: correctly determine file size and avoid type mismatch
2026-03-16 12:03:00 +01:00
Björn Fromme
acb599b760
feat: show booking status in sidebar
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
b4f7299f27
chore: update project dependencies
2026-03-16 12:03:00 +01:00
Björn Fromme
6fd5a218a3
feat: reduce session payload
2026-03-16 12:03:00 +01:00
Björn Fromme
a1518c06fb
chore: use correct database type to replicate prod environment
2026-03-16 12:03:00 +01:00
Björn Fromme
c517a0b41f
chore: add staging environment to deployer config
2026-03-16 12:03:00 +01:00
Björn Fromme
ded904fac8
fix: correct room assignment and count
...
closes #869c2jnzr
2026-03-16 12:03:00 +01:00
Björn Fromme
abea6bff7b
chore: align node and npm versions of DDEV with host, use npm ci
2026-03-16 12:03:00 +01:00
Björn Fromme
06f53ba6eb
feat: fill default names for canceled participants in agency bookings
2026-03-16 12:03:00 +01:00
Björn Fromme
eda0919f52
chore: update frontend tooling
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
bbc011ddb9
feat: update personal data of canceled participants as well
...
addresses #869bze0kq
2026-03-16 12:02:59 +01:00
Björn Fromme
c2054a1ef6
chore: update project dependencies
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
3e1d719512
chore: update platform specs in composer.json for prod
2026-03-16 12:02:59 +01:00
Björn Fromme
f685bd18ab
chore: update project dependencies
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
380b1ed329
chore: streamline namespacing
2026-03-16 12:02:59 +01:00
Björn Fromme
1056b4fba6
chore: update project dependencies
2026-03-16 12:02:59 +01:00
Björn Fromme
19031dba99
fix: enforce profile completion of applicant in all situations
2026-03-16 12:02:59 +01:00
Björn Fromme
028db7a7ee
fix: ensure complete participant data even when canceled
2026-03-16 12:02:59 +01:00
Björn Fromme
a1764faaeb
chore: update project dependencies
2026-03-16 12:02:59 +01:00
Björn Fromme
8529bb0e21
fix: streamline datalayer integration for all events
2026-03-16 12:02:59 +01:00
Björn Fromme
9eefdd1858
fix: properly initialize CMP, GTM and data layer for tracking
2026-03-16 12:02:59 +01:00
Björn Fromme
e5803860df
feat: remove street from hotel address in sidebar
...
addresses #869bwq1vh
2026-03-16 12:02:59 +01:00
Björn Fromme
2754d734aa
chore: update frontend dependencies
2026-03-16 12:02:59 +01:00
Björn Fromme
3487ca4822
chore: update project dependencies
2026-03-16 12:02:59 +01:00
Björn Fromme
02ebddc34a
feat: require all personal data fields for registration
2026-03-16 12:02:59 +01:00
Björn Fromme
3957f6bd09
feat: tracking integration with GTM and CMP
2026-03-16 12:02:59 +01:00
Björn Fromme
11ab98b3d8
feat: domain-based theme-detection
2026-03-16 12:02:59 +01:00
Björn Fromme
e24403949c
chore: update database and php versions to match prod environment
2026-03-16 12:02:59 +01:00
Björn Fromme
288f6b91d0
chore: update deployer config for new hosting environment
2026-03-16 12:02:59 +01:00
Björn Fromme
8ca105966d
fix: don't normalize hotel and product codes when fetching cms data
2026-03-16 12:02:59 +01:00
Björn Fromme
592cd517ff
chore: update project url in ddev
2026-03-16 12:02:59 +01:00
Björn Fromme
586b410a66
chore: update project dependencies
2026-03-16 12:02:59 +01:00
Björn Fromme
a444940db2
feat: display error codes in admin overview
2026-03-16 12:02:59 +01:00
Björn Fromme
afe5aef9f7
feat: error-codes in flash messages to reference log entries
2026-03-16 12:02:59 +01:00
Björn Fromme
21a3e8fafc
feat: user-friendly error messages on login
2026-03-16 12:02:59 +01:00
Björn Fromme
26bbba5a2e
feat: streamlined flash messages
2026-03-16 12:02:59 +01:00
Björn Fromme
b68d5c9398
fix: revert pickup pricing to match current BusPro behavior
...
Reverts split pricing calculation to use outbound-only pricing,
matching BusPro's current behavior where pickup is only charged when
outbound transportation is BUS.
- Use pickup->price directly instead of calculateEffectivePrice()
- PKW+BUS scenario now correctly charges €0 (matches BusPro loophole)
- priceOutbound/priceInbound remain populated for future activation
- Updated documentation with current behavior and future plan
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
e1f1b60608
feat: infotext for insurance booking conditions
...
closes #869bvcu2p
2026-03-16 12:02:59 +01:00
Björn Fromme
ea1c95528c
chore: update httpclient config to use random values for contactform
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
b856c51389
chore: remove debug logging in toast controller
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
7d91dcfb70
chore: update test to fix deprecation warning
2026-03-16 12:02:59 +01:00
Björn Fromme
8e7e6266f0
chore: update project dependencies
2026-03-16 12:02:59 +01:00
Björn Fromme
167ccf5151
feat: ignored room types
...
closes #869bvbmcw
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
7d3a63d744
chore: update alert wording to be more descriptive
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
18d60c8781
feat: allow editing of nationality in personal data
2026-03-16 12:02:59 +01:00
Björn Fromme
7708ea6a0f
fix: default participant's nationality to German to avoid missing data
2026-03-16 12:02:59 +01:00
Björn Fromme
71a46c6b63
chore: update rsync excludes in deployer config
2026-03-16 12:02:55 +01:00
Björn Fromme
667324df69
feat: body dimensions mandatory with selected rentals, updated help text
...
feat: body dimensions mandatory with selected rentals
2026-03-16 12:02:28 +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
029a87c6ca
doc: add technical documentation
2026-03-16 12:02:28 +01:00
Björn Fromme
baa4609102
fix: ensure unique services mapping when creating api payload
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
0bf78b0b81
fix: correctly handle discounts applied by dpn api
2026-03-16 12:02:28 +01:00
Björn Fromme
c90b93556a
feat: cli command to download travel xml data from buspro api
2026-03-16 12:02:28 +01:00
Björn Fromme
f45718ea06
fix: correct body dimensions values
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