Skip to content
Snippets Groups Projects
Commit 48f8f303 authored by Thomas Hackl's avatar Thomas Hackl
Browse files

Resolve "Anmeldeverfahren: Höhere Semester bevorzugen erzeugt Härtefälle"

parent 4812a305
No related branches found
No related tags found
No related merge requests found
...@@ -446,7 +446,7 @@ class PreferentialAdmission extends AdmissionRule ...@@ -446,7 +446,7 @@ class PreferentialAdmission extends AdmissionRule
$userlist->setUsers($members); $userlist->setUsers($members);
$userlist->setFactor($bonus); $userlist->setFactor($bonus);
$userlist->store(); $userlist->store();
$bonus = $bonus * ($this->bonus_difference + 1); $bonus = $bonus + ($this->bonus_difference + 1);
$courseset->addUserList($userlist->getId()); $courseset->addUserList($userlist->getId());
$this->userlists[] = $userlist->getId(); $this->userlists[] = $userlist->getId();
} }
......
...@@ -597,14 +597,32 @@ class CourseSet ...@@ -597,14 +597,32 @@ class CourseSet
public function getUserFactorList() public function getUserFactorList()
{ {
$factored_users = []; $factored_users = [];
foreach ($this->getUserLists() as $ul_id) { foreach ($this->getUserLists() as $ul_id) {
$user_list = new AdmissionUserList($ul_id); $user_list = new AdmissionUserList($ul_id);
$factored_users = array_merge($factored_users,
array_combine(array_keys($user_list->getUsers()), // Iterate through user list.
array_fill(0, count($user_list->getUsers()), $user_list->getFactor()) foreach ($user_list->getUsers() as $user => $assigned) {
) switch ($user_list->getFactor()) {
); // Maximum factor, just set it and stop further processing of user lists.
case PHP_INT_MAX:
$factored_users[$user] = PHP_INT_MAX;
break;
// Backlist, set malus and stop further processing of user lists.
case 0:
$factored_users[$user] = 0;
break;
default:
// Add up current bonus if it isn't already at 0 or PHP_INT_MAX.
if ($factored_users[$user] !== 0 && $factored_users[$user] != PHP_INT_MAX) {
$factored_users[$user] = isset($factored_users[$user]) ?
$factored_users[$user] + $user_list->getFactor() :
$user_list->getFactor();
}
} }
}
}
return $factored_users; return $factored_users;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment