<?phpnamespace App\EventListener;use App\Entity\Customer;use App\Entity\Network;use App\Manager\SynchroOdooManager;use Psr\Log\LoggerInterface;use Symfony\Component\DependencyInjection\Container;use Symfony\Component\DependencyInjection\ContainerInterface;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use Symfony\Component\Workflow\Event\Event;use Symfony\Component\Workflow\EventListener\AuditTrailListener;class ProjectWorkflowListener extends AuditTrailListener{ /** * @var LoggerInterface * @var Container */ private $logger; /** * @var TokenStorageInterface */ private $tokenStorage; private $odooManager; /** * ProjectWorkflowListener constructor. * * @param LoggerInterface $logger * @param TokenStorageInterface $tokenStorage */ public function __construct(LoggerInterface $logger, TokenStorageInterface $tokenStorage,SynchroOdooManager $odooManager) { parent::__construct($logger); $this->logger = $logger; $this->tokenStorage = $tokenStorage; $this->odooManager = $odooManager; } /** * @param Event $event */ public function onLeave(Event $event) { parent::onLeave($event); } /** * @param Event $event */ public function onTransition(Event $event) { parent::onTransition($event); } /** * @param Event $event */ public function onEnter(Event $event) { parent::onEnter($event); } /** * @param Event $event */ public function onValidate(Event $event) { /** @var Network $network */ $network = $event->getSubject(); $network ->setStatus(Network::STATUS_NETWORK) ->setActive(true) ; /** @var Customer $customer */ foreach ($network->getCustomers() as $customer) { if ($customer->isAllowedToBecomeAClient()) { $customerNumber = $network->getNetworkNumber() . $customer->getSlotNumber(); $customerNumber = (int)$customerNumber; $user = ($this->tokenStorage->getToken()) ? $this->tokenStorage->getToken()->getUser() : null; $customer ->setStatus(Customer::STATUS_CLIENT) ->setCustomNumber($customerNumber) /*->setCreator($user) // $network->getOwner()*/ ; $this->odooManager->setClient($customer,true); } } } /** * @param Event $event */ public function onReject(Event $event) { } /** * @return array */ public static function getSubscribedEvents() { return [ 'workflow.network_validation.enter' => ['onEnter'], 'workflow.network_validation.transition' => ['onTransition'], 'workflow.network_validation.leave' => ['onLeave'], 'workflow.network_validation.enter.validated' => ['onValidate'], 'workflow.network_validation.enter.rejected' => ['onReject'], ]; }}