feat: improved error handling in controllers, cleanup

This commit is contained in:
Björn Fromme
2026-03-16 11:59:10 +01:00
parent 4f02529b15
commit ede37d5d0f
11 changed files with 261 additions and 119 deletions
@@ -4,7 +4,6 @@ declare(strict_types=1);
namespace App\Controller\Booking;
use App\Exception\NoRoomsAvailableException;
use App\Service\BookingService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
@@ -20,6 +19,7 @@ use Symfony\Component\Routing\Attribute\Route;
class CreateStep3Controller extends AbstractController
{
use BookingCreateTrait;
use BookingExceptionHandlerTrait;
public function __construct(
private readonly BookingService $bookingCreateService,
@@ -32,16 +32,16 @@ class CreateStep3Controller extends AbstractController
#[Route('/bookings/create/confirm', name: 'app_booking_create_step_3')]
public function confirm(Request $request): Response
{
try {
$bookingCreateDto = $this->bookingCreateService->getOrCreateBookingCreateDto($request);
} catch (NoRoomsAvailableException $e) {
$this->addFlash('error', 'Leider sind für diese Reise aktuell keine Zimmer verfügbar.');
// TODO: Redirect to travel listing or hotel details page
throw $this->createNotFoundException('No rooms available for this travel.');
$result = $this->getOrCreateBookingCreateDto($this->bookingCreateService, $request);
if ($result instanceof Response) {
return $result;
}
$bookingCreateDto = $result;
// Validate step access
$this->validateStepAccess($bookingCreateDto, 3);
if ($redirect = $this->validateStepAccess($bookingCreateDto, 3)) {
return $redirect;
}
return $this->render('booking/create_step_3.html.twig', [
'bookingCreateDto' => $bookingCreateDto,