19declare(strict_types=1);
44 return $this->collectionSubsetApplications[$applicantId] ??
null;
58 $this->collectionSubsetApplications[$collectionSubsetApplication->getApplicantId()] = $collectionSubsetApplication;
66 $this->collectionSubsetApplications = $collectionSubsetApplications;
71 $this->setCollectionSubsetApplications([]);
76 return $this->reservedQuestionCollection;
82 $this->reservedQuestionCollection = $reservedQuestionCollection;
87 $this->getReservedQuestionCollection()->addQuestion($reservedQuestion);
92 return current($this->collectionSubsetApplications);
95 public function next(): void
97 next($this->collectionSubsetApplications);
102 return key($this->collectionSubsetApplications);
107 return key($this->collectionSubsetApplications) !==
null;
112 reset($this->collectionSubsetApplications);
117 $questionReservationRequired =
false;
119 foreach ($this as $collectionSubsetApplication) {
120 if (!$collectionSubsetApplication->hasQuestion($question->
getQuestionId())) {
124 if ($collectionSubsetApplication->hasRequiredAmountLeft()) {
125 $questionReservationRequired =
true;
126 $collectionSubsetApplication->decrementRequiredAmount();
130 if ($questionReservationRequired) {
131 $this->addReservedQuestion($question);
139 foreach ($this as $collectionSubsetApplication) {
140 $applicationsNonReservedQstCollection = $collectionSubsetApplication->getRelativeComplementCollection(
141 $this->getReservedQuestionCollection()
144 $availableQuestionCollection->mergeQuestionCollection($applicationsNonReservedQstCollection);
147 $nonReservedQuestionCollection = $availableQuestionCollection->getUniqueQuestionCollection();
149 return $nonReservedQuestionCollection->getQuestionAmount();
getCollectionSubsetApplication($applicantId)
ilTestRandomQuestionSetQuestionCollection $reservedQuestionCollection
getReservedQuestionCollection()
array $collectionSubsetApplications
setReservedQuestionCollection(ilTestRandomQuestionSetQuestionCollection $reservedQuestionCollection)
handleQuestionRequest(ilTestRandomQuestionSetQuestion $question)
addCollectionSubsetApplication(ilTestRandomQuestionCollectionSubsetApplication $collectionSubsetApplication)
resetCollectionSubsetApplicants()
getCollectionSubsetApplications()
addReservedQuestion(ilTestRandomQuestionSetQuestion $reservedQuestion)
getNonReservedQuestionAmount()
setCollectionSubsetApplications(array $collectionSubsetApplications)