): array $countTotal fn(ids) => [entityId => totalCount] * @param callable(list): array $countActive fn(ids) => [entityId => activeCount] * @return array */ public function computeCounts(array $rows, callable $countTotal, callable $countActive): array { $ids = []; foreach ($rows as $row) { $id = (int) ($row['id'] ?? 0); if ($id > 0) { $ids[] = $id; } } $ids = array_values(array_unique($ids)); if (!$ids) { return []; } $totalCounts = $countTotal($ids); $activeCounts = $countActive($ids); $result = []; foreach ($ids as $id) { $total = (int) ($totalCounts[$id] ?? 0); $active = (int) ($activeCounts[$id] ?? 0); $result[$id] = [ 'active_users' => $active, 'inactive_users' => max(0, $total - $active), ]; } return $result; } }