src/EventListener/PostValidate/AddPopupLogoPostValidateTransformer.php line 70

Open in your IDE?
  1. <?php
  2. namespace App\EventListener\PostValidate;
  3. use App\DTO\Popup\PopupLogo;
  4. use App\DTO\Popup\PopupOutput;
  5. use App\Entity\Popup;
  6. use App\Service\AfterReadStorage;
  7. use App\Service\Manager\MediaManager;
  8. use App\Service\Manager\PopupManager;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpKernel\Event\ViewEvent;
  12. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  13. class AddPopupLogoPostValidateTransformer implements EventSubscriberInterface
  14. {
  15.     /**
  16.      * @var MediaManager
  17.      */
  18.     private $mediaManager;
  19.     /**
  20.      * @var AfterReadStorage
  21.      */
  22.     private $afterReadStorage;
  23.     /**
  24.      * @var PopupManager
  25.      */
  26.     private $popupManager;
  27.     /**
  28.      * @var NormalizerInterface
  29.      */
  30.     private $normalizer;
  31.     public function __construct(
  32.         MediaManager $mediaManager,
  33.         AfterReadStorage $afterReadStorage,
  34.         PopupManager $popupManager,
  35.         NormalizerInterface $normalizer
  36.     ) {
  37.         $this->mediaManager $mediaManager;
  38.         $this->afterReadStorage $afterReadStorage;
  39.         $this->popupManager $popupManager;
  40.         $this->normalizer $normalizer;
  41.     }
  42.     /**
  43.      * @return array
  44.      */
  45.     public static function getSubscribedEvents()
  46.     {
  47.         return [
  48.             PostValidateListener::POST_VALIDATE_TRANSFORMATION => 'transform',
  49.         ];
  50.     }
  51.     /**
  52.      * @param PopupLogo $payload
  53.      *
  54.      * @return bool
  55.      */
  56.     public function supportTransformation($payload)
  57.     {
  58.         return $payload instanceof PopupLogo;
  59.     }
  60.     /**
  61.      * @param ViewEvent $event
  62.      */
  63.     public function transform(ViewEvent $event)
  64.     {
  65.         /** @var PopupLogo $payload */
  66.         $payload $event->getControllerResult();
  67.         if (!$this->supportTransformation($payload)) {
  68.             return;
  69.         }
  70.         $media $this->mediaManager->getOneByGuid($payload->media);
  71.         if (null === $media) {
  72.             return;
  73.         }
  74.         /** @var Popup $popup */
  75.         $popup $this->afterReadStorage->getObject();
  76.         $popup $this->popupManager->updateLogo($popup$media);
  77.         $event->setResponse(new JsonResponse($this->normalizer->normalize($popupPopupOutput::class)));
  78.     }
  79. }