subject($this->subjectLine()) ->view('mail.notifications.hosting-expiring', [ 'account' => $this->account, 'daysRemaining' => $this->daysRemaining, 'renewUrl' => route('hosting.accounts.show', $this->account), ]); } public function toArray($notifiable): array { $label = $this->account->primary_domain ?: $this->account->username; return [ 'title' => $this->headline(), 'message' => "Hosting for {$label} expires in {$this->daysRemaining} days.", 'icon' => 'hosting', 'url' => route('hosting.accounts.show', $this->account), ]; } private function subjectLine(): string { $label = $this->account->primary_domain ?: $this->account->username; return match (true) { $this->daysRemaining <= 1 => "Hosting expires tomorrow: {$label}", $this->daysRemaining <= 7 => "Urgent: hosting for {$label} expires in {$this->daysRemaining} days", default => "Hosting renewal reminder: {$label}", }; } private function headline(): string { return match (true) { $this->daysRemaining <= 1 => 'Hosting expires soon', $this->daysRemaining <= 7 => 'Urgent hosting renewal', default => 'Hosting renewal reminder', }; } }