*/ protected function casts(): array { return [ 'state' => EmailDomainState::class, 'checked_at' => 'datetime', 'expires_at' => 'datetime', 'first_broken_at' => 'datetime', ]; } public function isFresh(): bool { return $this->expires_at !== null && $this->expires_at->isFuture(); } /** * Nachweislich unzustellbare Domains — ohne „Prüfung offen". * * @param Builder $query */ public function scopeBroken(Builder $query): void { $query->whereIn('state', [ EmailDomainState::NullMx->value, EmailDomainState::NoMailPath->value, EmailDomainState::DomainMissing->value, EmailDomainState::BrokenMx->value, ]); } }