From 23f4ed5688342b60af62f1ab9fad67dd3fb254c8 Mon Sep 17 00:00:00 2001 From: oesi Date: Tue, 7 Feb 2017 09:30:13 +0100 Subject: [PATCH] =?UTF-8?q?Check=20hinzugef=C3=BCgt=20f=C3=BCr=20Personen?= =?UTF-8?q?=20mit=20fehlerhafter=20Studienplanzuordnung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/checkStudenten.php | 325 +++++++++++++++++++++----------------- 1 file changed, 178 insertions(+), 147 deletions(-) diff --git a/system/checkStudenten.php b/system/checkStudenten.php index 14791d7d4..1278dc2f6 100644 --- a/system/checkStudenten.php +++ b/system/checkStudenten.php @@ -25,17 +25,17 @@ require_once('../include/basis_db.class.php'); require_once('../include/studiensemester.class.php'); require_once('../include/organisationsform.class.php'); require_once('../include/prestudent.class.php'); -require_once('../include/student.class.php'); +require_once('../include/student.class.php'); require_once('../include/studiengang.class.php'); require_once('../include/functions.inc.php'); require_once('../include/datum.class.php'); $db = new basis_db(); $datum = new datum(); -$studiensemester = new studiensemester(); +$studiensemester = new studiensemester(); $aktSem = $studiensemester->getaktorNext(); -$nextSem = $studiensemester->getNextFrom($aktSem); -$ausgabe = array(); +$nextSem = $studiensemester->getNextFrom($aktSem); +$ausgabe = array(); $text =""; ?> @@ -44,22 +44,22 @@ $text =""; Check Studenten - +

Studenten Checkskript für BIS-Meldung

-
"; @@ -67,21 +67,21 @@ if($db->db_query($qry)) { while($row = $db->db_fetch_object()) { - $ausgabe[$row->studiengang][1][]= $row->student_uid; - $text.="Studenten-uid: ".$row->student_uid."
"; + $ausgabe[$row->studiengang][1][]= $row->student_uid; + $text.="Studenten-uid: ".$row->student_uid."
"; } } else - $text.="Fehler bei der Abfrage aufgetreten.
"; + $text.="Fehler bei der Abfrage aufgetreten.
"; -/* - * Abbrecher dürfen nicht mehr aktiv sein +/* + * Abbrecher dürfen nicht mehr aktiv sein */ - + $text.= "
Suche alle Abbrecher die noch aktiv sind ...

"; $qry ="select pre_status.status_kurzbz, benutzer.aktiv, benutzer.uid, student.studiengang_kz studiengang -from public.tbl_prestudentstatus pre_status +from public.tbl_prestudentstatus pre_status join public.tbl_prestudent pre using(prestudent_id) join public.tbl_student student using(prestudent_id) join public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) @@ -91,12 +91,12 @@ if($db->db_query($qry)) { while($row = $db->db_fetch_object()) { - $ausgabe[$row->studiengang][2][]= $row->uid; - $text .="Studenten-uid: ".$row->uid."
"; + $ausgabe[$row->studiengang][2][]= $row->uid; + $text .="Studenten-uid: ".$row->uid."
"; } } else - $text.= "Fehler bei der Abfrage aufgetreten.
"; + $text.= "Fehler bei der Abfrage aufgetreten.
"; @@ -104,10 +104,10 @@ else * Organisationsform eines Studienganges, sollte mit den Organisationsformen der Studenten übereinstimmen */ -$text.= "
Suche Studenten mit ungleichen Organisationsformeinträgen (Studiengang <--> Prestudentstatus) ...

"; +$text.= "
Suche Studenten mit ungleichen Organisationsformeinträgen (Studiengang <--> Prestudentstatus) ...

"; -$orgArray = array(); -$orgForm = new organisationsform(); +$orgArray = array(); +$orgForm = new organisationsform(); $qry ="select studiengang.orgform_kurzbz as studorgkz, student.student_uid, prestudentstatus.orgform_kurzbz as studentorgkz, student.studiengang_kz studiengang from public.tbl_studiengang studiengang @@ -117,62 +117,62 @@ join public.tbl_prestudentstatus prestudentstatus using(prestudent_id) join public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid) where benutzer.aktiv = 'true' and prestudentstatus.status_kurzbz ='Student' and studiengang.studiengang_kz < 10000 -and prestudentstatus.studiensemester_kurzbz = '$aktSem' -order by student_uid; "; +and prestudentstatus.studiensemester_kurzbz = '$aktSem' +order by student_uid; "; if($db->db_query($qry)) { while($row = $db->db_fetch_object()) { - $studOrgform = $row->studorgkz; - $student_uid = $row->student_uid; - $studentOrgform = $row->studentorgkz; + $studOrgform = $row->studorgkz; + $student_uid = $row->student_uid; + $studentOrgform = $row->studentorgkz; - $orgArray = $orgForm->checkOrgForm($studOrgform); + $orgArray = $orgForm->checkOrgForm($studOrgform); if(is_array($orgArray)) { if(!in_array($studentOrgform, $orgArray)) { - $ausgabe[$row->studiengang][3][]= $row->student_uid; + $ausgabe[$row->studiengang][3][]= $row->student_uid; $text.= "Student_uid: $student_uid
"; } } } } else - $text.="Fehler bei der Abfrage aufgetreten.
"; - + $text.="Fehler bei der Abfrage aufgetreten.
"; + /* * Abbrecher dürfen nicht wieder einen Status bekommen */ -$prestudentAbbrecher = new prestudent(); -$prestudentLast = new prestudent(); -$text.= "
Suche alle Abbrecher die wieder einen Status bekommen haben...

"; +$prestudentAbbrecher = new prestudent(); +$prestudentLast = new prestudent(); +$text.= "
Suche alle Abbrecher die wieder einen Status bekommen haben...

"; $qry ="select student.student_uid, prestudent.prestudent_id, student.studiengang_kz studiengang from public.tbl_student student join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus prestatus using(prestudent_id) -where prestatus.status_kurzbz = 'Abbrecher'; "; +join public.tbl_prestudentstatus prestatus using(prestudent_id) +where prestatus.status_kurzbz = 'Abbrecher'; "; if($db->db_query($qry)) { while($row = $db->db_fetch_object()) { - $student_uid = $row->student_uid; - $prestudent_id = $row->prestudent_id; - - $prestudentLast->result = array(); - - $prestudentLast->getLastStatus($prestudent_id); - + $student_uid = $row->student_uid; + $prestudent_id = $row->prestudent_id; + + $prestudentLast->result = array(); + + $prestudentLast->getLastStatus($prestudent_id); + if($prestudentLast->status_kurzbz != 'Abbrecher') { - $ausgabe[$row->studiengang][4][]= $student_uid; - $text.= "Studenten-uid: ".$student_uid."
"; + $ausgabe[$row->studiengang][4][]= $student_uid; + $text.= "Studenten-uid: ".$student_uid."
"; } } } @@ -180,55 +180,55 @@ if($db->db_query($qry)) /* * Aktuelles Semester beim Studenten stimmt nicht mit dem Ausbildungssemester des aktuellen Status überein - */ + */ -$text .="

Suche Studenten deren Semstern nicht mit dem Ausbildungssemesters des aktuellen Status übereinstimmt ...

"; - -$student = new student(); -$prestudent = new prestudent(); +$text .="

Suche Studenten deren Semstern nicht mit dem Ausbildungssemesters des aktuellen Status übereinstimmt ...

"; + +$student = new student(); +$prestudent = new prestudent(); $qry = "select distinct(student.student_uid), prestudent.prestudent_id, status.ausbildungssemester, lv.semester, student.studiengang_kz studiengang from public.tbl_student student join public.tbl_studentlehrverband lv using(student_uid) join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus status using(prestudent_id) -WHERE status.studiensemester_kurzbz = '$aktSem' +join public.tbl_prestudentstatus status using(prestudent_id) +WHERE status.studiensemester_kurzbz = '$aktSem' and lv.studiensemester_kurzbz = '$aktSem' AND status.status_kurzbz NOT IN ('Interessent','Bewerber') -and get_rolle_prestudent (prestudent_id, '$aktSem')='Student';"; +and get_rolle_prestudent (prestudent_id, '$aktSem')='Student';"; if($db->db_query($qry)) { while($row = $db->db_fetch_object()) { $student_uid = $row->student_uid; - + if($row->ausbildungssemester != $row->semester) { - $ausgabe[$row->studiengang][5][]= $student_uid; + $ausgabe[$row->studiengang][5][]= $student_uid; $text.="Studenten-uid: ".$student_uid."
"; - } + } } } /* * Inaktive Studenten sollen keinen "aktiven" Status haben (Diplomant, Student, Unterbrecher, Praktikant) - */ + */ -$text.="

Suche alle inaktiven Studenten mit einem aktiven Status ...

"; +$text.="

Suche alle inaktiven Studenten mit einem aktiven Status ...

"; -$qry = "Select distinct(student.student_uid), student.studiengang_kz studiengang -from public.tbl_benutzer benutzer +$qry = "Select distinct(student.student_uid), student.studiengang_kz studiengang +from public.tbl_benutzer benutzer join public.tbl_student student on(benutzer.uid = student.student_uid) join public.tbl_prestudent prestudent using(prestudent_id) -where benutzer.aktiv = 'false' +where benutzer.aktiv = 'false' and get_rolle_prestudent (prestudent_id, '$aktSem') in ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')"; if($db->db_query($qry)) { while($row = $db->db_fetch_object()) { - $ausgabe[$row->studiengang][6][]= $row->student_uid; - $text.="Studenten-uid: ".$row->student_uid."
"; + $ausgabe[$row->studiengang][6][]= $row->student_uid; + $text.="Studenten-uid: ".$row->student_uid."
"; } } @@ -240,31 +240,31 @@ if($db->db_query($qry)) $text.="

Suche alle Studenten deren Inskription im aktuellen Semester vor der letzten BIS-Meldung liegt ...

"; -$qry ="Select distinct(student.student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_benutzer benutzer +$qry ="Select distinct(student.student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang +from public.tbl_benutzer benutzer join public.tbl_student student on(benutzer.uid = student.student_uid) join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus prestatus using(prestudent_id) -where benutzer.aktiv = 'true'"; +join public.tbl_prestudentstatus prestatus using(prestudent_id) +where benutzer.aktiv = 'true'"; if($db->db_query($qry)) { while($row = $db->db_fetch_object()) - { + { $prestudent = new prestudent(); $prestudent->getFirstStatus($row->prestudent_id, 'Student'); // wenn Student im aktuellen Semester zum ersten Mal den Status Student bekommt if($prestudent->studiensemester_kurzbz == $aktSem) { - $datumBIS = getDateForInscription($aktSem); + $datumBIS = getDateForInscription($aktSem); $datumInscription = $datum->formatDatum($prestudent->datum, 'Y-m-d'); - + // Wenn Inscriptionsdatum vor der letzten BIS Meldung liegt if($datumInscription < $datumBIS) { - $ausgabe[$row->studiengang][7][]= $row->student_uid; - $text.= $row->student_uid ." Inskribiert am: ".$datumInscription." BIS Meldung: ".$datumBIS."
"; + $ausgabe[$row->studiengang][7][]= $row->student_uid; + $text.= $row->student_uid ." Inskribiert am: ".$datumInscription." BIS Meldung: ".$datumBIS."
"; } } @@ -273,69 +273,69 @@ if($db->db_query($qry)) /* - * Datum und Studiensemester bei den Stati sind in falscher Reihenfolge + * Datum und Studiensemester bei den Stati sind in falscher Reihenfolge */ -$text.="

Suche alle Studenten die Datum und Studiensemester in deren Stati in falscher Reihenfolge haben ...

"; +$text.="

Suche alle Studenten die Datum und Studiensemester in deren Stati in falscher Reihenfolge haben ...

"; $prestudentFirst = new prestudent(); $prestudentSecond = new prestudent(); -$i = 0; +$i = 0; // alle aktiven Studenten die im aktuellen Semster den Status Student haben -$qry_student ="Select distinct(student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_student student +$qry_student ="Select distinct(student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang +from public.tbl_student student join public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid) join public.tbl_prestudent prestudent using(prestudent_id) join public.tbl_prestudentstatus status using(prestudent_id) -where benutzer.aktiv = 'true' -and status.status_kurzbz ='Student' +where benutzer.aktiv = 'true' +and status.status_kurzbz ='Student' and status.studiensemester_kurzbz = '$aktSem';"; if($result = $db->db_query($qry_student)) { while($student = $db->db_fetch_object($result)) - { - $qry_orderSemester ="SELECT * FROM public.tbl_prestudentstatus status + { + $qry_orderSemester ="SELECT * FROM public.tbl_prestudentstatus status join public.tbl_studiensemester semester using(studiensemester_kurzbz) - where prestudent_id = '$student->prestudent_id' - order by start DESC, datum DESC;"; - + where prestudent_id = '$student->prestudent_id' + order by start DESC, datum DESC;"; + if($result1 = $db->db_query($qry_orderSemester)) { $prestudentSecond->result = array(); - $prestudentFirst->result = array(); + $prestudentFirst->result = array(); while($row = $db->db_fetch_object($result1)) { - $prestudentStatus = new prestudent(); - - $prestudentStatus->prestudent_id = $row->prestudent_id; - $prestudentStatus->status_kurzbz = $row->status_kurzbz; - $prestudentStatus->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $prestudentStatus->ausbildungssemester = $row->ausbildungssemester; - $prestudentStatus->datum = $row->datum; - $prestudentStatus->insertamum = $row->insertamum; + $prestudentStatus = new prestudent(); + + $prestudentStatus->prestudent_id = $row->prestudent_id; + $prestudentStatus->status_kurzbz = $row->status_kurzbz; + $prestudentStatus->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $prestudentStatus->ausbildungssemester = $row->ausbildungssemester; + $prestudentStatus->datum = $row->datum; + $prestudentStatus->insertamum = $row->insertamum; $prestudentStatus->insertvon = $row->insertvon; - $prestudentStatus->updateamum = $row->updateamum; - $prestudentStatus->updatevon = $row->updatevon; - $prestudentStatus->ext_id = $row->ext_id; - $prestudentStatus->orgform_kurzbz = $row->orgform_kurzbz; - - $prestudentFirst->result[] = $prestudentStatus; + $prestudentStatus->updateamum = $row->updateamum; + $prestudentStatus->updatevon = $row->updatevon; + $prestudentStatus->ext_id = $row->ext_id; + $prestudentStatus->orgform_kurzbz = $row->orgform_kurzbz; + + $prestudentFirst->result[] = $prestudentStatus; } } - else + else $text.= "Fehler"; if(!$prestudentSecond->getPrestudentRolle($student->prestudent_id,null,null,'Datum DESC, insertamum DESC')) - $text.= "ERROR:".$prestudentSecond->errormsg; - + $text.= "ERROR:".$prestudentSecond->errormsg; + for($i=0; $iresult); $i++) { if($prestudentFirst->result[$i]->studiensemester_kurzbz != $prestudentSecond->result[$i]->studiensemester_kurzbz) { - $ausgabe[$student->studiengang][8][]= $student->student_uid; - $text.= "Studenten-uid: ".$student->student_uid."
"; - continue 2; + $ausgabe[$student->studiengang][8][]= $student->student_uid; + $text.= "Studenten-uid: ".$student->student_uid."
"; + continue 2; } } } @@ -345,33 +345,33 @@ if($result = $db->db_query($qry_student)) * Aktive Studenten ohne Status in aktuellen Studiensemester */ -$prestudent = new prestudent(); -$text.="

Suche alle aktiven Studenten die keinen Status im aktuellen Studiensemester haben.

"; +$prestudent = new prestudent(); +$text.="

Suche alle aktiven Studenten die keinen Status im aktuellen Studiensemester haben.

"; $qry ="Select distinct (student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_student student +from public.tbl_student student join public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid) join public.tbl_prestudent prestudent using(prestudent_id) join public.tbl_prestudentstatus status using(prestudent_id) -where benutzer.aktiv = 'true'"; +where benutzer.aktiv = 'true'"; if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { - if(!$prestudent->getLastStatus($row->prestudent_id, $aktSem) + if(!$prestudent->getLastStatus($row->prestudent_id, $aktSem) && !$prestudent->getLastStatus($row->prestudent_id, $nextSem)) { - $ausgabe[$row->studiengang][9][]= $row->student_uid; + $ausgabe[$row->studiengang][9][]= $row->student_uid; $text.= $row->student_uid."
"; - } + } } } /* * Bewerber im aktuellen StSem die in Mischformstudiengängen keine Orgform eingetragen haben */ -$text.="

Suche alle Bewerber die keine Orgform eingetragen haben.

"; +$text.="

Suche alle Bewerber die keine Orgform eingetragen haben.

"; $qry =" SELECT @@ -385,21 +385,21 @@ WHERE tbl_prestudentstatus.status_kurzbz='Bewerber' AND tbl_studiengang.mischform AND (tbl_prestudentstatus.orgform_kurzbz='' OR tbl_prestudentstatus.orgform_kurzbz is null) - AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); + AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { - $ausgabe[$row->studiengang][10][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; - $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + $ausgabe[$row->studiengang][10][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; + $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; } } /* * Studierende im aktuellen StSem die in Mischformstudiengängen keine Orgform eingetragen haben */ -$text.="

Suche alle Bewerber die keine Orgform eingetragen haben.

"; +$text.="

Suche alle Bewerber die keine Orgform eingetragen haben.

"; $qry =" SELECT @@ -413,28 +413,56 @@ WHERE tbl_prestudentstatus.status_kurzbz='Student' AND tbl_studiengang.mischform AND (tbl_prestudentstatus.orgform_kurzbz='' OR tbl_prestudentstatus.orgform_kurzbz is null) - AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); + AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { - $ausgabe[$row->studiengang][11][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; - $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + $ausgabe[$row->studiengang][11][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; + $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; } } + +/* + * Studiengang des Prestudenten passt nicht zu Studiengang des Studienplans + */ +$text.="

Suche alle bei denen Studiengang des Prestudenten nicht zum Studiengang des Studienplans passt

"; + +$qry =" +SELECT + distinct tbl_person.*, + tbl_prestudent.studiengang_kz as studiengang, + tbl_prestudent.prestudent_id +FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN public.tbl_person USING(person_id) +WHERE tbl_prestudent.studiengang_kz<>tbl_studienordnung.studiengang_kz +"; +if($result = $db->db_query($qry)) +{ + while($row = $db->db_fetch_object($result)) + { + $ausgabe[$row->studiengang][12][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; + $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + } +} + // Ausgabe der Studenten foreach($ausgabe as $stg_kz=>$value) { //Wenn eine Studiengangskennzahl uebergeben wird, nur diese anzeigen und die anderen ueberspringen if(isset($_REQUEST['stg_kz']) && $_REQUEST['stg_kz']!=$stg_kz) continue; - - $studiengang = new studiengang(); - $studiengang->load($stg_kz); - - echo "

".$studiengang->bezeichnung ." (".$studiengang->kurzbzlang.")

"; - echo ""; + + $studiengang = new studiengang(); + $studiengang->load($stg_kz); + + echo "

".$studiengang->bezeichnung ." (".$studiengang->kurzbzlang.")

"; + echo "
"; foreach($value as $code=>$uid) { switch ($code) { @@ -448,7 +476,7 @@ foreach($ausgabe as $stg_kz=>$value) echo ""; break; case 4: - echo ""; + echo ""; break; case 5: echo ""; @@ -471,28 +499,31 @@ foreach($ausgabe as $stg_kz=>$value) case 11: echo ""; break; - + case 12: + echo ""; + break; + default: echo ""; break; } foreach ($uid as $student_id) - { - echo ""; - $student = new student(); + { + echo ""; + $student = new student(); if($student->load($student_id)) echo ''; else - echo ''; - echo ""; + echo ''; + echo ""; } - + } - echo "
 
Studenten mit nicht identischen Organisationsformeinträgen (Studiengang <-> Prestudentstatus)
 
Abbrecher die wieder einen Status bekommen haben
 
Abbrecher die wieder einen Status bekommen haben
 
Studenten deren Semester nicht mit dem Ausbildungssemester des aktuellen Status übereinstimmt
 
Studierendenstati die keiner Organisationsform zugeordnet sind
 
Studienplan passt nicht zum Studiengang des Studierenden
 
Ungültiger Code
'.$student->vorname.''.$student->nachname.''.$student->uid.''.$student_id,'
'.$student_id,'
"; + echo ""; } -//echo $text; +//echo $text; /* * Gibt das Datum der BIS Meldung des übergebenen Semesters zurück @@ -500,24 +531,24 @@ foreach($ausgabe as $stg_kz=>$value) function getDateForInscription ($semester) { global $datum; - + $semesterYear = substr($semester,2,6); - $semesterType = substr($semester,0,2); - + $semesterType = substr($semester,0,2); + if($semesterType == 'SS') { - $date = "15.11.".($semesterYear-1); + $date = "15.11.".($semesterYear-1); $date = $datum->formatDatum($date, 'Y-m-d'); - return $date; + return $date; } - + if($semesterType == 'WS') { - $date = '15.04'.$semesterYear; - $date = $datum->formatDatum($date, 'Y-m-d'); - return $date; + $date = '15.04'.$semesterYear; + $date = $datum->formatDatum($date, 'Y-m-d'); + return $date; } } -?> +?> \ No newline at end of file