From f94cfe6e99cd2014bdc1b0bc354dad84f139766b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 14 Feb 2008 16:13:36 +0000 Subject: [PATCH] --- .../stp/check_studentlehrverband_rolle.php | 307 ++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 system/sync/stp/check_studentlehrverband_rolle.php diff --git a/system/sync/stp/check_studentlehrverband_rolle.php b/system/sync/stp/check_studentlehrverband_rolle.php new file mode 100644 index 000000000..a756345e4 --- /dev/null +++ b/system/sync/stp/check_studentlehrverband_rolle.php @@ -0,0 +1,307 @@ +getLastStatus($row->prestudent_id, $row->studiensemester_kurzbz)) + { + $text.="Fehler beim Laden des Status von $row->prestudent_id\n"; + continue; + } + + //Abbrecher und Unterbrecher ins 0. Semester verschieben + if($prestd->rolle_kurzbz=='Abbrecher') + { + $semester='0'; + $verband='A'; + } + elseif($prestd->rolle_kurzbz=='Unterbrecher') + { + $semester='0'; + $verband='B'; + } + else + { + $semester = $prestd->ausbildungssemester; + $verband=' '; + } + + //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)) + { + $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 = $verband; + $student->gruppe = ' '; + } + + $student->uid = $row->student_uid; + $student->studiensemester_kurzbz = $row->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->studiensemester_kurzbz in Semester $student->semester\n"; + else + $text.="Aktualisiere Studentlehrverbandeintrag für $row->student_uid im $row->studiensemester_kurzbz in Semester $student->semester\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"; + } + } +} + +$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