src/EventSubscriber/ActionPlanTasksSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Symfony\EventListener\EventPriorities;
  4. use App\ActionPlan\ActionPlanTasksPrepare;
  5. use App\Entity\ActionPlan;
  6. use App\Entity\ActionPlanTasks;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpKernel\Event\ViewEvent;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. final class ActionPlanTasksSubscriber implements EventSubscriberInterface
  13. {
  14.     public function __construct(private ActionPlanTasksPrepare $actionPlanTasksPrepare, private EntityManagerInterface $entityManager )
  15.     {
  16.     }
  17.     public static function getSubscribedEvents()
  18.     {
  19.         return [
  20.             KernelEvents::VIEW => [
  21.                 ['preWriteActionPlanTasks'EventPriorities::PRE_WRITE]
  22.             ],
  23.         ];
  24.     }
  25.     public function preWriteActionPlanTasks(ViewEvent $event): void
  26.     {
  27.         $actionPlanTasks $event->getControllerResult();
  28.         $method $event->getRequest()->getMethod();
  29.         if(($actionPlanTasks instanceof ActionPlanTasks) && Request::METHOD_PUT === $method){
  30.             $idActionPlanTasks $actionPlanTasks->getId();
  31.             $sql "select * from action_plan_tasks where id = $idActionPlanTasks";
  32.             $conn $this->entityManager->getConnection();
  33.             $stmt $conn->prepare($sql);
  34.             $oldActionPlanTasks $stmt->executeQuery();
  35.             $oldActionPlanTasks $oldActionPlanTasks->fetchAssociative();
  36.             if(($actionPlanTasks->getUserInCharge()) && ($oldActionPlanTasks['user_in_charge_id'] != $actionPlanTasks->getUserInCharge()->getId())){
  37.                 $this->actionPlanTasksPrepare->sendActionPlanTasksEmail($actionPlanTasks);
  38.             }
  39.             else{
  40.                 return;
  41.             }
  42.         }
  43.         if (!($actionPlanTasks instanceof ActionPlanTasks) || (Request::METHOD_POST !== $method)) {
  44.             return;
  45.         }
  46.         $this->actionPlanTasksPrepare->sendActionPlanTasksEmail($actionPlanTasks);
  47.     }
  48. }