src/EventSubscriber/AddOfferLeaseSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Symfony\EventListener\EventPriorities;
  4. use App\Entity\OfferLease;
  5. use App\Service\Api\OfferLease\AddOfferLeaseService;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpKernel\Event\ViewEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  11. class AddOfferLeaseSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var AddOfferLeaseService
  15.      */
  16.     private $service;
  17.     /**
  18.      * @var Security
  19.      */
  20.     private $security;
  21.     public function __construct(AddOfferLeaseService $serviceTokenStorageInterface $security)
  22.     {
  23.         $this->service $service;
  24.         $this->security $security;
  25.     }
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             KernelEvents::VIEW => ['validation'EventPriorities::PRE_WRITE],
  30.         ];
  31.     }
  32.     public function validation(ViewEvent $event)
  33.     {
  34.         $method $event->getRequest()->getMethod();
  35.         /** @var OfferLease $offerLease */
  36.         $offerLease $event->getControllerResult();
  37.         if ($method !== Request::METHOD_POST || !$offerLease instanceof OfferLease) {
  38.             return;
  39.         }
  40.         $currentUser $this->security->getToken()->getUser();
  41.         $lastOfferLease $this->service->userOfferLeaseInProperty($offerLease->getTheProperty(), $currentUser);
  42.         if (($message $this->service->preInsertCondition($lastOfferLease)) !== true) {
  43.             $response $this->service->jsonResponseFailedCondition($message);
  44.             $event->setResponse($response);
  45.         }
  46.         $offerLease->setUser($currentUser);
  47.     }
  48. }