src/EventListener/FreeOptionListener.php line 24

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Entity\FreeOption\FreeOption;
  5. use App\Files\Uploader\FreeOptionUploader;
  6. use Doctrine\ORM\EntityManager;
  7. use Symfony\Component\EventDispatcher\GenericEvent;
  8. final class FreeOptionListener
  9. {
  10.     private FreeOptionUploader $freeOptionUploader;
  11.     private EntityManager $em;
  12.     public function __construct(FreeOptionUploader $freeOptionUploaderEntityManager $em)
  13.     {
  14.         $this->freeOptionUploader $freeOptionUploader;
  15.         $this->em $em;
  16.     }
  17.     public function preCreate(GenericEvent $event): void
  18.     {
  19.         /** @var FreeOption $freeOption */
  20.         $freeOption $event->getSubject();
  21.         $file $freeOption->getFile();
  22.         if (null === $file) {
  23.             return;
  24.         }
  25.         $pathFile $this->freeOptionUploader->upload($file);
  26.         $freeOption->setFilePath($pathFile);
  27.         $this->em->persist($freeOption);
  28.         $this->em->flush();
  29.     }
  30.     public function preUpdate(GenericEvent $event): void
  31.     {
  32.         /** @var FreeOption $freeOption */
  33.         $freeOption $event->getSubject();
  34.         $file $freeOption->getFile();
  35.         $pathFile $this->freeOptionUploader->upload($file);
  36.         $freeOption->setFilePath($pathFile);
  37.         $this->em->persist($freeOption);
  38.         $this->em->flush();
  39.     }
  40.     public function deleteFile(GenericEvent $event)
  41.     {
  42.         $subject $event->getSubject();
  43.         if ($subject) {
  44.             $oldFilePath $subject->getFilePath();
  45.             if (!empty($oldFilePath)) {
  46.                 @unlink($oldFilePath);
  47.             }
  48.         }
  49.     }
  50. }