src/EventListener/ProjectWorkflowListener.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\Customer;
  4. use App\Entity\Network;
  5. use App\Manager\SynchroOdooManager;
  6. use Psr\Log\LoggerInterface;
  7. use Symfony\Component\DependencyInjection\Container;
  8. use Symfony\Component\DependencyInjection\ContainerInterface;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. use Symfony\Component\Workflow\Event\Event;
  11. use Symfony\Component\Workflow\EventListener\AuditTrailListener;
  12. class ProjectWorkflowListener extends AuditTrailListener
  13. {
  14.     /**
  15.      * @var LoggerInterface
  16.      * @var Container
  17.      */
  18.     private $logger;
  19.     /**
  20.      * @var TokenStorageInterface
  21.      */
  22.     private $tokenStorage;
  23.     private $odooManager;
  24.     /**
  25.      * ProjectWorkflowListener constructor.
  26.      *
  27.      * @param LoggerInterface $logger
  28.      * @param TokenStorageInterface $tokenStorage
  29.      */
  30.     public function __construct(LoggerInterface $loggerTokenStorageInterface $tokenStorage,SynchroOdooManager $odooManager)
  31.     {
  32.         parent::__construct($logger);
  33.         $this->logger $logger;
  34.         $this->tokenStorage $tokenStorage;
  35.         $this->odooManager $odooManager;
  36.     }
  37.     /**
  38.      * @param Event $event
  39.      */
  40.     public function onLeave(Event $event)
  41.     {
  42.         parent::onLeave($event);
  43.     }
  44.     /**
  45.      * @param Event $event
  46.      */
  47.     public function onTransition(Event $event)
  48.     {
  49.         parent::onTransition($event);
  50.     }
  51.     /**
  52.      * @param Event $event
  53.      */
  54.     public function onEnter(Event $event)
  55.     {
  56.         parent::onEnter($event);
  57.     }
  58.     /**
  59.      * @param Event $event
  60.      */
  61.     public function onValidate(Event $event)
  62.     {
  63.        /** @var Network $network */
  64.        $network $event->getSubject();
  65.        $network
  66.            ->setStatus(Network::STATUS_NETWORK)
  67.            ->setActive(true)
  68.        ;
  69.        /** @var Customer $customer */
  70.         foreach ($network->getCustomers() as $customer) {
  71.            if ($customer->isAllowedToBecomeAClient()) {
  72.                $customerNumber $network->getNetworkNumber() . $customer->getSlotNumber();
  73.                $customerNumber = (int)$customerNumber;
  74.                $user = ($this->tokenStorage->getToken()) ? $this->tokenStorage->getToken()->getUser() : null;
  75.                $customer
  76.                    ->setStatus(Customer::STATUS_CLIENT)
  77.                    ->setCustomNumber($customerNumber)
  78.                    /*->setCreator($user) // $network->getOwner()*/
  79.                ;
  80.                $this->odooManager->setClient($customer,true);
  81.            }
  82.        }
  83.     }
  84.     /**
  85.      * @param Event $event
  86.      */
  87.     public function onReject(Event $event)
  88.     {
  89.     }
  90.     /**
  91.      * @return array
  92.      */
  93.     public static function getSubscribedEvents()
  94.     {
  95.         return [
  96.             'workflow.network_validation.enter' => ['onEnter'],
  97.             'workflow.network_validation.transition' => ['onTransition'],
  98.             'workflow.network_validation.leave' => ['onLeave'],
  99.             'workflow.network_validation.enter.validated' => ['onValidate'],
  100.             'workflow.network_validation.enter.rejected' => ['onReject'],
  101.         ];
  102.     }
  103. }