123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace WorkflowBundle\Command;
- use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Input\InputOption;
- use Symfony\Component\Console\Output\OutputInterface;
- use WorkflowBundle\Utils\WorkFlowEntityClasses;
- class WorkflowApplyCommand extends ContainerAwareCommand
- {
- protected function configure()
- {
- $this
- ->setName('workflow:apply')
- ->setDescription('Ejecuta una transiciÃn (de un workflow) en una entidad')
- ->setHelp('Ejecuta un Action (WorflowBundle\Entity\Action) de workflow para una Entidad (WorkflowBundle\Utils\WorkFlowEntityClasses)')
- ->addOption(
- 'transition',
- null,
- InputOption::VALUE_REQUIRED,
- 'Transition name'
- )
- ->addOption(
- 'workflow',
- null,
- InputOption::VALUE_REQUIRED,
- 'Workflow name'
- )
- ->addOption(
- 'entity',
- null,
- InputOption::VALUE_REQUIRED,
- 'Entity Class. Possible values: ' . implode(', ', WorkFlowEntityClasses::getConstants())
- )
- ->addOption(
- 'id',
- null,
- InputOption::VALUE_REQUIRED,
- 'Entity id'
- )
- ;
- }
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $entity_manager = $this->getContainer()->get("doctrine.orm.entity_manager");
- $transition = $input->getOption('transition');
- $workflow = $input->getOption('workflow');
- $entityClass = $input->getOption('entity');
- $entityId = $input->getOption('id');
- $entity = $entity_manager->getRepository($entityClass)->find($entityId);
- if(!$entity){
- throw \Exception("Entity $entityClass with id $entityId not found");
- }
-
- $wreg = $this->getContainer()->get("workflow.registry");
- $wf = $wreg->get($entity, $workflow);
- $newState = $wf->apply($entity, $transition);
- $entity_manager->persist($entity);
- $entity_manager->flush($entity);
- }
- }
|