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"); } } }