chill-bundles/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowManager.php
2022-01-24 13:17:46 +00:00

49 lines
1.2 KiB
PHP

<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\MainBundle\Workflow;
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
use Chill\MainBundle\Workflow\Exception\HandlerNotFoundException;
use Symfony\Component\Workflow\Registry;
class EntityWorkflowManager
{
/**
* @var iterable|EntityWorkflowHandlerInterface[]
*/
private iterable $handlers;
private Registry $registry;
public function __construct(iterable $handlers, Registry $registry)
{
$this->handlers = $handlers;
$this->registry = $registry;
}
public function getHandler(EntityWorkflow $entityWorkflow, array $options = []): EntityWorkflowHandlerInterface
{
foreach ($this->handlers as $handler) {
if ($handler->supports($entityWorkflow, $options)) {
return $handler;
}
}
throw new HandlerNotFoundException();
}
public function getSupportedWorkflows(EntityWorkflow $entityWorkflow): array
{
return $this->registry->all($entityWorkflow);
}
}