Auswahl für die Sammelaktion „Als Spam markieren“. */ public array $selected = []; public string $notification = ''; public function updatedStatusFilter(): void { $this->selected = []; $this->resetPage(); } /** * Sammelaktion: ausgewählte Anliegen in die Spam-Quarantäne legen * (Spamschutz B3). Keine Mail, Löschung nach 30 Tagen. */ public function markSelectedAsSpam(): void { $this->authorize('compliance:manage'); $messages = ContactMessage::query() ->whereKey(array_map('intval', $this->selected)) ->where('status', '!=', ContactMessageStatus::Spam->value) ->get(); foreach ($messages as $message) { $message->markAsSpam(auth()->user()); } $this->selected = []; $this->notification = __(':count Anliegen als Spam markiert.', ['count' => $messages->count()]); } public function updatedTopicFilter(): void { $this->selected = []; $this->resetPage(); } public function with(): array { $messages = ContactMessage::query() ->when($this->statusFilter === 'open', fn ($query) => $query->open()) ->when(! in_array($this->statusFilter, ['open', 'all'], true), fn ($query) => $query->where('status', $this->statusFilter)) ->when($this->topicFilter !== 'all', fn ($query) => $query->where('topic', $this->topicFilter)) ->latest() ->paginate(50); return [ 'messages' => $messages, 'topicOptions' => ContactMessageTopic::cases(), 'openCount' => ContactMessage::query()->open()->count(), 'spamCount' => ContactMessage::query()->where('status', ContactMessageStatus::Spam->value)->count(), 'totalCount' => ContactMessage::query()->where('status', '!=', ContactMessageStatus::Spam->value)->count(), ]; } public function statusBadgeClass(ContactMessageStatus $status): string { return match ($status) { ContactMessageStatus::Open => 'warn', ContactMessageStatus::InProgress => 'hub', ContactMessageStatus::Resolved => 'ok', ContactMessageStatus::Rejected => 'err', ContactMessageStatus::Spam => 'muted', }; } }; ?>
{{ __('Anliegen aus dem Kontakt-Widget (Kontaktaufnahme, Fehlermeldung, PM-Meldung, Feedback) laufen hier auf.') }}