src/EventListener/OrderCreatingListener.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\Assignment;
  4. use App\Entity\Task;
  5. use App\Event\OrderCreatingEvent;
  6. use App\Manager\TotalDeadlineAssignment;
  7. use App\Order\OrderChangeTypeListener;
  8. use App\Repository\TaskRepository;
  9. use Carbon\CarbonImmutable;
  10. class OrderCreatingListener
  11. {
  12.     /**
  13.      * @var TaskRepository
  14.      */
  15.     private $taskRepository;
  16.     /**
  17.      * @var TotalDeadlineAssignment
  18.      */
  19.     private $deadlineAssignment;
  20.     private $orderChangeTypeListener;
  21.     public function __construct(TaskRepository $taskRepositoryTotalDeadlineAssignment $deadlineAssignmentOrderChangeTypeListener $orderChangeTypeListener)
  22.     {
  23.         $this->taskRepository $taskRepository;
  24.         $this->deadlineAssignment $deadlineAssignment;
  25.         $this->orderChangeTypeListener $orderChangeTypeListener;
  26.     }
  27.     public function __invoke(OrderCreatingEvent $event)
  28.     {
  29.         $order $event->getOrder();
  30.         $task $this->taskRepository->findOneBy(['code' => Task::INIT_APPROVAL_CODE]);
  31.         try {
  32.             $assignment = new Assignment($order$task);
  33.             $assignment->setActive(true);
  34.             $deadline $this->deadlineAssignment->total(CarbonImmutable::now(), 2);
  35.             $assignment->assignTo($order->getCreator());
  36.             $assignment->setDeadline($deadline);
  37.             $order->addAssignment($assignment);
  38.             $order $this->orderChangeTypeListener->add($order);
  39.             
  40.         } catch (\Exception $e) {
  41.         }
  42.     }
  43. }