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("El parametro --class es requerido");
}
$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("Workflow asignado por defecto: {$workflow}");
} elseif (count($workflows)) {
// No hay workflow por defecto, seteo por defecto el primero
$workflow = current($workflows);
$workflow->setUsedByDefault(true);
$em->flush();
$output->writeln("Se actualiza workflow: {$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("Se ejecutó la actualización de entidates {$class}");
} elseif (is_null($workflow)) {
$output->writeln("No hay workflows para la clase");
}
}
}