This commit is contained in:
kindlm
2016-06-27 11:33:25 +02:00
12 changed files with 698 additions and 226 deletions
+138 -2
View File
@@ -62,8 +62,7 @@ switch($action)
die("keine studiensemester_kurzbz erhalten");
$studiensemester_kurzbz = $_REQUEST["studiensemester_kurzbz"];
$prestudent = new prestudent();
$return = $prestudent->getAllStudentenFromStudienplanAndStudsem($studienplan_id, $studiensemester_kurzbz, $studiengang_kz);
$return = getAllStudentenFromStudienplanAndStudsem($studienplan_id, $studiensemester_kurzbz, $studiengang_kz);
$db = new basis_db();
foreach($return as $key=>$value)
@@ -170,10 +169,16 @@ switch($action)
$maxlength[$spalte]=10;
$worksheet->write($zeile,++$spalte,'Reihung',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'RT Punkte 1',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'RT Punkte 2',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'RT Gesamt',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'Interviewbogen',$format_bold);
$maxlength[$spalte]=14;
$worksheet->write($zeile,++$spalte,'EMail',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'Status',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'Auswahl',$format_bold);
@@ -215,6 +220,31 @@ switch($action)
if(mb_strlen((isset($s->seqPlace)?$s->seqPlace:''))>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen((isset($s->seqPlace)?$s->seqPlace:''));
if(isset($s->rt_punkte1) && $s->rt_punkte1)
{
$worksheet->writeNumber($zeile,++$spalte, $s->rt_punkte1, $format_float);
if(mb_strlen($s->rt_punkte1)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->rt_punkte1);
}
else
{
$worksheet->write($zeile,++$spalte, "");
if(mb_strlen("")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("");
}
if(isset($s->rt_punkte2) && $s->rt_punkte2)
{
$worksheet->writeNumber($zeile,++$spalte, $s->rt_punkte2, $format_float);
if(mb_strlen($s->rt_punkte2)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->rt_punkte2);
}
else
{
$worksheet->write($zeile,++$spalte, "");
if(mb_strlen("")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("");
}
if(isset($s->rt_gesamtpunkte) && $s->rt_gesamtpunkte)
{
$worksheet->writeNumber($zeile,++$spalte, $s->rt_gesamtpunkte, $format_float);
@@ -240,6 +270,11 @@ switch($action)
if(mb_strlen("")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("");
}
$worksheet->write($zeile,++$spalte, $s->email_privat);
if(mb_strlen($s->email_privat)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->email_privat);
$worksheet->write($zeile,++$spalte, $s->laststatus);
if(mb_strlen($s->laststatus)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->laststatus);
@@ -279,4 +314,105 @@ function studentsSort($a, $b)
}
/**
* Laedt die Studenten fuer die Reduktion
* @param $studienplan_id
* @param $studiensemester_kurzbz
* @param $studiengang_kz
* @return array mit allen Prestudenten, welche sich für den angegebenen Studienplan im angegebenen Semester beworben haben
*/
function getAllStudentenFromStudienplanAndStudsem($studienplan_id, $studiensemester_kurzbz, $studiengang_kz)
{
$db = new basis_db();
if(!is_numeric($studienplan_id))
{
$errormsg = 'studienplan_id ist ungueltig';
return false;
}
if(!$studiensemester_kurzbz || $studiensemester_kurzbz == "")
{
$errormsg = 'studiensemester_kurzbz ist ungueltig';
return false;
}
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
if($stg_obj->typ=='m')
{
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus,
(Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $db->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber') as anmerkung, rt_punkte1, rt_punkte2,
(SELECT kontakt FROM public.tbl_kontakt where kontakttyp='email' AND zustellung AND person_id=tbl_person.person_id limit 1) as email_privat
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
LEFT JOIN bis.tbl_zgvgruppe_zuordnung USING(zgvmas_code)
LEFT JOIN bis.tbl_zgvgruppe USING(gruppe_kurzbz)
WHERE
tbl_prestudent.studiengang_kz=". $db->db_add_param($studiengang_kz)."
AND EXISTS(
SELECT
1
FROM
public.tbl_prestudentstatus
WHERE
tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id
AND studiensemester_kurzbz=". $db->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber'
AND (
studienplan_id=". $db->db_add_param($studienplan_id)."
OR
(anmerkung like '%' || (SELECT orgform_kurzbz || '_' || sprache FROM lehre.tbl_studienplan WHERE studienplan_id=". $db->db_add_param($studienplan_id).") || '%')
)
);";
}
else
{
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus,
(Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $db->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber') as anmerkung, rt_punkte1, rt_punkte2,
(SELECT kontakt FROM public.tbl_kontakt where kontakttyp='email' AND zustellung AND person_id=tbl_person.person_id limit 1) as email_privat
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
LEFT JOIN bis.tbl_zgvgruppe_zuordnung USING(zgv_code)
LEFT JOIN bis.tbl_zgvgruppe USING(gruppe_kurzbz)
WHERE
tbl_prestudent.studiengang_kz=". $db->db_add_param($studiengang_kz)."
AND EXISTS(
SELECT
1
FROM
public.tbl_prestudentstatus
WHERE
tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id
AND studiensemester_kurzbz=". $db->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber'
AND (
studienplan_id=". $db->db_add_param($studienplan_id)."
OR
(anmerkung like '%' || (SELECT orgform_kurzbz || '_' || sprache FROM lehre.tbl_studienplan WHERE studienplan_id=". $db->db_add_param($studienplan_id).") || '%')
)
);";
}
if($result = $db->db_query($qry))
{
$ret = array();
while($row = $db->db_fetch_object($result))
$ret[] = $row;
return $ret;
}
else
{
$errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
?>
+15 -7
View File
@@ -241,17 +241,17 @@
var neededStudentsCount = aqr.selectedStudienplatz.apz - aqr.getAcceptedCount();
var perZGV = aqr.studenten.length;
var zgvElems = [];
var allApplicants = [];
var allCountedStudents = [];
aqr.studenten.forEach(function(j)
{
if(j.applicant)
allApplicants.push(j);
if((j.applicant || j.selected))
allCountedStudents.push(j);
});
var applicantCount = aqr.selectedStudienplatz.apz;
if(applicantCount > allApplicants.length)
applicantCount = allApplicants.length;
if(applicantCount > allCountedStudents.length)
applicantCount = allCountedStudents.length;
zgvs.forEach(function(i)
@@ -259,12 +259,12 @@
var applicantsFromZGV = [];
aqr.studenten.forEach(function(j)
{
if(j.applicant && j.bezeichnung === i)
if((j.applicant || j.selected) && j.bezeichnung === i)
applicantsFromZGV.push(j);
});
// calculate the aliquote reduction for every ZGV
var percent = applicantsFromZGV.length / allApplicants.length * 100;
var percent = applicantsFromZGV.length / allCountedStudents.length * 100;
var neededFromZGV = (applicantCount / 100 * percent) - aqr.getAcceptedCount(i);
if(neededFromZGV < 0)
@@ -446,6 +446,8 @@
<th ts-criteria="vorname">Vorname</th>
<th ts-criteria="bezeichnung">ZGV Gruppe</th>
<th ts-criteria="seqPlace|parseInt" ts-default="ascending">Reihung</th>
<th ts-criteria="rt_punkte1|parseFloat">RT Punkte 1</th>
<th ts-criteria="rt_punkte2|parseFloat">RT Punkte 2</th>
<th ts-criteria="rt_gesamtpunkte|parseFloat" ts-default="ascending">RT Gesamt</th>
<th ts-criteria="interviewbogen">Interviewbogen</th>
<th ts-criteria="anmerkung">Anmerkung/Prio</th>
@@ -462,6 +464,8 @@
<td ng-if="stud.bezeichnung">{{stud.bezeichnung}}</td>
<td ng-if="!stud.bezeichnung" style="font-weight: bold;">Keine Angabe</td>
<td>{{stud.seqPlace}}</td>
<td>{{stud.rt_punkte1}}</td>
<td>{{stud.rt_punkte2}}</td>
<td>{{stud.rt_gesamtpunkte}}</td>
<td>{{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}</td>
<td>{{stud.anmerkung}}</td>
@@ -514,6 +518,8 @@
<th ts-criteria="vorname">Vorname</th>
<th ts-criteria="bezeichnung">ZGV Gruppe</th>
<th ts-criteria="seqPlace|parseInt" ts-default="ascending">Reihung</th>
<th ts-criteria="rt_punkte1|parseFloat">RT Punkte 1</th>
<th ts-criteria="rt_punkte2|parseFloat">RT Punkte 2</th>
<th ts-criteria="rt_gesamtpunkte|parseFloat">RT Gesamt</th>
<th ts-criteria="interviewbogen">Interviewbogen</th>
<th ts-criteria="anmerkung">Anmerkung/Prio</th>
@@ -529,6 +535,8 @@
<td ng-if="stud.bezeichnung">{{stud.bezeichnung}}</td>
<td ng-if="!stud.bezeichnung" style="font-weight: bold;">Keine Angabe</td>
<td>{{stud.seqPlace}}</td>
<td>{{stud.rt_punkte1}}</td>
<td>{{stud.rt_punkte2}}</td>
<td>{{stud.rt_gesamtpunkte}}</td>
<td>{{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}</td>
<td>{{stud.anmerkung}}</td>