entityWorkflowManager = $entityWorkflowManager; $this->registry = $registry; $this->repository = $repository; $this->metadataExtractor = $metadataExtractor; $this->normalizer = $normalizer; } public function getTransitionByString(EntityWorkflow $entityWorkflow, string $key): ?Transition { $workflow = $this->registry->get($entityWorkflow, $entityWorkflow->getWorkflowName()); $transitions = $workflow->getDefinition()->getTransitions(); foreach ($transitions as $transition) { if ($transition->getName() === $key) { return $transition; } } return null; } public function listWorkflows(Environment $environment, string $relatedEntityClass, int $relatedEntityId, array $options = []): string { $blankEntityWorkflow = new EntityWorkflow(); $blankEntityWorkflow ->setRelatedEntityId($relatedEntityId) ->setRelatedEntityClass($relatedEntityClass); $workflowsList = $this->metadataExtractor->availableWorkflowFor($relatedEntityClass, $relatedEntityId); // get the related entity already created $entityWorkflows = []; foreach ($entityWorkflowsNaked = $this->repository->findBy( ['relatedEntityClass' => $relatedEntityClass, 'relatedEntityId' => $relatedEntityId] ) as $entityWorkflow) { $workflow = $this->registry->get($entityWorkflow, $entityWorkflow->getWorkflowName()); $entityWorkflows[] = [ 'entity_workflow' => $entityWorkflow, 'workflow' => $this->metadataExtractor->buildArrayPresentationForWorkflow($workflow), 'handler' => $this->entityWorkflowManager->getHandler($entityWorkflow), ]; } return $environment->render('@ChillMain/Workflow/_extension_list_workflow_for.html.twig', [ 'entity_workflows_json' => $this->normalizer->normalize($entityWorkflowsNaked, 'json', ['groups' => 'read']), 'entity_workflows' => $entityWorkflows, 'blank_workflow' => $blankEntityWorkflow, 'workflows_availables' => $workflowsList, ]); } }