$bookingCreateDto->currentStep) { $this->addFlash('error', 'Bitte erst die vorherigen Schritte abschließen.'); return $this->redirectToCurrentStep($bookingCreateDto); } return null; } /** * Redirects to the current step based on the DTO's currentStep. */ private function redirectToCurrentStep(BookingDto $bookingCreateDto): RedirectResponse { $route = match ($bookingCreateDto->currentStep) { 2 => 'app_booking_create_step_2', 3 => 'app_booking_create_step_3', 4 => 'app_booking_create_step_4', default => 'app_booking_create_step_1', }; return $this->redirectToRoute($route); } /** * Prepares template variables for the booking summary sidebar. * * @return array Array containing all variables needed for the summary partial */ private function getSummaryVariables(BookingDto $bookingCreateDto): array { $summary = $this->summaryDataService->getSummaryData($bookingCreateDto); return [ 'participantsCount' => $summary->participantCount, 'pricingData' => $summary->pricingData, 'assignmentCounts' => $summary->assignmentCounts, 'groupedSelectedRooms' => $summary->groupedSelectedRooms, ]; } /** * Handles API errors by logging and adding a flash message. */ private function handleApiError( string $logMessage, array $context, string $flashMessage, ): void { $this->logger->error($logMessage, $context); $this->addFlash('error', $flashMessage); } }