src/Events/AgainstProposalCounterOfferPutSubscriber.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Events;
  3. use App\Entity\AgainstProposal;
  4. use App\Entity\CounterOffer;
  5. use App\Services\Api\AgainstProposalServices;
  6. use App\Services\Exception\AgainstProposalCounterOfferException;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpKernel\Event\RequestEvent;
  10. use Symfony\Component\HttpKernel\Event\ViewEvent;
  11. class AgainstProposalCounterOfferPutSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var AgainstProposalServices
  15.      */
  16.     private $services;
  17.     /**
  18.      * @param AgainstProposalServices $services
  19.      */
  20.     public function __construct(AgainstProposalServices $services)
  21.     {
  22.         $this->services $services;
  23.     }
  24.     /**
  25.      * @throws AgainstProposalCounterOfferException
  26.      */
  27.     public function onKernelRequest(RequestEvent $event)
  28.     {
  29.         $request $event->getRequest();
  30.         $resource $request->attributes->get('_api_resource_class');
  31.         if (
  32.             ($resource === CounterOffer::class || $resource === AgainstProposal::class)
  33.             && $request->getMethod() === Request::METHOD_PUT
  34.         ) {
  35.             $data json_decode($request->getContent(), true);
  36.             if ($this->services->isStatusParameterExistAndValid($data) !== true) {
  37.                 throw new AgainstProposalCounterOfferException('parameter status have invalid value');
  38.             }
  39.             $this->services->processValidationAgainstProposal($data);
  40.         }
  41.     }
  42.     public function onKernelView(ViewEvent $event)
  43.     {
  44.         $request $event->getRequest();
  45.         $resource $request->attributes->get('_api_resource_class');
  46.         if (
  47.             ($resource === CounterOffer::class || $resource === AgainstProposal::class)
  48.             && $request->getMethod() === Request::METHOD_PUT
  49.         ) {
  50.             if ($responseData $event->getControllerResult()) {
  51.                 $requestData json_decode($request->getContent(), true);
  52.                 $this->services->postProcessValidation($resource$requestDatajson_decode($responseDatatrue));
  53.             }
  54.         }
  55.     }
  56.     public static function getSubscribedEvents(): array
  57.     {
  58.         return [
  59.             'kernel.request' => 'onKernelRequest',
  60.             'kernel.view' => ['onKernelView'10]
  61.         ];
  62.     }
  63. }