1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?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\Entity\Workflow;
- use WorkflowBundle\Utils\WorkFlowEntityClasses;
- class WorkflowDefaultCommand extends ContainerAwareCommand
- {
- protected function configure()
- {
- $this
- ->setName('workflow:default')
- ->setDescription('Set class default workflow and assign to all class entities')
- ->setHelp('Set class default workflow and assign to all class entities')
- ->addOption(
- 'class',
- null,
- InputOption::VALUE_REQUIRED,
- 'Entity Class name. e.g.: FTTHBundle\\Entity\\ONU'
- )
- ->addOption(
- 'all',
- null,
- InputOption::VALUE_NONE,
- 'Assign default workflow to all class entities passed by parameters'
- )
- ;
- }
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $class = $input->getOption('class');
-
- if (is_null($class)) {
- $output->writeln("<error>El parametro --class es requerido</error>");
- }
-
- $em = $this->getContainer()->get("doctrine.orm.entity_manager");
- $workworkflowRepository = $em->getRepository(Workflow::class);
-
- $workflow = null;
- $workflows = $workworkflowRepository->findAllByClass($class);
- if (count($workflows) == 1) {
- // Hay un workflow habilitado y por defecto
- $workflow = current($workflows);
- $output->writeln("<info>Workflow asignado por defecto: </info> {$workflow}");
- } elseif (count($workflows)) {
- // No hay workflow por defecto, seteo por defecto el primero
- $workflow = current($workflows);
- $workflow->setUsedByDefault(true);
-
- $em->flush();
-
- $output->writeln("<info>Se actualiza workflow: </info> {$workflow}");
- }
-
- if (!is_null($workflow) && $input->getOption('all')) {
- $qb = $em->getRepository($class)->createQueryBuilder($class);
- $result = $qb->update($class, 'o')
- ->set('o.workflow', ':workflow')
- ->setParameter('workflow', $workflow)
- ->getQuery()
- ->getResult()
- ;
-
- $output->writeln("<info>Se ejecutó la actualización de entidates</info> {$class}");
- } elseif (is_null($workflow)) {
- $output->writeln("<error>No hay workflows para la clase</error>");
- }
- }
- }
|