open() ->whereNull('user_id') ->orderBy('id') ->get() ->map(fn (ContactMessage $message): array => [ 'message' => $message, // Ohne Zeitstempel: Der Altbestand hatte kein Formular-Feld dafür. 'reason' => $filter->reasonFor((string) $message->name, (string) $message->message, null), ]) ->filter(fn (array $hit): bool => $hit['reason'] !== null); $this->table( ['Vorgang', 'Eingang', 'Grund', 'Nachricht'], $hits->map(fn (array $hit): array => [ $hit['message']->reference(), $hit['message']->created_at?->format('d.m.Y'), $hit['reason'], Str::limit(Str::squish((string) $hit['message']->message), 60), ])->all(), ); if ($this->option('dry-run')) { $this->info("Probelauf: {$hits->count()} Anliegen würden als Spam markiert."); return self::SUCCESS; } foreach ($hits as $hit) { $hit['message']->markAsSpam(null, $hit['reason']); } $this->info("{$hits->count()} Anliegen als Spam markiert. Offen bleiben: ".ContactMessage::query()->open()->count().'.'); return self::SUCCESS; } }