From 118f86b2a05b70f155cd18c9ff5facf122aeb2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 8 Dec 2025 14:57:12 +0100 Subject: [PATCH] feat: increase availability cache ttl and ensure fresh data when entering form --- src/Controller/Booking/Create/Step2Controller.php | 5 +++-- src/Controller/Booking/Edit/IndexController.php | 4 ++++ src/Service/TravelDataService.php | 6 +++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Controller/Booking/Create/Step2Controller.php b/src/Controller/Booking/Create/Step2Controller.php index 7b2f9df..af2deae 100644 --- a/src/Controller/Booking/Create/Step2Controller.php +++ b/src/Controller/Booking/Create/Step2Controller.php @@ -132,8 +132,9 @@ class Step2Controller extends AbstractController throw $this->createNotFoundException(sprintf('Participant at index %d does not exist', $index)); } - // Enrich with fresh availability data - $this->travelDataService->enrichWithFreshAvailabilities($bookingDto->travel); + // Fetch fresh availabilities when entering participant form + // This ensures up-to-date data and populates cache for subsequent HTMX refreshes + $this->travelDataService->enrichWithFreshAvailabilities($bookingDto->travel, cached: false); // Create form with booking_context option $form = $this->createParticipantForm($bookingDto, $index); diff --git a/src/Controller/Booking/Edit/IndexController.php b/src/Controller/Booking/Edit/IndexController.php index ee58a41..0e31caf 100644 --- a/src/Controller/Booking/Edit/IndexController.php +++ b/src/Controller/Booking/Edit/IndexController.php @@ -169,6 +169,10 @@ class IndexController extends AbstractController return $this->redirectToRoute('app_booking_edit', ['id' => $id]); } + // Fetch fresh availabilities when entering participant form + // This ensures up-to-date data and populates cache for subsequent HTMX refreshes + $this->travelDataService->enrichWithFreshAvailabilities($bookingDto->travel, cached: false); + // Create wrapper DTO for email uniqueness validation $wrapper = new ParticipantEditDto( participant: $participant, diff --git a/src/Service/TravelDataService.php b/src/Service/TravelDataService.php index 568a9e9..2996fa3 100644 --- a/src/Service/TravelDataService.php +++ b/src/Service/TravelDataService.php @@ -523,12 +523,12 @@ class TravelDataService * Gets availability data for a travel date. * * @param int $dateId The travel date ID for API call - * @param bool $cached Whether to use cached data (default: false, TTL when cached: 60 seconds) - * @param int $ttl Cache TTL in seconds when $cached is true (default: 60 seconds) + * @param bool $cached Whether to use cached data (default: false, TTL when cached: 300 seconds) + * @param int $ttl Cache TTL in seconds when $cached is true (default: 300 seconds) * * @return ServiceAvailabilityResponse|null The availability data or null if not available or error occurred */ - public function getAvailabilityData(int $dateId, bool $cached = false, int $ttl = 60): ?ServiceAvailabilityResponse + public function getAvailabilityData(int $dateId, bool $cached = false, int $ttl = 300): ?ServiceAvailabilityResponse { if ($cached) { $cacheKey = sprintf('availability_%d', $dateId);