source/Io/Input/DatasetUploadSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Io\Input;
  3. use App\Domain\Model\Filemanagement\Dataset;
  4. use App\Domain\Model\Study\Experiment;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Oneup\UploaderBundle\Event\PostUploadEvent;
  7. use Oneup\UploaderBundle\UploadEvents;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class DatasetUploadSubscriber implements EventSubscriberInterface
  10. {
  11.     private EntityManagerInterface $em;
  12.     /**
  13.      * @param EntityManagerInterface $em
  14.      */
  15.     public function __construct(EntityManagerInterface $em)
  16.     {
  17.         $this->em $em;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             UploadEvents::postUpload('datasets') => ['onDatasetUpload'],
  23.         ];
  24.     }
  25.     public function onDatasetUpload(PostUploadEvent $event)
  26.     {
  27.         $experiment $this->em->getRepository(Experiment::class)->find($event->getRequest()->get('studyId'));
  28.         if (null !== $event->getFile()) {
  29.             $dataset Dataset::createDataset(
  30.                 $event->getRequest()->get('originalFilename'),
  31.                 $event->getFile()->getBasename(),
  32.                 $event->getFile()->getSize(),
  33.                 $event->getFile()->getMimeType(),
  34.                 $experiment
  35.             );
  36.             $this->em->persist($dataset);
  37.             $this->em->flush();
  38.             $response $event->getResponse();
  39.             $response->addToOffset(['fileId' => $dataset->getId(), 'fileType' => $event->getFile()->getExtension()], ["flySystem"]);
  40.         }
  41.     }
  42. }