dispatch('openModal', component: 'ui.domain.modal.domain-create-modal'); } public function openEdit(int $id): void { if ($this->isSystem($id)) return; $this->dispatch('openModal', component: 'ui.domain.modal.domain-edit-modal', arguments: ['domainId' => $id]); } public function openLimits(int $id): void { if ($this->isSystem($id)) return; $this->dispatch('openModal', component: 'ui.domain.modal.domain-limits-modal', arguments: ['domainId' => $id]); } public function openDns(int $id): void { $this->dispatch('openModal', component: 'ui.domain.modal.domain-dns-modal', arguments: ['domainId' => $id]); } public function openDelete(int $id): void { if ($this->isSystem($id)) return; $this->dispatch('openModal', component: 'ui.domain.modal.domain-delete-modal', arguments: ['domainId' => $id]); } private function isSystem(int $id): bool { $domain = Domain::findOrFail($id); if ($domain->is_system) { $this->dispatch('toast', type: 'forbidden', badge: 'System-Domain', title: 'Domain', text: 'Diese Domain ist als System-Domain markiert und kann nicht bearbeitet werden.', duration: 0); return true; } return false; } public function render() { $query = Domain::where('is_system', false) ->where('is_server', false) ->withCount(['mailUsers as mailboxes_count', 'mailAliases as aliases_count']) ->with(['dkimKeys' => fn($q) => $q->where('is_active', true)->latest()]) ->orderBy('domain'); if ($this->search !== '') { $query->where('domain', 'like', '%' . $this->search . '%'); } $domains = $query->get()->map(function (Domain $d) { $tags = is_array($d->tags) ? $d->tags : []; $d->setAttribute('visible_tags', array_slice($tags, 0, 2)); $d->setAttribute('extra_tags', max(count($tags) - 2, 0)); return $d; }); $systemDomain = Domain::where('is_system', true) ->withCount(['mailUsers as mailboxes_count', 'mailAliases as aliases_count']) ->with(['dkimKeys' => fn($q) => $q->where('is_active', true)->latest()]) ->first(); $total = Domain::where('is_system', false)->where('is_server', false)->count(); return view('livewire.ui.nx.domain.domain-list', compact('domains', 'systemDomain', 'total')); } }