Commit Graph
100 Commits
Author SHA1 Message Date
Björn Fromme 39972c1418 fix: avoid selection trap for mandatory services with age constraints 2026-02-20 17:06:43 +01:00
Björn Fromme 45cfc459aa fix: always fill-in empty participants names when submitting to api 2026-02-20 09:48:22 +01:00
Björn Fromme 21356f00d5 chore: update project dependencies 2026-02-19 12:57:09 +01:00
Björn Fromme 4529fe5472 fix: correct sort order of pickups and drop-offs 2026-02-19 12:56:06 +01:00
Björn Fromme 08aaff1e2d fix: show pickup select field for outbound bus travel only 2026-02-19 08:22:52 +01:00
Björn Fromme 0884a39f3d feat: selectable drop-offs for inbound bus travel 2026-02-17 11:53:39 +01:00
Björn Fromme 41b0f56b5b chore: split scheduler config for prod and staging 2026-02-17 11:53:14 +01:00
Björn Fromme b034b8c7f8 chore: update project dependencies 2026-02-17 08:57:07 +01:00
Björn Fromme a4cae4f321 fix: handle empty api responses more gracefully 2026-02-17 08:55:49 +01:00
Björn Fromme ab67f9d7b5 feat: legal links in page footer 2026-02-16 09:09:28 +01:00
Björn Fromme a22688c87e fix: catch unexpected api response for personal data 2026-02-15 12:57:03 +01:00
Björn Fromme cfc52a9cf3 fix: backward compatibility for new session format 2026-02-15 12:55:48 +01:00
Björn Fromme 33e09bbe89 fix: correctly determine file size and avoid type mismatch 2026-02-14 16:09:21 +01:00
Björn Fromme a339f8a517 feat: show booking status in sidebar 2026-02-14 16:04:54 +01:00
Björn Fromme abeb91b59f feat: dummy data fill
closes #869c3khk0
2026-02-14 15:56:56 +01:00
Björn Fromme 350a9e6742 chore: update project dependencies 2026-02-14 09:49:38 +01:00
Björn Fromme c373a98953 feat: reduce session payload 2026-02-14 09:47:14 +01:00
Björn Fromme 3863999f2a chore: use correct database type to replicate prod environment 2026-02-13 20:22:29 +01:00
Björn Fromme 54410628b4 chore: add staging environment to deployer config 2026-02-13 13:45:41 +01:00
Björn Fromme 2c3ce32282 fix: correct room assignment and count
closes #869c2jnzr
2026-02-09 11:00:36 +01:00
Björn Fromme dd03cdd77f chore: align node and npm versions of DDEV with host, use npm ci 2026-02-05 18:07:43 +01:00
Björn Fromme bc8d4f74c1 feat: fill default names for canceled participants in agency bookings 2026-02-05 17:57:35 +01:00
Björn Fromme 6f869bdb1a chore: update frontend tooling 2026-02-05 17:56:36 +01:00
Björn Fromme 6adc0769c7 chore: code cleanup 2026-02-05 17:45:54 +01:00
Björn Fromme 2f9930a240 feat: update personal data of canceled participants as well
addresses #869bze0kq
2026-02-05 11:23:25 +01:00
Björn Fromme 3036a7773c chore: update project dependencies 2026-02-05 10:30:01 +01:00
Björn Fromme e668c2d882 feat: revert allow updating room assignments in edit mode 2026-02-05 10:29:34 +01:00
Björn Fromme bb4768c491 chore: update platform specs in composer.json for prod 2026-01-30 17:46:51 +01:00
Björn Fromme 9140e4f3fc chore: update project dependencies 2026-01-30 17:29:56 +01:00
Björn Fromme 6b205c7a86 fix: allow updating room assignments in edit mode 2026-01-30 17:29:26 +01:00
Björn Fromme 0aa4bb5055 chore: streamline namespacing 2026-01-30 16:10:29 +01:00
Björn Fromme ee3b1f47a7 chore: update project dependencies 2026-01-29 16:25:35 +01:00
Björn Fromme 40da2ecaf3 fix: enforce profile completion of applicant in all situations 2026-01-29 16:24:27 +01:00
Björn Fromme 5d0ba0ef9a fix: ensure complete participant data even when canceled 2026-01-29 12:57:37 +01:00
Björn Fromme 786a4306dd chore: update project dependencies 2026-01-28 19:41:28 +01:00
Björn Fromme 677ffc7368 fix: streamline datalayer integration for all events 2026-01-28 19:40:48 +01:00
Björn Fromme 93eb08c610 fix: properly initialize CMP, GTM and data layer for tracking 2026-01-27 21:25:03 +01:00
Björn Fromme 6365e4b24c feat: remove street from hotel address in sidebar
addresses #869bwq1vh
2026-01-27 18:36:03 +01:00
Björn Fromme e138fbeca8 chore: update frontend dependencies 2026-01-27 18:29:59 +01:00
Björn Fromme d29a6a1835 chore: update project dependencies 2026-01-27 18:26:15 +01:00
Björn Fromme dc91660488 feat: require all personal data fields for registration 2026-01-27 18:25:38 +01:00
Björn Fromme e9548d9f38 feat: tracking integration with GTM and CMP 2026-01-27 17:31:41 +01:00
Björn Fromme d5944bf717 feat: domain-based theme-detection 2026-01-27 11:18:37 +01:00
Björn Fromme 2355442ac0 chore: update database and php versions to match prod environment 2026-01-26 08:24:19 +01:00
Björn Fromme 789555078d chore: update deployer config for new hosting environment 2026-01-25 13:53:43 +01:00
Björn Fromme 34f190f469 fix: don't normalize hotel and product codes when fetching cms data 2026-01-23 15:35:24 +01:00
Björn Fromme 8646c4ffdd chore: update project url in ddev 2026-01-23 13:05:48 +01:00
Björn Fromme 419d3b78c6 chore: update project dependencies 2026-01-23 12:54:07 +01:00
Björn Fromme e8df7d193e feat: display error codes in admin overview 2026-01-23 11:15:46 +01:00
Björn Fromme aa08307500 feat: error-codes in flash messages to reference log entries 2026-01-23 11:06:24 +01:00
Björn Fromme c41524c1fd feat: user-friendly error messages on login 2026-01-23 10:30:17 +01:00
Björn Fromme 8dec0be375 feat: streamlined flash messages 2026-01-23 10:15:44 +01:00
Björn Fromme 9471abce94 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-01-21 17:18:09 +01:00
Björn Fromme 2aeed762fd 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-01-21 10:16:57 +01:00
Björn Fromme 512b63b88b feat: infotext for insurance booking conditions
closes #869bvcu2p
2026-01-21 09:33:36 +01:00
Björn Fromme 92d7eac3a1 chore: update httpclient config to use random values for contactform 2026-01-21 09:02:47 +01:00
Björn Fromme 548b8a8ef0 feat: log contact form submissions 2026-01-21 08:43:28 +01:00
Björn Fromme fb8aabe34c chore: remove debug logging in toast controller 2026-01-21 08:11:36 +01:00
Björn Fromme 0c1f143b12 feat: info text and correct field type for service group 'VEG'
addresses #869bvch71
2026-01-20 18:36:33 +01:00
Björn Fromme 24ac2efc53 fix: don't hide voucher fields for booking status 'O'
closes #869bvbkrd
2026-01-20 16:06:17 +01:00
Björn Fromme e7a139b025 chore: update test to fix deprecation warning 2026-01-20 16:05:48 +01:00
Björn Fromme cfe19b7a74 chore: update project dependencies 2026-01-20 16:05:28 +01:00
Björn Fromme f725a6b72f feat: ignored room types
closes #869bvbmcw
2026-01-20 15:52:57 +01:00
Björn Fromme a097159897 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-01-19 18:55:55 +01:00
Björn Fromme da33620ea9 chore: update alert wording to be more descriptive 2026-01-19 18:06:29 +01:00
Björn Fromme 0b44394b11 feat: enforce profile data completeness before entering booking flow 2026-01-19 18:04:19 +01:00
Björn Fromme 2949870acc feat: allow editing of nationality in personal data 2026-01-19 17:12:26 +01:00
Björn Fromme 35c289240d fix: default participant's nationality to German to avoid missing data 2026-01-19 17:12:12 +01:00
Björn Fromme 3b165bf292 chore: update rsync excludes in deployer config 2026-01-19 16:17:35 +01:00
Björn Fromme f0c43a17d8 feat: body dimensions mandatory with selected rentals, updated help text
feat: body dimensions mandatory with selected rentals
2026-01-19 16:12:53 +01:00
Björn Fromme 2776429639 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-01-19 15:51:39 +01:00
Björn Fromme 5c9f8c2a2e doc: add technical documentation 2026-01-17 19:27:06 +01:00
Björn Fromme 3e6533829c fix: ensure unique services mapping when creating api payload 2026-01-16 14:22:17 +01:00
Björn Fromme 054505d853 feat: match modes for room selection condition to detect MBZ*
addresses #869btdcyh
2026-01-15 11:02:27 +01:00
Björn Fromme c793550af5 feat: improved logic to control field visibility
addresses #869btdphv
2026-01-15 10:28:26 +01:00
Björn Fromme b18fccff9d fix: correctly handle discounts applied by dpn api 2026-01-14 17:46:15 +01:00
Björn Fromme 398eb448cb feat: cli command to download travel xml data from buspro api 2026-01-14 16:57:17 +01:00
Björn Fromme 6cdede138e fix: correct body dimensions values 2026-01-14 16:07:30 +01:00
Björn Fromme 3046aad94d fix: account for discounts applied by bpn api in validation request 2026-01-14 12:47:25 +01:00
Björn Fromme ec2ce6ec62 feat: revert room price fetching for performance reasons 2026-01-13 15:54:54 +01:00
Björn Fromme 3c61e7eaf3 feat: trigger form refresh for dob when completely entered only 2026-01-13 15:37:05 +01:00
Björn Fromme f942600dd8 fix: fetch fresh room prices from api to avoid calculation mismatch 2026-01-13 15:14:27 +01:00
Björn Fromme efacbf64cb fix: consider booking status O correctly 2026-01-13 14:42:51 +01:00
Björn Fromme e38445f184 fix: correctly compare age range 2026-01-13 14:42:35 +01:00
Björn Fromme 00803b2e73 feat: always load fresh api data when starting to edit booking 2026-01-13 13:16:35 +01:00
Björn Fromme a52f65919f chore: update project dependencies 2026-01-13 10:22:25 +01:00
Björn Fromme 3d4d88e986 feat: xlsx export of booking edit draft data for admins 2026-01-13 10:22:03 +01:00
Björn Fromme 5221cea53b feat: merge draft data with api response for selected fields 2026-01-12 18:25:51 +01:00
Björn Fromme 7636ee41af fix: ensure nationality is assigned when editing booking data 2026-01-12 18:23:52 +01:00
Björn Fromme 830fd2464c fix: avoid reinstallation of claude code with each restart of ddev 2026-01-11 13:35:50 +01:00
Björn Fromme d922fd2b9c chore: update project dependencies 2026-01-11 13:26:02 +01:00
Björn Fromme d22078b26e fix: populate booking number with edit drafts 2026-01-11 13:25:13 +01:00
Björn Fromme 195af95995 feat: integrate with easy admin bundle 2026-01-11 13:24:07 +01:00
Björn Fromme d95d0a8930 feat: streamlined booking number property 2026-01-10 12:12:54 +01:00
Björn Fromme 6fca40963d wip: integrate with easy admin bundle 2026-01-10 11:35:16 +01:00
Björn Fromme ace251c1dd feat: cleanup favicons 2026-01-10 11:34:46 +01:00
Björn Fromme db2e92c058 feat: custom hx redirect class 2026-01-10 11:32:14 +01:00
Björn Fromme 28b62f5071 feat: adjust xml dump reader command to new filename format 2026-01-10 11:31:24 +01:00
Björn Fromme 168c128b1d chore: update claude code installation in ddev container 2026-01-09 18:07:45 +01:00
Björn Fromme 90af012e56 chore: update lts upgrade plan with current state of the project 2026-01-09 16:34:46 +01:00