/**
  * Lists all available accounts.
  */
 public function listAccountsCommand()
 {
     /** @var Account[] $accounts */
     $accounts = $this->accountRepository->findAll()->toArray();
     usort($accounts, function ($a, $b) {
         /** @var Account $a */
         /** @var Account $b */
         return $a->getAccountIdentifier() > $b->getAccountIdentifier();
     });
     $tableRows = [];
     $headerRow = ['Identifier', 'Authentication Provider', 'Role(s)'];
     foreach ($accounts as $account) {
         $tableRows[] = [$account->getAccountIdentifier(), $account->getAuthenticationProviderName(), implode(' ,', $account->getRoles())];
     }
     $this->output->outputTable($tableRows, $headerRow);
     $this->outputLine(sprintf('  <b>%s accounts total.</b>', count($accounts)));
 }
 /**
  * Check Bearbeiter and Account tables for content and acts as appropriate
  * @return int
  */
 public function importBearbeiterAction()
 {
     /** @var \Doctrine\DBAL\Connection $sqlConnection */
     $sqlConnection = $this->entityManager->getConnection();
     $checkIfBearbeiterTableExists = $sqlConnection->getSchemaManager()->tablesExist('subugoe_germaniasacra_domain_model_bearbeiter');
     if ($checkIfBearbeiterTableExists) {
         $numberOfBearbeiter = count($this->bearbeiterRepository->findAll());
     }
     $checkIfAccountTableExists = $sqlConnection->getSchemaManager()->tablesExist('typo3_flow_security_account');
     if ($checkIfAccountTableExists) {
         $numberOfAccounts = count($this->accountRepository->findAll());
     }
     $nBearbeiter = 0;
     if ($numberOfBearbeiter == 0 && $numberOfAccounts == 0) {
         $nBearbeiter = $this->importAndJoinBearbeiterWithAccount();
     } elseif ($numberOfBearbeiter == 0 && $numberOfAccounts != 0) {
         $sql = 'SET foreign_key_checks = 0';
         $sqlConnection->executeUpdate($sql);
         $accountTbl = 'typo3_flow_security_account';
         $sql = 'DELETE FROM ' . $accountTbl;
         $sqlConnection->executeUpdate($sql);
         $rolesJointTbl = 'typo3_flow_security_account_roles_join';
         $sql = 'DELETE FROM ' . $rolesJointTbl;
         $sqlConnection->executeUpdate($sql);
         $sql = 'SET foreign_key_checks = 1';
         $sqlConnection->executeUpdate($sql);
         $nBearbeiter = $this->importAndJoinBearbeiterWithAccount();
     } elseif ($numberOfBearbeiter != 0 && $numberOfAccounts == 0) {
         $sql = 'SET foreign_key_checks = 0';
         $sqlConnection->executeUpdate($sql);
         $bearbeiterTbl = 'subugoe_germaniasacra_domain_model_bearbeiter';
         $sql = 'DELETE FROM ' . $bearbeiterTbl;
         $sqlConnection->executeUpdate($sql);
         $sql = 'SET foreign_key_checks = 1';
         $sqlConnection->executeUpdate($sql);
         $nBearbeiter = $this->importAndJoinBearbeiterWithAccount();
     }
     return $nBearbeiter;
 }