*/ protected array $staffIds = []; public function __construct(private readonly StaffService $staffService) { $this->staffIds = $this->staffService->fetchEmployeeIds(); } public function __invoke(): View { $topCredits = Cache::remember('leaderboard_credits', 60, fn () => User::query() ->whereNotIn('id', $this->staffIds) ->orderByDesc('credits') ->take(9) ->get(['id', 'username', 'look', 'credits'])); $duckets = Cache::remember('leaderboard_duckets', 60, fn () => UserCurrency::query() ->whereNotIn('user_id', $this->staffIds) ->where('type', 0) ->orderByDesc('amount') ->take(9) ->with(['user' => fn ($q) => $q->select('id', 'username', 'look')]) ->get()); $diamonds = Cache::remember('leaderboard_diamonds', 60, fn () => UserCurrency::query() ->whereNotIn('user_id', $this->staffIds) ->where('type', 5) ->orderByDesc('amount') ->take(9) ->with(['user' => fn ($q) => $q->select('id', 'username', 'look')]) ->get()); $mostOnline = Cache::remember('leaderboard_online', 60, fn () => $this->retrieveSettings('online_time')); $respectsReceived = Cache::remember('leaderboard_respects', 60, fn () => $this->retrieveSettings('respects_received')); $achievementScores = Cache::remember('leaderboard_achievements', 60, fn () => $this->retrieveSettings('achievement_score')); return view('leaderboard', [ 'credits' => $topCredits, 'duckets' => $duckets, 'diamonds' => $diamonds, 'mostOnline' => $mostOnline, 'respectsReceived' => $respectsReceived, 'achievementScores' => $achievementScores, ]); } private function retrieveSettings(string $column): Collection { return UserSetting::query() ->select(['user_id', $column]) ->whereNotIn('user_id', $this->staffIds) ->orderByDesc($column) ->take(9) ->with('user:id,username,look') ->get(); } }