src/EventListener/DocumentUploadListener.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Enum\DocumentTypeOrganizationEnum;
  4. use App\Enum\DocumentTypeUserEnum;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Evo\Infrastructure\MappingORM\Document;
  7. use Symfony\Contracts\Translation\TranslatorInterface;
  8. use Vich\UploaderBundle\Event\Event;
  9. class DocumentUploadListener
  10. {
  11.     private array $documentList = [];
  12.     private EntityManagerInterface $em;
  13.     private TranslatorInterface $translator;
  14.     public function __construct(EntityManagerInterface $emTranslatorInterface $translator)
  15.     {
  16.         $this->em $em;
  17.         $this->translator $translator;
  18.     }
  19.     public function onVichUploaderPreUpload(Event $event)
  20.     {
  21.         $object $event->getObject();
  22.         if ($object instanceof Document) {
  23.             if (null !== $object->getId()) {
  24.                 $this->documentList[$object->getId()] = $object->getPath();
  25.             }
  26.             if (DocumentTypeUserEnum::isValueExist($object->getType())) {
  27.                 $trans DocumentTypeUserEnum::getReadableValue($object->getType());
  28.             } else {
  29.                 $trans DocumentTypeOrganizationEnum::getReadableValue($object->getType());
  30.             }
  31.             $object->setName($this->translator->trans($trans));
  32.         }
  33.     }
  34.     public function onVichUploaderPostUpload(Event $event)
  35.     {
  36.         $object $event->getObject();
  37.         if ($object instanceof Document && null !== $object->getId() && array_key_exists($object->getId(), $this->documentList)) {
  38.             $document = clone $object;
  39.             $document->resetId()
  40.                 ->setBypassSubscriber(true)
  41.                 ->setPath($this->documentList[$object->getId()]);
  42.             $this->em->persist($document);
  43.             $this->em->flush();
  44.         }
  45.     }
  46. }