alias = MailAlias::with(['domain', 'recipients.mailUser'])->findOrFail($aliasId); $this->aliasEmail = $this->alias->local . '@' . $this->alias->domain->domain; $this->recipientCount = $this->alias->recipients->count(); $this->isSingle = ($this->alias->type ?? 'single') === 'single'; if ($this->isSingle && $this->recipientCount === 1) { $r = $this->alias->recipients->first(); $this->targetLabel = $r->mailUser ? $r->mailUser->localpart . '@' . $this->alias->domain->domain : (string) $r->email; } else { $group = trim((string) ($this->alias->group_name ?? 'Gruppe')); $this->targetLabel = $group . ' (' . $this->recipientCount . ')'; } $this->extraRecipients = max(0, $this->recipientCount - 3); // initialer Vergleich (falls Autocomplete o.ä.) $this->recomputeConfirmMatch(); } public function updatedConfirm(): void { $this->resetErrorBag('confirm'); $this->recomputeConfirmMatch(); } private function recomputeConfirmMatch(): void { $this->confirmMatches = mb_strtolower(trim($this->confirm)) === mb_strtolower($this->aliasEmail); } #[On('alias:delete')] public function delete(): void { if (! $this->confirmMatches) { $this->dispatch('toast', [ 'type' => 'warn', 'badge' => 'Alias', 'title' => 'Eingabe erforderlich', 'text' => 'Bitte gib die Alias-Adresse korrekt ein, um den Löschvorgang zu bestätigen.', 'duration' => 6000, ]); return; } $email = $this->aliasEmail; $this->alias->delete(); $this->dispatch('alias:deleted'); $this->dispatch('closeModal'); $this->dispatch('toast', type: 'done', badge: 'Alias', title: 'Alias gelöscht', text: 'Der Alias ' . e($email) . ' wurde entfernt.', duration: 6000 ); } public function render() { return view('livewire.ui.mail.modal.alias-delete-modal'); } }