diff --git a/src/Controller/Booking/Create/Step2Controller.php b/src/Controller/Booking/Create/Step2Controller.php index af2deae..e155796 100644 --- a/src/Controller/Booking/Create/Step2Controller.php +++ b/src/Controller/Booking/Create/Step2Controller.php @@ -97,10 +97,8 @@ class Step2Controller extends AbstractController return $this->redirectToRoute('app_booking_create_step_3'); } - // Generate cards data with validation state if form was submitted and failed - $cardsData = (true === $form->isSubmitted() && false === $form->isValid()) - ? $this->participantCardService->getAllCardsDataWithValidation($bookingCreateDto) - : $this->generateAllCardsData($bookingCreateDto); + // Always generate card data with validation state to show completeness + $cardsData = $this->participantCardService->getAllCardsDataWithValidation($bookingCreateDto); // Get complete summary data (pricing, rooms, CMS data) $summaryData = $this->summaryDataService->getSummaryData($bookingCreateDto); diff --git a/src/Controller/Booking/Edit/IndexController.php b/src/Controller/Booking/Edit/IndexController.php index 0e31caf..d93bc8a 100644 --- a/src/Controller/Booking/Edit/IndexController.php +++ b/src/Controller/Booking/Edit/IndexController.php @@ -99,10 +99,8 @@ class IndexController extends AbstractController return $this->handleFormSubmission($request, $bookingDto, $id, $email); } - // Generate card data for all participants with validation state if form was submitted and failed - $cardsData = (true === $form->isSubmitted() && false === $form->isValid()) - ? $this->participantCardService->getAllCardsDataWithValidation($bookingDto) - : $this->participantCardService->getAllCardsData($bookingDto); + // Always generate card data with validation state to show completeness + $cardsData = $this->participantCardService->getAllCardsDataWithValidation($bookingDto); // Get complete summary data (pricing, rooms, CMS data) $summaryData = $this->summaryDataService->getSummaryData($bookingDto); @@ -115,6 +113,7 @@ class IndexController extends AbstractController 'cardsData' => $cardsData, 'summaryData' => $summaryData, 'isDirty' => $this->fingerprintService->isDirty($bookingDto), + 'isSubmitted' => $form->isSubmitted(), 'hasValidationErrors' => $form->isSubmitted() && false === $form->isValid(), ]; diff --git a/templates/booking/_participant_card.html.twig b/templates/booking/_participant_card.html.twig index 010b5ce..09f3d4e 100644 --- a/templates/booking/_participant_card.html.twig +++ b/templates/booking/_participant_card.html.twig @@ -1,23 +1,38 @@ {# Compact participant card with name, room, price, and edit button #} {% set isCanceled = cardData.isCanceled is defined ? cardData.isCanceled : false %} {% set isValid = cardData.isValid is defined ? cardData.isValid : true %} -{% set errorMessages = cardData.errorMessages|default([]) %} +{% set isSubmitted = isSubmitted|default(false) %} {% set mode = mode|default('create') %} +{# Determine display states #} +{% set showAsError = not isValid and isSubmitted %} +{% set showAsIncomplete = not isValid and not isSubmitted %} + +{# Build edit URL for linking #} +{% if mode == 'edit' %} + {% set editUrl = path('app_booking_edit_participant', {id: bookingId, index: index}) %} +{% else %} + {% set editUrl = path('app_booking_create_step_2_participant', {index: index}) %} +{% endif %} +