choiceList) { $choices = $this->generateRoomChoicesForParticipant(); $this->choiceList = $this->factory->createListFromChoices($choices, $value); } return $this->choiceList; } public function loadChoicesForValues(array $values, ?callable $value = null): array { if (empty($values)) { return []; } return $this->loadChoiceList($value)->getChoicesForValues($values); } public function loadValuesForChoices(array $choices, ?callable $value = null): array { if (empty($choices)) { return []; } return $this->loadChoiceList($value)->getValuesForChoices($choices); } /** * Generates room choices for the specific participant. * * Always includes all selected rooms from Step 1 regardless of current capacity. * Capacity conflicts are handled by the field handler during assignment. * * @return array */ private function generateRoomChoicesForParticipant(): array { $participantRoomChoices = []; foreach ($this->selectedRooms as $roomSelection) { // Always include all selected rooms - capacity conflicts handled in field handler $participantRoomChoices[$roomSelection->roomLabel] = $roomSelection->roomId; } return $participantRoomChoices; } }