diff --git a/src/Command/UpdateRdapServersCommand.php b/src/Command/UpdateRdapServersCommand.php new file mode 100644 index 0000000..e043a7e --- /dev/null +++ b/src/Command/UpdateRdapServersCommand.php @@ -0,0 +1,40 @@ +bus->dispatch(new UpdateRdapServers()); + + $io->success('Message sent!'); + + return Command::SUCCESS; + } +} diff --git a/src/Service/RDAPService.php b/src/Service/RDAPService.php index db92ca8..2f10e3c 100644 --- a/src/Service/RDAPService.php +++ b/src/Service/RDAPService.php @@ -369,13 +369,19 @@ readonly class RDAPService foreach ($tldList as $tld) { if ($tld === "") continue; + $tldEntity = $this->tldRepository->findOneBy(['tld' => $tld]); - if ($tldEntity === null) $tldEntity = new Tld(); + + if ($tldEntity === null) { + $tldEntity = new Tld(); + $tldEntity->setTld($tld); + } $type = $this->getTldType($tld); + if ($type !== null) { $tldEntity->setType($type); - } elseif ($tldEntity->isContractTerminated() === null) { + } elseif ($tldEntity->isContractTerminated() === null) { // ICANN managed, must be a ccTLD $tldEntity->setType(TldType::ccTLD); } else { $tldEntity->setType(TldType::gTLD); @@ -415,18 +421,25 @@ readonly class RDAPService foreach ($gTldList as $gTld) { if ($gTld['gTLD'] === "") continue; /** @var Tld $gtTldEntity */ - $gtTldEntity = $this->em->getReference(Tld::class, $gTld['gTLD']); + $gtTldEntity = $this->tldRepository->findOneBy([ 'tld' => $gTld['gTLD'] ]); + + if (null == $gtTldEntity) { + $gtTldEntity = new Tld(); + $gtTldEntity->setTld($gTld['gTLD']); + } $gtTldEntity ->setContractTerminated($gTld['contractTerminated']) ->setRegistryOperator($gTld['registryOperator']) - ->setSpecification13($gTld['specification13']); + ->setSpecification13($gTld['specification13']) + ->setType(TldType::gTLD); if ($gTld['removalDate'] !== null) $gtTldEntity->setRemovalDate(new DateTimeImmutable($gTld['removalDate'])); if ($gTld['delegationDate'] !== null) $gtTldEntity->setDelegationDate(new DateTimeImmutable($gTld['delegationDate'])); if ($gTld['dateOfContractSignature'] !== null) $gtTldEntity->setDateOfContractSignature(new DateTimeImmutable($gTld['dateOfContractSignature'])); $this->em->persist($gtTldEntity); } + $this->em->flush(); } } \ No newline at end of file