fix: update expiresIn estimation

This commit is contained in:
Maël Gangloff 2025-01-02 17:16:20 +01:00
parent 9929a03a3b
commit 0761e7dce8
No known key found for this signature in database
GPG Key ID: 11FDC81C24A7F629

View File

@ -462,35 +462,43 @@ class Domain
{ {
$interval = $start->diff($end); $interval = $start->diff($end);
return $interval->invert ? -$interval->days : $interval->days; return $interval->invert ? -($interval->days + 1) : ($interval->days + 1);
} }
/**
* @throws \Exception
*/
public function getExpiresInDays(): ?int public function getExpiresInDays(): ?int
{ {
$now = new \DateTimeImmutable(); $now = new \DateTimeImmutable();
$lastStatus = $this->getDomainStatuses()->last(); $lastStatus = $this->getDomainStatuses()->last();
$daysToExpiration = null;
if ($lastStatus) { if ($lastStatus) {
if (in_array('pending delete', $lastStatus->getAddStatus())) { if (in_array('pending delete', $lastStatus->getAddStatus())) {
return self::daysBetween($now, $lastStatus->getCreatedAt()->add(new \DateInterval('P5D'))); $daysToExpiration = self::daysBetween($now, $lastStatus->getCreatedAt()->add(new \DateInterval('P5D')));
} }
if (in_array('redemption period', $lastStatus->getAddStatus())) { if (in_array('redemption period', $lastStatus->getAddStatus())) {
return self::daysBetween($now, $lastStatus->getCreatedAt()->add(new \DateInterval('P35D'))); $daysToExpiration = self::daysBetween($now, $lastStatus->getCreatedAt()->add(new \DateInterval('P35D')));
} }
} }
$expiredAt = null; $expiredAt = null;
$deletedAt = null; $deletedAt = null;
foreach ($this->getEvents() as $event) { foreach ($this->getEvents()->getIterator() as $event) {
$expiredAt = !$event->getDeleted() && 'expiration' === $event->getAction() ? $event->getDate() : $expiredAt; $expiredAt = !$event->getDeleted() && 'expiration' === $event->getAction() ? $event->getDate() : $expiredAt;
$deletedAt = !$event->getDeleted() && 'deletion' === $event->getAction() ? $event->getDate() : $deletedAt; $deletedAt = !$event->getDeleted() && 'deletion' === $event->getAction() ? $event->getDate() : $deletedAt;
} }
if ($deletedAt) { if ($deletedAt) {
return self::daysBetween($now, $deletedAt->add(new \DateInterval('P30D'))); $guess = self::daysBetween($now, $deletedAt->add(new \DateInterval('P30D')));
return min($guess, $daysToExpiration ?? $guess);
} }
if ($expiredAt) { if ($expiredAt) {
return self::daysBetween($now, $expiredAt->add(new \DateInterval('P65D'))); $guess = self::daysBetween($now, $expiredAt->add(new \DateInterval('P65D')));
return min($guess, $daysToExpiration ?? $guess);
} }
return null; return null;