src/EventSubscriber/KernelSubscriber.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Client;
  4. use App\Entity\ClientUrl;
  5. use App\Entity\Property;
  6. use App\Entity\PropertyUrl;
  7. use App\Util\ClientUtil;
  8. use App\Util\OnlineCheckinUtil;
  9. use App\Util\PMSConnectorUtil;
  10. use App\Util\PropertyUtil;
  11. use App\Util\SystemUtil;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpKernel\Event\RequestEvent;
  15. class KernelSubscriber implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * @var SystemUtil
  19.      */
  20.     private $systemUtil;
  21.     /**
  22.      * @var PropertyUtil
  23.      */
  24.     private $propertyUtil;
  25.     /**
  26.      * @var ClientUtil
  27.      */
  28.     private $clientUtil;
  29.     /**
  30.      * KernelSubscriber constructor.
  31.      * @param PropertyUtil $propertyUtil
  32.      */
  33.     public function __construct(SystemUtil $systemUtilPropertyUtil $propertyUtilClientUtil $clientUtil)
  34.     {
  35.         $this->propertyUtil $propertyUtil;
  36.         $this->clientUtil $clientUtil;
  37.         $this->systemUtil $systemUtil;
  38.     }
  39.     public function onKernelRequest(RequestEvent $event)
  40.     {
  41.         $url $event->getRequest()->headers->get('host');
  42.         if (strpos($event->getRequest()->server->get('REQUEST_URI'), '/api/') !== false) {
  43.             return;
  44.         }
  45.         $hotelIdentifier $event->getRequest()->get('identifier'$this->systemUtil->getCurrentPropertyIdentifier());
  46.         $client $this->clientUtil->getClientByUrl($url);
  47.         if (!$client instanceof Client) {
  48.             return;
  49.         }
  50.         $property $client->getProperties()->first();
  51.         if (!empty($hotelIdentifier)) {
  52.             $property $this->propertyUtil->getPropertyByIdentifier($hotelIdentifier);
  53.         }
  54.         if (!$property instanceof Property) {
  55.             return;
  56.         }
  57.         $this->systemUtil->setCurrentPropertyIdentifier($property->getIdentifier());
  58.         $this->systemUtil->initProperty($property);
  59.     }
  60.     public static function getSubscribedEvents()
  61.     {
  62.         return [
  63.             'kernel.request' => 'onKernelRequest',
  64.         ];
  65.     }
  66. }