key($businessId, $userId), now()->timestamp, $ttl); } public function isOnline(int $businessId, int $userId): bool { return Cache::has($this->key($businessId, $userId)); } /** * @param array $userIds * @return array */ public function onlineUserIds(int $businessId, array $userIds): array { return array_values(array_filter($userIds, fn ($id) => $this->isOnline($businessId, (int) $id))); } private function key(int $businessId, int $userId): string { return "communication:presence:{$businessId}:{$userId}"; } }