getenv("CMD_USERNAME")?getenv("CMD_USERNAME"):'admin' , 'CMD_PASSWORD' => getenv("CMD_PASSWORD")?getenv("CMD_PASSWORD"):'adminpass'); $this ->setName('device:crud') ->setDescription('CRUD Device command') ->setHelp('Create, update or delete a device') ->addOption('type', null, InputOption::VALUE_REQUIRED, 'Device Type. e.g. FTTHBundle:ONU, FTTHBundle:OLT') ->addOption('id', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Device id. e.g. --id=1 --id=2') ->addOption('url', null, InputOption::VALUE_OPTIONAL, 'Device POST | PUT | DELETE url for device creation') ->addOption('method', null, InputOption::VALUE_OPTIONAL, 'Http method. e.g. POST, PUT, DELETE', HttpRequestInterface::METHOD_POST) ->addOption('username', null, InputOption::VALUE_OPTIONAL, 'Username or specify CMD_USERNAME enviroment variable', $params["CMD_USERNAME"]) ->addOption('password', null, InputOption::VALUE_OPTIONAL, 'User password or specify CMD_PASSWORD enviroment variable', $params["CMD_PASSWORD"]) ; } /** * @param InputInterface $input * @param OutputInterface $output */ protected function execute(InputInterface $input, OutputInterface $output) { $type = $input->getOption('type'); $ids = $input->getOption('id'); $url = $input->getOption('url'); $method = $input->getOption('method'); $username = $input->getOption('username'); $password = $input->getOption('password'); $enabled = false; try { // busco por device type e id $container = $this->getContainer(); $em = $container->get('doctrine.orm.entity_manager'); //$em->getFilters()->disable('soft_deleteable'); if($em->getFilters()->isEnabled('soft_deleteable')) { $enabled = true; $em->getFilters()->disable('soft_deleteable'); } $repository = $em->getRepository($type); $entities = array(); if (!empty($ids)) { if (!is_array($ids)) { $ids = array($ids); } foreach ($ids as $id) { if ($entity = $repository->find($id)) { $entities[] = $entity; } else { $output->writeln("Entity {$type} id {$id} not found!"); } } } else { $entities = $repository->findAll(); } if($enabled) { $em->getFilters()->enable('soft_deleteable'); } // llamada POST para guardar el device if (!$url && $container->hasParameter('device_post_url')) { $url = $container->getParameter('device_post_url'); } $deviceListener = $container->get('device.device_listener'); foreach ($entities as $entity) { $response = $deviceListener->send($entity, $url, $method, compact('username', 'password')); if (json_decode($response)) { if ($method == HttpRequestInterface::METHOD_POST) { $output->writeln('Device created!'); } if ($method == HttpRequestInterface::METHOD_PUT) { $output->writeln('Device updated!'); } } elseif ($response == '' && $method == HttpRequestInterface::METHOD_DELETE) { $output->writeln('Device deleted!'); } else { $output->writeln("Error: Device for entity {$type} id {$id} not created | updated | deleted!"); } $output->writeln($response); } } catch (\Exception $ex) { $output->writeln($ex->getMessage()); } } }