src/Controller/DefaultController.php line 144

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the ArtHotel Naquera website.
  5.  *
  6.  * For the full copyright and license information,
  7.  * please read the LICENSE.md file that was distributed with this source code.
  8.  *
  9.  * Copyright (c) 2023.
  10.  */
  11. namespace App\Controller;
  12. use App\Provider\FacilityProvider;
  13. use App\Provider\MainPageProvider;
  14. use App\Provider\NewsPostProvider;
  15. use App\Provider\PlaceProvider;
  16. use App\Provider\PlacesProvider;
  17. use App\Provider\RoomListProvider;
  18. use App\Provider\RoomProvider;
  19. use App\Service\Data\DataProcessor;
  20. use App\Service\Data\DataProvider;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. use Symfony\Component\HttpFoundation\RedirectResponse;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. #[Route('/{_locale}'requirements: ['_locale' => 'en|es|ru'])]
  27. class DefaultController extends AbstractController
  28. {
  29.     public function __construct(
  30.         private readonly DataProvider $dataProvider,
  31.         private readonly DataProcessor $dataProcessor
  32.     ) {
  33.     }
  34.     #[Route('/'name'index')]
  35.     public function index(Request $request): Response
  36.     {
  37.         $result $this->dataProvider->provide($requestMainPageProvider::class);
  38.         return $this->render('templates/index.html.twig'$result);
  39.     }
  40.     #[Route('/rooms'name'rooms')]
  41.     public function rooms(Request $request): Response
  42.     {
  43.         $roomList $this->dataProvider->provide($requestRoomListProvider::class);
  44.         return $this->render('templates/rooms.html.twig'$roomList);
  45.     }
  46.     #[Route('/rooms/{roomId}'name'room')]
  47.     public function room(Request $request): Response
  48.     {
  49.         $room $this->dataProvider->provide($requestRoomProvider::class);
  50.         $roomList $this->dataProvider->provide($requestRoomListProvider::class);
  51.         return $this->render('templates/room.html.twig', [...$room, ...$roomList]);
  52.     }
  53.     #[Route('/contacts'name'contacts')]
  54.     public function contacts(Request $request): Response
  55.     {
  56.         return $this->render('templates/contacts.html.twig', [
  57.         ]);
  58.     }
  59.     #[Route('/about-us'name'about')]
  60.     public function aboutUs(Request $request): Response
  61.     {
  62.         return $this->render('templates/about.html.twig', [
  63.         ]);
  64.     }
  65.     #[Route('/gallery'name'gallery')]
  66.     public function gallery(Request $request): Response
  67.     {
  68.         return $this->render('templates/gallery.html.twig', [
  69.         ]);
  70.     }
  71.     #[Route('/facilities'name'facilities')]
  72.     public function facilities(Request $request): Response
  73.     {
  74.         return $this->render('templates/facilities.html.twig', [
  75.         ]);
  76.     }
  77.     #[Route('/facilities/{facilityId}'name'facility')]
  78.     public function facility(Request $request): Response
  79.     {
  80.         $result $this->dataProvider->provide($requestFacilityProvider::class);
  81.         return $this->render('templates/facility.html.twig'$result);
  82.     }
  83.     #[Route('/places/{slug}'name'place')]
  84.     public function place(Request $request): Response
  85.     {
  86.         $place $this->dataProvider->provide($requestPlaceProvider::class);
  87.         $places $this->dataProvider->provide($requestPlacesProvider::class);
  88.         return $this->render('templates/place.html.twig', [...$place, ...$places]);
  89.     }
  90.     #[Route('/nearby/outdoor'name'nearby_outdoor')]
  91.     public function nearByOutdoor(Request $request): Response
  92.     {
  93.         return $this->render('templates/nearby_outdoor.html.twig', [
  94.         ]);
  95.     }
  96.     #[Route('}/nearby/city'name'nearby_city')]
  97.     public function nearByCity(Request $request): Response
  98.     {
  99.         return $this->render('templates/nearby_city.html.twig', [
  100.         ]);
  101.     }
  102.     #[Route('/nearby/food'name'nearby_food')]
  103.     public function nearByFood(Request $request): Response
  104.     {
  105.         return $this->render('templates/nearby_food.html.twig', [
  106.         ]);
  107.     }
  108.     #[Route('/blog/{slug}'name'blog_post')]
  109.     public function blogPost(Request $request): Response
  110.     {
  111.         $result $this->dataProvider->provide($requestNewsPostProvider::class);
  112.         if (!$result) {
  113. //            $this->redirectToRoute('index');
  114.         }
  115.         return $this->render('templates/blog_post.html.twig'$result);
  116.     }
  117.     #[Route('/booking'name'booking')]
  118.     public function booking(Request $request): Response
  119.     {
  120.         return $this->render('templates/booking.html.twig', [
  121.         ]);
  122.     }
  123. }