From 50aa66e94b50d359f6c6e1381092e3c9c73cd2a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 14 Feb 2008 16:10:03 +0000 Subject: [PATCH] --- system/check_studentlehrverband_rolle.php | 196 +++++++++++++++++++++- 1 file changed, 192 insertions(+), 4 deletions(-) diff --git a/system/check_studentlehrverband_rolle.php b/system/check_studentlehrverband_rolle.php index 8a3280147..a066fa62e 100644 --- a/system/check_studentlehrverband_rolle.php +++ b/system/check_studentlehrverband_rolle.php @@ -55,8 +55,9 @@ if($result = pg_query($conn, $qry)) $verband=' '; } - //Keinen Eintrag erstellen fuer Semester in denen er noch kein Student war - if(in_array($prestd->rolle_kurzbz, array('Interessent','Bewerber','Abgewiesener','Aufgenommener','Wartender'))) + //Keinen Eintrag erstellen fuer Semester in denen er noch kein Student war und + //keinen Eintrag fuer Diplomanden und Absolventen (werden weiter unten gesondert behandelt) + if(in_array($prestd->rolle_kurzbz, array('Interessent','Bewerber','Abgewiesener','Aufgenommener','Wartender', 'Diplomand','Absolvent'))) continue; if($student->load_studentlehrverband($row->student_uid, $row->studiensemester_kurzbz)) @@ -71,7 +72,7 @@ if($result = pg_query($conn, $qry)) { $student->new = true; $student->insertamum = date('Y-m-d H:i:s'); - $student->insertvon = 'auto'; + $student->insertvon = 'chkstdlvbrolle'; $student->verband = $verband; $student->gruppe = ' '; } @@ -81,7 +82,7 @@ if($result = pg_query($conn, $qry)) $student->studiengang_kz = $row->studiengang_kz; $student->semester = $semester; $student->updateamum = date('Y-m-d H:i:s'); - $student->updatevon = 'auto'; + $student->updatevon = 'chkstdlvbrolle'; //Lehrverband anlegen falls dieser nicht existiert $lvb = new lehrverband($conn); @@ -113,5 +114,192 @@ if($result = pg_query($conn, $qry)) } } } + +$text.="\n\nAbsolventen, Diplomanden, 50er und 60er abgleichen\n\n"; +//Absolventen, Diplomanden, 50er und 60er + +// Bei 50ern und 60ern wird das Semester immer weitergezaehlt. In der Prestudentrolle +// steht aber weiterhin das wirkliche Semester. Daher wird zum Semester dass in der Prestudentrolle +// steht die Anzahl der Semester hinzugezaehlt in denen er schon Diplomand ist. + +//Alle Studenten holen die einen Diplomanden oder Absolventeneintrag haben +$qry = "SELECT distinct student_uid, prestudent_id, studiengang_kz, verband FROM public.tbl_prestudentrolle JOIN public.tbl_student USING(prestudent_id) WHERE rolle_kurzbz='Diplomand' OR rolle_kurzbz='Absolvent'"; + +if($result = pg_query($conn, $qry)) +{ + while($row = pg_fetch_object($result)) + { + //Alle Diplomandeneintraege des Studenten holen + $qry_diplomand = "SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$row->prestudent_id' AND rolle_kurzbz='Diplomand' ORDER BY datum"; + + if($result_diplomand = pg_query($conn, $qry_diplomand)) + { + $i=0; + while($row_diplomand = pg_fetch_object($result_diplomand)) + { + $student = new student($conn); + $prestd = new prestudent($conn); + + //Aktuellen Status in diesem Studiensemester holen + if(!$prestd->getLastStatus($row->prestudent_id, $row_diplomand->studiensemester_kurzbz)) + { + $text.="Fehler beim Laden des Status von $row->prestudent_id\n"; + continue; + } + + //Wenn Diplomand nicht der letzte Status in diesem Semester ist, dann Weiterspringen + if($prestd->rolle_kurzbz!='Diplomand') + { + $i++; + continue; + } + + //50er und 60er rutschen immer ein Semester weiter + $semester = $row_diplomand->ausbildungssemester+$i; + + //Studentlehrverband Eintrag laden + if($student->load_studentlehrverband($row->student_uid, $row_diplomand->studiensemester_kurzbz)) + { + $student->new = false; + + //Wenn der gleiche Eintrag schon vorhanden ist dann ueberspringen + if($student->semester==$semester) + { + $i++; + continue; + } + } + else + { + $student->new = true; + $student->insertamum = date('Y-m-d H:i:s'); + $student->insertvon = 'chkstdlvbrolle'; + $student->verband = ' '; + $student->gruppe = ' '; + } + + $student->uid = $row->student_uid; + $student->studiensemester_kurzbz = $row_diplomand->studiensemester_kurzbz; + $student->studiengang_kz = $row->studiengang_kz; + $student->semester = $semester; + $student->updateamum = date('Y-m-d H:i:s'); + $student->updatevon = 'chkstdlvbrolle'; + + //Lehrverband anlegen falls dieser nicht existiert + $lvb = new lehrverband($conn); + if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe)) + { + $lvb->studiengang_kz = $student->studiengang_kz; + $lvb->semester = $student->semester; + $lvb->verband = $student->verband; + $lvb->gruppe = $student->gruppe; + $lvb->aktiv = true; + + if(!$lvb->save(true)) + { + $text.="Fehler beim Anlegen des Lehrverbandes: ".$lvb->errormsg; + } + } + + //Zuteilung Speichern + if($student->save_studentlehrverband()) + { + if($student->new) + $text.="Erstelle Studentlehrverbandeintrag für $row->student_uid im $row_diplomand->studiensemester_kurzbz in Semester $student->semester (Diplomand)\n"; + else + $text.="Aktualisiere Studentlehrverbandeintrag für $row->student_uid im $row_diplomand->studiensemester_kurzbz in Semester $student->semester (Diplomand)\n"; + } + else + { + $text.="Fehler bei $student->uid im $student->studiensemester_kurzbz Semester $student->semester Studiengang $student->studiengang_kz Verband '$student->verband' Gruppe '$student->gruppe'\n"; + } + //Semester um eins weiterzaehlen + $i++; + } + + //Absolventen Eintrag in der Tabelle Studentlehrverband anlegen + + //Absolventeneintrag holen + $qry_absolvent = "SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$row->prestudent_id' AND rolle_kurzbz='Absolvent' ORDER BY datum"; + if($result_absolvent = pg_query($conn, $qry_absolvent)) + { + while($row_absolvent = pg_fetch_object($result_absolvent)) + { + $student = new student($conn); + + //Der Absolventeneintrag befindet sich im gleichen Semester wie der letzte Diplomandeneintrag + $semester = $row_absolvent->ausbildungssemester+($i!=0?$i-1:0); + + //Studentlehrverband Eintrag laden + if($student->load_studentlehrverband($row->student_uid, $row_absolvent->studiensemester_kurzbz)) + { + $student->new = false; + + //Wenn der gleiche Eintrag schon vorhanden ist dann ueberspringen + if($student->semester==$semester) + continue; + } + else + { + $student->new = true; + $student->insertamum = date('Y-m-d H:i:s'); + $student->insertvon = 'chkstdlvbrolle'; + $student->verband = $row->verband; + $student->gruppe = ' '; + } + + $student->uid = $row->student_uid; + $student->studiensemester_kurzbz = $row_absolvent->studiensemester_kurzbz; + $student->studiengang_kz = $row->studiengang_kz; + $student->semester = $semester; + $student->updateamum = date('Y-m-d H:i:s'); + $student->updatevon = 'chkstdlvbrolle'; + + //Lehrverband anlegen falls dieser nicht existiert + $lvb = new lehrverband($conn); + if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe)) + { + $lvb->studiengang_kz = $student->studiengang_kz; + $lvb->semester = $student->semester; + $lvb->verband = $student->verband; + $lvb->gruppe = $student->gruppe; + $lvb->aktiv = true; + + if(!$lvb->save(true)) + { + $text.="Fehler beim Anlegen des Lehrverbandes: ".$lvb->errormsg; + } + } + + //Zuteilung Speichern + if($student->save_studentlehrverband()) + { + if($student->new) + $text.="Erstelle Studentlehrverbandeintrag für $student->uid im $student->studiensemester_kurzbz in Semester $student->semester (Absolvent)\n"; + else + $text.="Aktualisiere Studentlehrverbandeintrag für $student->uid im $student->studiensemester_kurzbz in Semester $student->semester (Absolvent)\n"; + } + else + { + $text.="Fehler bei $student->uid im $student->studiensemester_kurzbz Semester $student->semester Studiengang $student->studiengang_kz Verband '$student->verband' Gruppe '$student->gruppe'\n"; + } + } + } + else + { + $text.="\nFehler beim Ermitteln des Absolventeneintrages:".$qry_absolvent; + } + } + else + { + $text.="\nFehler beim Ermitteln des Diplomandeneintrages:".$qry_diplomand; + } + } +} +else +{ + $text.="\nFehler beim Ermitteln der Absolventen und Diplomanden".$qry; +} + echo nl2br($text); ?> \ No newline at end of file