feat: add differential tracking of domain EPP status codes

This commit is contained in:
Maël Gangloff
2024-12-12 22:56:35 +01:00
parent 13562511be
commit 37740845e8
5 changed files with 222 additions and 1 deletions

View File

@@ -106,6 +106,12 @@ class Domain
#[Groups(['domain:item', 'domain:list'])]
private ?bool $deleted;
/**
* @var Collection<int, DomainStatus>
*/
#[ORM\OneToMany(targetEntity: DomainStatus::class, mappedBy: 'domain', orphanRemoval: true)]
private Collection $domainStatuses;
private const IMPORTANT_EVENTS = [EventAction::Deletion->value, EventAction::Expiration->value];
private const IMPORTANT_STATUS = [
'redemption period',
@@ -128,8 +134,8 @@ class Domain
$this->nameservers = new ArrayCollection();
$this->createdAt = new \DateTimeImmutable('now');
$this->updatedAt = new \DateTimeImmutable('now');
$this->deleted = false;
$this->domainStatuses = new ArrayCollection();
}
public function getLdhName(): ?string
@@ -376,4 +382,34 @@ class Domain
|| (count(array_intersect($this->getStatus(), ['auto renew period', 'client hold', 'server hold'])) > 0
&& $this->getUpdatedAt()->diff(new \DateTimeImmutable())->days >= 1);
}
/**
* @return Collection<int, DomainStatus>
*/
public function getDomainStatuses(): Collection
{
return $this->domainStatuses;
}
public function addDomainStatus(DomainStatus $domainStatus): static
{
if (!$this->domainStatuses->contains($domainStatus)) {
$this->domainStatuses->add($domainStatus);
$domainStatus->setDomain($this);
}
return $this;
}
public function removeDomainStatus(DomainStatus $domainStatus): static
{
if ($this->domainStatuses->removeElement($domainStatus)) {
// set the owning side to null (unless already changed)
if ($domainStatus->getDomain() === $this) {
$domainStatus->setDomain(null);
}
}
return $this;
}
}