src/EventSubscriber/ElTaskSubscriber.php line 75

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\ElTask;
  4. use App\Entity\Upload;
  5. use App\Service\EsUpload;
  6. use App\Entity\ElTaskChapter;
  7. use App\Event\ElTaskPreUpdateEvent;
  8. use App\Event\ElTaskPrePersistEvent;
  9. use App\Entity\ElTaskChapterTranslation;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. class ElTaskSubscriber implements EventSubscriberInterface
  13. {
  14.     private $_em;
  15.     private $esUpload;
  16.     public function __construct(EntityManagerInterface $_emEsUpload $esUpload)
  17.     {
  18.         $this->_em $_em;
  19.         $this->esUpload $esUpload;
  20.     }
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24.             ElTaskPrePersistEvent::NAME => 'onPrePersist',
  25.             ElTaskPreUpdateEvent::NAME => 'onPreUpdate',
  26.         ];
  27.     }
  28.     public function onPrePersist(ElTaskPrePersistEvent $event)
  29.     {
  30.         $object $event->getObject();
  31.         if ($object->getTaskType() === ElTask::TASKTYPE_SESSION) {
  32.             $session $object->getSession();
  33.             if (!$session) {
  34.                 return;
  35.             }
  36.             $object->setBulletPoints($session->getBulletPoints());
  37.             $chapters $session->getSessionChapters();
  38.             foreach ($chapters as $ch) {
  39.                 $nc = new ElTaskChapter();
  40.                 $nc->setStartTime($ch->getStartTime());
  41.                 $nc->setOrd($ch->getOrd());
  42.                 $nc->setContainer($ch->getContainer());
  43.                 $trs $ch->getTranslations();
  44.                 foreach ($trs as $t) {
  45.                     $nt = new ElTaskChapterTranslation();
  46.                     $nt->setName($t->getName());
  47.                     $nt->setLocale($t->getLocale());
  48.                     $nt->setTranslatable($nc);
  49.                     $this->_em->persist($nt);
  50.                 }
  51.                 if ($ch->getImageName()) {
  52.                     $this->esUpload->setContainer($ch->getContainer());
  53.                     $path $this->esUpload->resolvePath($ch->getImageName(), Upload::FILETYPE_SESSION_CHAPTER_POSTER);
  54.                     $this->esUpload->setContainer($ch->getContainer());
  55.                     $newFileName $this->esUpload->copyBucket(
  56.                         $ch->getImageName(),
  57.                         Upload::FILETYPE_ELTASK_CHAPTER_POSTER,
  58.                         $path
  59.                     );
  60.                     $nc->setImageName($newFileName);
  61.                 }
  62.                 $object->addElTaskChapter($nc);
  63.                 $this->_em->persist($nc);
  64.             }
  65.         }
  66.     }
  67.     public function onPreUpdate(ElTaskPreUpdateEvent $event)
  68.     {
  69.         $object $event->getObject();
  70.         $level $object->getTaskLevel();
  71.         switch($level) {
  72.             case ElTask::TASKLEVEL_LESSION:
  73.                 $object->setElLessionTopic(null);
  74.                 break;
  75.             case ElTask::TASKLEVEL_COURSE:
  76.                 $object->setElLessionTopic(null);
  77.                 $object->setElLession(null);
  78.                 break;
  79.         }
  80.     }
  81. }