diff --git a/system/sync/fas/sync_fas_vilesci_note_stg.php b/system/sync/fas/sync_fas_vilesci_note_stg.php new file mode 100755 index 000000000..dc04c5756 --- /dev/null +++ b/system/sync/fas/sync_fas_vilesci_note_stg.php @@ -0,0 +1,585 @@ + VILESCI +// setzt vorraus: - tbl_sprache +// - tbl_studiengang +// einschraenkung auf studiengang_fk per http-get: +// sync_fas_vilesci_note_stg.php?stg_von=x&stg_bis=y +// ************************************** + require_once('../../../vilesci/config.inc.php'); + require_once('../../../include/zeugnisnote.class.php'); + require_once('../../../include/pruefung.class.php'); + $adress='fas_sync@technikum-wien.at'; + //$adress='raab@technikum-wien.at'; + + $conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen"); + $conn_fas=pg_connect(CONN_STRING_FAS) or die("Connection zur Vilesci Datenbank fehlgeschlagen"); + + $startzeit = time(); + + $plausi_error=0; + $double_error=0; + + $update_error_pruef=0; + $insert_error_pruef=0; + $update_error_zeug=0; + $insert_error_zeug=0; + + $anz_update_pruef=0; + $anz_not_updated_pruef=0; + $anz_not_updated_zeug=0; + $anz_insert_pruef=0; + $anz_update_zeug=0; + $anz_insert_zeug=0; + $anz_processed_pruef=0; + $anz_processed_zeug=0; + $anz_processed=0; + $anz_students_processed = 0; + $stg_processed = ""; + + $headtext=''; + $head_stg_text="Dies ist eine automatische Mail!\n\nFolgende Fehler sind bei der Synchronisation der Lehrveranstaltungen aufgetreten:\n\n"; + $text=''; + $double_lva = array(); + $stg_data = array(); + + $fasnoten_arr = array(); //mehrdimensionaler array (lehrverstaltung_fk->(note_pk->("note"->"x","datum"->"y" ..))) + $mitarbeiter_arr = array(); //array (ext_id->mitarbeiter_uid) + $studenten_arr = array(); //array (ext_id->student_uid) + $lv_arr = array(); //array (lehrveranstaltung_fk->lehrveranstaltung_id) + $studsem_arr = array(); //array (ext_id->studiensemester_kurzbz) + $lehreinheiten_fas_arr = array(); + $lehreinheiten_sync_arr = array(); + + //array aller mitarbeiter (ext_id->mitarbeiter_uid) + $sqlstr = "SELECT ext_id, mitarbeiter_uid FROM tbl_mitarbeiter"; + if($result = pg_query($conn, $sqlstr)) + { + while($row = pg_fetch_object($result)) + $mitarbeiter_arr[$row->ext_id] = $row->mitarbeiter_uid; + } + + //array aller studenten (ext_id->mitarbeiter_uid) + $sqlstr = "SELECT ext_id, student_uid FROM tbl_student"; + if($result = pg_query($conn, $sqlstr)) + { + while($row = pg_fetch_object($result)) + $studenten_arr[$row->ext_id] = $row->student_uid; + } + + //array aller lehrveranstaltungen aus sync-tabelle (lva_fas->lva_vilesci) + $sqlstr = "SELECT lva_fas, lva_vilesci FROM sync.tbl_synclehrveranstaltung"; + if($result = pg_query($conn, $sqlstr)) + { + while($row = pg_fetch_object($result)) + $lv_arr[$row->lva_fas] = $row->lva_vilesci; + } + + //array aller studiensemester (ext_id->studiensemester_kurzbz) + $sqlstr = "SELECT * FROM tbl_studiensemester"; + if($result = pg_query($conn, $sqlstr)) + { + while($row = pg_fetch_object($result)) + $studsem_arr[$row->ext_id] = $row->studiensemester_kurzbz; + } + + //array aller lehreinheiten in der synctabelle + $sqlstr = "SELECT * FROM sync.tbl_synclehreinheit"; + if($result = pg_query($conn, $sqlstr)) + { + while($row = pg_fetch_object($result)) + $lehreinheiten_sync_arr[$row->lehreinheit_pk] = $row->lehreinheit_id; + } + + + //**** FUNCTIONS **** + function getNoten4Student($conn_fas, $student_fk) + { + $fasnoten_arr = array(); + $mehrfach_arr = array(); + + $sqlstr = "SELECT note.note_pk, + note.student_fk, + note.lehrveranstaltung_fk, + note.datum, + note.note, + note.status, + note.bemerkung, + note.creationdate, + benutzer.name, + lehrveranstaltung.studiensemester_fk, + lehrveranstaltung.notenlektor_fk + FROM note, benutzer, lehrveranstaltung + WHERE note.creationuser = benutzer.benutzer_pk AND + note.lehrveranstaltung_fk = lehrveranstaltung.lehrveranstaltung_pk AND + note.student_fk = '".$student_fk."' + ORDER BY note.lehrveranstaltung_fk ASC, note.datum DESC, note.creationdate DESC"; + if($result = pg_query($conn_fas, $sqlstr)) + { + //$anzahl_quelle = pg_num_rows($result); + while($row = pg_fetch_object($result)) + { + $bemerkung_history = ""; + + if (key_exists($row->lehrveranstaltung_fk,$fasnoten_arr)) + { + $bemerkung_history = "Note am ".$row->datum.": ".$row->note; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["main"] = 0; + } + else + { + $mehrfach_arr[$row->lehrveranstaltung_fk]["main"] = $row->note_pk; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["main"] = 1; + } + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["note"] = $row->note; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["status"] = $row->status; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["creationdate"] = $row->creationdate; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["creationuser_name"] = $row->name; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["name"] = $row->name; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["studiensemester_fk"] = $row->studiensemester_fk; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["bemerkung"] = $row->bemerkung; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["datum"] = $row->datum; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["notenlektor_fk"] = $row->notenlektor_fk; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["student_fk"] = $row->student_fk; + $fasnoten_arr[$row->lehrveranstaltung_fk][$row->note_pk]["ext_id"] = $row->note_pk; + if ($bemerkung_history != "") + $fasnoten_arr[$row->lehrveranstaltung_fk][$mehrfach_arr[$row->lehrveranstaltung_fk]["main"]]["bemerkung"] .= "\n".$bemerkung_history; + } + + } + return $fasnoten_arr; + } + + function getNoten4Studiengang($conn_fas, $studiengang_pk) + { + $fasnoten_arr = array(); + $mehrfach_arr = array(); + + $sqlstr = "SELECT note.note_pk, + note.student_fk, + note.lehrveranstaltung_fk, + note.datum, + note.note, + note.status, + note.bemerkung, + note.creationdate, + benutzer.name, + lehrveranstaltung.studiensemester_fk, + lehrveranstaltung.notenlektor_fk, + note.student_fk + FROM note, benutzer, lehrveranstaltung, student + WHERE note.creationuser = benutzer.benutzer_pk AND + note.lehrveranstaltung_fk = lehrveranstaltung.lehrveranstaltung_pk AND + note.student_fk = student.student_pk AND + student.studiengang_fk = '".$studiengang_pk."' + ORDER BY note.student_fk ASC, note.lehrveranstaltung_fk ASC, note.datum DESC, note.creationdate DESC"; + if($result = pg_query($conn_fas, $sqlstr)) + { + //$anzahl_quelle = pg_num_rows($result); + while($row = pg_fetch_object($result)) + { + $bemerkung_history = ""; + + if (key_exists($row->student_fk, $fasnoten_arr)) + { + if (key_exists($row->lehrveranstaltung_fk,$fasnoten_arr[$row->student_fk])) + { + $bemerkung_history = "Note am ".$row->datum.": ".$row->note; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["main"] = 0; + } + else + { + $mehrfach_arr[$row->student_fk][$row->lehrveranstaltung_fk]["main"] = $row->note_pk; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["main"] = 1; + } + + } + else + { + $mehrfach_arr[$row->student_fk][$row->lehrveranstaltung_fk]["main"] = $row->note_pk; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["main"] = 1; + } + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["note"] = $row->note; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["status"] = $row->status; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["creationdate"] = $row->creationdate; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["creationuser_name"] = $row->name; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["name"] = $row->name; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["studiensemester_fk"] = $row->studiensemester_fk; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["bemerkung"] = $row->bemerkung; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["datum"] = $row->datum; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["notenlektor_fk"] = $row->notenlektor_fk; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["student_fk"] = $row->student_fk; + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$row->note_pk]["ext_id"] = $row->note_pk; + if ($bemerkung_history != "") + $fasnoten_arr[$row->student_fk][$row->lehrveranstaltung_fk][$mehrfach_arr[$row->student_fk][$row->lehrveranstaltung_fk]["main"]]["bemerkung"] .= "\n".$bemerkung_history; + } + + } + return $fasnoten_arr; + } + + + + function getPruefungstyp($status) + { + + $pruefungstyp = ""; + if ($status == 1) + $pruefungstyp = "Termin1"; + else if ($status == 2) + $pruefungstyp = "Termin2"; + else if ($status == 11) + $pruefungstyp = "kommPruef"; + else + $pruefungstyp = 'undefiniert'; //$status; + return $pruefungstyp; + } + + function checkUpdatePruefung($conn, $pruef) + { + $sqlstr = "select * from lehre.tbl_pruefung where ext_id = '".$pruef->ext_id."'"; + if($res = pg_query($conn, $sqlstr)) + { + if($row = pg_fetch_object($res)) + { + if ($row->lehreinheit_id == $pruef->lehreinheit_id && $row->student_uid == $pruef->student_uid && $row->mitarbeiter_uid == $pruef->mitarbeiter_uid && $row->note == $pruef->note && $row->pruefungstyp_kurzbz == $pruef->pruefungstyp_kurzbz && $row->datum == $pruef->datum and $row->anmerkung == $pruef->anmerkung) + return -1; + else + return $row->pruefung_id; + + } + } + else + { + return false; + } + } + + function checkUpdateZeugnis($conn, $zeug) + { + $sqlstr = "select * from lehre.tbl_zeugnisnote where ext_id = '".$zeug->ext_id."'"; + if($res = pg_query($conn, $sqlstr)) + { + if($row = pg_fetch_object($res)) + { + if ($row->lehrveranstaltung_id == $zeug->lehrveranstaltung_id && $row->student_uid == $zeug->student_uid && $row->studiensemester_kurzbz == $zeug->studiensemester_kurzbz && $row->note == $zeug->note && $row->bemerkung == $zeug->bemerkung) + return -1; + else + return 1; + } + + else + { + return false; + } + } + } + + function getLehreinheitID($conn_fas, $note_pk) + { + $lehreinheiten_fas_arr = array(); + $sqlstr = "select lehreinheit.lehreinheit_pk,note.note_pk from lehreinheit, lehrveranstaltung, note, student_gruppe where lehrveranstaltung.lehrveranstaltung_pk = lehreinheit.lehrveranstaltung_fk and note.lehrveranstaltung_fk = lehrveranstaltung.lehrveranstaltung_pk and note.student_fk=student_gruppe.student_fk and student_gruppe.gruppe_fk = lehreinheit.gruppe_fk and note.note_pk = '".$note_pk."'"; + if($result = pg_query($conn_fas, $sqlstr)) + { + while($row = pg_fetch_object($result)) + $lehreinheiten_fas_arr[] = $row->lehreinheit_pk; + return $lehreinheiten_fas_arr; + } + else + return false; + } + + + $text .= "
| ".$lehreinheit_id." | "; + $text .= "".$student_uid." (".$fasnoten_arr[$lvkey][$idkey]["student_fk"].") | ";
+ $text .= "".$mitarbeiter_uid." | "; + $text .= "".$note." | "; + $text .= "".$pruefungstyp_kurzbz." | "; + $text .= ""; + $text .= " | ".$insertamum." | "; + $text .= "".$insertvon." | "; + $text .= "now() | "; + $text .= "".$updatevon." | "; + $text .= "".$ext_id." | "; + if ($zeugnistabeintrag == 1) + { + $text .= "".$lehrveranstaltung_id." | "; + $text .= "".$studiensemester_kurzbz." | "; + } + else + $text .= ""; + $text .= " |