setName('talk:phone-number:find') ->setDescription('Find a phone number or the phone number of an user') ->addOption( 'phone', null, InputOption::VALUE_REQUIRED, 'Phone number to search for', ) ->addOption( 'user', null, InputOption::VALUE_REQUIRED, 'User to get number(s) for', ) ; } protected function execute(InputInterface $input, OutputInterface $output): int { $phoneNumber = (string)$input->getOption('phone'); $userId = (string)$input->getOption('user'); if ($phoneNumber !== '') { try { $entry = $this->mapper->findByPhoneNumber($phoneNumber); } catch (DoesNotExistException) { $output->writeln('Phone number ' . $phoneNumber . ' could not be found'); return self::FAILURE; } $output->writeln('Phone number ' . $entry->getPhoneNumber() . ' is assigned to ' . $entry->getActorId()); return self::SUCCESS; } if ($userId === '') { $output->writeln('Neither phone number nor user provided'); return self::FAILURE; } $entries = $this->mapper->findByUser($userId); if (empty($entries)) { $output->writeln('No phone number found for ' . $userId . ''); return self::FAILURE; } if (count($entries) === 1) { $entry = array_pop($entries); $output->writeln($entry->getActorId() . ' has phone number ' . $entry->getPhoneNumber() . ' assigned'); } else { $output->writeln($userId . ' has the following phone numbers assigned:'); foreach ($entries as $entry) { $output->writeln(' - ' . $entry->getPhoneNumber()); } } return self::SUCCESS; } }