[ 'users' => User::count(), 'sessions' => DB::table('sessions')->count(), 'queued' => DB::table('jobs')->count(), 'db_size' => $this->dbSize(), ], 'recent_activity' => Activity::with('causer') ->orderByDesc('created_at') ->limit(10) ->get(), ]); } public function auditLog() { return Inertia::render('Admin/AuditLog', [ 'logs' => Activity::with('causer', 'subject') ->orderByDesc('created_at') ->paginate(50), ]); } public function systemHealth() { return Inertia::render('Admin/SystemHealth', [ 'health' => [ 'database' => $this->checkDatabase(), 'cache' => $this->checkCache(), 'queue' => $this->checkQueue(), 'storage' => $this->checkStorage(), ], ]); } private function checkDatabase(): array { try { DB::connection()->getPdo(); return ['status' => 'ok', 'driver' => config('database.default')]; } catch (\Throwable $e) { return ['status' => 'error', 'message' => $e->getMessage()]; } } private function checkCache(): array { try { cache()->set('health_check', true, 1); return ['status' => 'ok', 'driver' => config('cache.default')]; } catch (\Throwable $e) { return ['status' => 'error', 'message' => $e->getMessage()]; } } private function checkQueue(): array { return [ 'status' => 'ok', 'pending' => DB::table('jobs')->count(), 'failed' => DB::table('failed_jobs')->count(), ]; } private function checkStorage(): array { $path = storage_path(); return [ 'status' => 'ok', 'writable' => is_writable($path), 'free_bytes' => disk_free_space($path), ]; } private function dbSize(): string { try { if (config('database.default') === 'sqlite') { $size = filesize(database_path('database.sqlite')); return $this->formatBytes($size); } return '—'; } catch (\Throwable) { return '—'; } } private function formatBytes(int $bytes): string { $units = ['B', 'KB', 'MB', 'GB']; $i = floor(log($bytes, 1024)); return round($bytes / (1024 ** $i), 2) . ' ' . $units[$i]; } }