select('users.*') ->where(static function (Builder $query): void { $query->where('helpdesk_agent', true)->orWhere('helpdesk_admin', true); }) ->selectSub( Ticket::query() ->selectRaw('count(*)') ->whereColumn('helpdesk_tickets.agent_id', 'users.id') ->whereNull('helpdesk_tickets.completed_at'), 'open_helpdesk_tickets_count' ); if ($categoryId !== null) { $category = Category::query()->find($categoryId); $agentIds = $category?->agents()->pluck('users.id')->all() ?? []; if ($agentIds !== []) { $query->whereIn('id', $agentIds); } } /** @var User|null $agent */ $agent = $query->orderBy('open_helpdesk_tickets_count')->orderBy('id')->first(); return $agent?->id; } }