diff --git a/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php b/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php new file mode 100644 index 000000000..c65fed909 --- /dev/null +++ b/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php @@ -0,0 +1,389 @@ +studiensemester_fk==0) + { + $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' LVA '.$row->name." hat Studiensemester 0\n"; + $plausi_error++; + return false; + } + + if($row->kurzbezeichnung == '') + { + //$text.= 'LVA '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' LVA '.$row->name." hat keine Kurzbezeichnung\n"; + $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' ('.$studiensemester[$row->studiensemester_fk].') LVA '.$row->name." hat keine Kurzbezeichnung\n"; + $plausi_error++; + return false; + } + if(strlen($row->name)>128) + { + $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' ('.$studiensemester[$row->studiensemester_fk].') LVA '.$row->name." hat einen zu langen LV-Titel (maximal 128 Zeichen)\n"; + $plausi_error++; + return false; + } + if(strlen($row->kurzbezeichnung)>16) + { + $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' ('.$studiensemester[$row->studiensemester_fk].') LVA '.$row->name." hat eine zu lange Kurzbezeichnung (maximal 16 Zeichen)\n"; + $plausi_error++; + return false; + } + if(strlen($row->beschreibung)>64) + { + $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' ('.$studiensemester[$row->studiensemester_fk].') LVA '.$row->name." hat eine zu lange Beschreibung (maximal 64 Zeichen)\n"; + $plausi_error++; + return false; + } + if($row->ectspunkte>40) + { + $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' ('.$studiensemester[$row->studiensemester_fk].') LVA '.$row->name." hat mehr als 40 ECTS-Punkte\n"; + $plausi_error++; + return false; + } + return true; + } + + //Liefert Bezeichnung der Lehrveranstaltung + function getlvabez($row) + { + global $studiensemester, $stg_data; + return $stg_data[$row->kennzahl]['kuerzel']." Semester $row->semester $row->kurzbezeichnung ".$studiensemester[$row->studiensemester_fk]." ($row->lehrveranstaltung_pk)"; + } + + // Fuegt einen Eintrag in die Synctabelle hinzu + function synctabentry($lehrveranstaltung_id_vilesci, $lehrveranstaltung_id_fas) + { + global $conn; + $qry = "INSERT INTO sync.tbl_synclehrveranstaltung(lva_fas,lva_vilesci) VALUES($lehrveranstaltung_id_fas, $lehrveranstaltung_id_vilesci);"; + pg_query($conn, $qry); + } + + //Schaut welche Felder aktualisiert gehoeren und liefert den Update Befehl + function getupdateqry($row_found, $row_fas_alle) + { + $update=false; + $qry="UPDATE lehre.tbl_lehrveranstaltung SET"; + if($row_fas_alle->name!=$row_found->bezeichnung) + { + $qry.=($update?',':''); + $qry.=" bezeichnung='".addslashes($row_fas_alle->name)."'"; + $update=true; + } + if($row_fas_alle->kurzbezeichnung!=$row_found->kurzbz) + { + $qry.=($update?',':''); + $qry.=" kurzbz='".addslashes($row_fas_alle->kurzbezeichnung)."'"; + $update=true; + } + if($row_fas_alle->kennzahl!=$row_found->studiengang_kz) + { + $qry.=($update?',':''); + $qry.=" studiengang_kz=$row_fas_alle->kennzahl"; + $update=true; + } + if($row_fas_alle->semester!=$row_found->semester) + { + $qry.=($update?',':''); + $qry.=" semester=$row_fas_alle->semester"; + $update=true; + } + if($row_fas_alle->ectspunkte!=$row_found->ects) + { + $qry.=($update?',':''); + if($row_fas_alle->ectspunkte!='') + $qry.=" ects='$row_fas_alle->ectspunkte'"; + else + $qry.=" ects=null"; + $update=true; + } + if($row_fas_alle->beschreibung!=$row_found->anmerkung) + { + $qry.=($update?',':''); + $qry.=" anmerkung='".addslashes($row_fas_alle->beschreibung)."'"; + $update=true; + } + + $qry.=" WHERE lehrveranstaltung_id='$row_found->lehrveranstaltung_id'"; + + if($update) + return $qry; + else + return ''; + } + + //**** BEGIN OF SYNCRONISATION **** + // Assistenz-Email holen + $sql_query="SELECT studiengang_kz, email, UPPER(typ::varchar(1) || kurzbz) as kuerzel FROM public.tbl_studiengang"; + $result = pg_query($conn, $sql_query); + while($row=pg_fetch_object($result)) + { + $stg_data[$row->studiengang_kz]['mail']=$row->email; + $stg_data[$row->studiengang_kz]['kuerzel']=$row->kuerzel; + $stg_data[$row->studiengang_kz]['text']=''; + } + + //Studiensemester holen + $sql_query="SELECT studiensemester_pk, + CASE WHEN art=1 THEN 'WS' + WHEN art=2 THEN 'SS' + END || jahr AS stsem FROM studiensemester"; + $result = pg_query($conn_fas, $sql_query); + while($row=pg_fetch_object($result)) + { + $studiensemester[$row->studiensemester_pk]=$row->stsem; + } + // Anzahl der Lehrveranstaltungen in VileSci + $sql_query="SELECT count(*) AS anz FROM lehre.tbl_lehrveranstaltung"; + $result=pg_query($conn, $sql_query); + $row=pg_fetch_object($result); + $vilesci_anz_lva = $row->anz; + + // Start LVA Synchro + $sql_query="SELECT lehrveranstaltung.*, ausbildungssemester.semester, studiengang.kennzahl FROM lehrveranstaltung, ausbildungssemester, studiengang WHERE ausbildungssemester_fk=ausbildungssemester_pk AND lehrveranstaltung.studiengang_fk=studiengang_pk limit 50"; + flush(); + $result_fas_alle=pg_query($conn_fas, $sql_query); + $num_rows=pg_num_rows($result_fas_alle); + $headtext.="Dies ist eine automatische eMail!\n\n"; + $headtext.="Es wurde eine Synchronisation mit FAS durchgeführt.\n"; + $headtext.="Anzahl der Lehrveranstaltungen vom FAS: $num_rows \n"; + $headtext.="Anzahl der Lehrveranstaltungen in Vilesci: $vilesci_anz_lva \n\n"; + + for ($i=0;$row_fas_alle=pg_fetch_object($result_fas_alle);$i++) + { + // Plausibilitaetscheck + if(validate($row_fas_alle)) + { + //schauen ob lva schon in synctabelle ist + $qry = "SELECT * FROM sync.tbl_synclehrveranstaltung WHERE lva_fas='$row_fas_alle->lehrveranstaltung_pk'"; + $result = pg_query($conn, $qry); + if(pg_num_rows($result)==0) + { + //WEITERSUCHEN + //Gleicher /Stg/Sem/Kurzbz + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE + studiengang_kz='$row_fas_alle->kennzahl' AND + semester='$row_fas_alle->semester' AND + kurzbz='$row_fas_alle->kurzbezeichnung'"; + $result = pg_query($conn, $qry); + + if(pg_num_rows($result)==1) + { + //$text.='FOUND on Kurzbz LVA '.getlvabez($row_fas_alle)." -> UPDATE & SYNCTAB-Insert\n"; + + if($row_found = pg_fetch_object($result)) + { + //Datensatz aktualisieren + $qry = getupdateqry($row_found, $row_fas_alle); + + if($qry!='') + { + if(pg_query($conn, $qry)) + { + //Eintrag zur Synctabelle hinzufuegen + synctabentry($row_found->lehrveranstaltung_id, $row_fas_alle->lehrveranstaltung_pk); + $text.="LVA wurde aktualisiert: $qry\n"; + $anz_update++; + } + else + { + $text.="Fehler beim Update einer LVA: $qry\n"; + $update_error++; + } + } + } + else + { + $text.='Fehler beim Lesen des Datensatzes:'.getlvabez($row_fas_alle)."\n"; + $update_error++; + } + } + elseif(pg_num_rows($result)==0) + { + //WEITERSUCHEN + //Gleicher /Stg/Sem/Bezeichnung + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE + studiengang_kz='$row_fas_alle->kennzahl' AND + semester='$row_fas_alle->semester' AND + bezeichnung='$row_fas_alle->name'"; + $result = pg_query($conn, $qry); + + if(pg_num_rows($result)==1) + { + $text.='FOUND on Name LVA '.getlvabez($row_fas_alle)." -> UPDATE & SYNCTAB-Insert\n"; + $anz_update++; + } + elseif(pg_num_rows($result)==0) + { + //$text.="NOT FOUND -> INSERT & SYNCTAB-Insert\n"; + //Neue Lehrveranstaltung anlegen + $lv = new lehrveranstaltung($conn); + $lv->kurzbz = $row_fas_alle->kurzbezeichnung; + $lv->bezeichnung = $row_fas_alle->name; + $lv->studiengang_kz = $row_fas_alle->kennzahl; + $lv->semester = $row_fas_alle->semester; + $lv->sprache = 'German'; + $lv->ects = $row_fas_alle->ectspunkte; + $lv->semesterstunden = 0; + $lv->anmerkung = $row_fas_alle->beschreibung; + $lv->lehre = false; + $lv->lehreverzeichnis = strtolower($row_fas_alle->kurzbezeichnung); + $lv->aktiv = false; + $lv->planfaktor = 0; + $lv->planlektoren = 0; + $lv->planpersonalkosten = 0; + $lv->plankostenprolektor=0; + $lv->updateamum = date('Y-m-d H:i:s'); + $lv->updatevon = 'Sync'; + $lv->insertamum = date('Y-m-d H:i:s'); + $lv->insertvon = 'Sync'; + + if($lv->save(true)) + { + synctabentry($lv->lehrveranstaltung_id, $row_fas_alle->lehrveranstaltung_pk); + $text.="Eine neue Lehrveranstaltung wurde angelegt: ".getlvabez($row_fas_alle)."\n"; + $anz_insert++; + } + else + { + $text.="Fehler beim Anlegen der LVA ".getlvabez($row_fas_alle).": $lv->errormsg\n"; + $insert_error++; + } + } + else + { + $text.="MULTIFOUND Bezeichnung".getlvabez($row_fas_alle)."-> BREAK\n"; + } + } + else + { + $text.="MULTIFOUND kurzbz ".getlvabez($row_fas_alle)."-> BREAK\n"; + if(!isset($double_lva[$row_fas_alle->lehrveranstaltung_pk])) + $double_lva[$row_fas_alle->lehrveranstaltung_pk] = getlvabez($row_fas_alle); + $double_lva_error++; + } + } + elseif(pg_num_rows($result)==1) + { + $row_id = pg_fetch_object($result); + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id='$row_id->lva_vilesci'"; + $result = pg_query($conn, $qry); + + //UPDATE + if($row_found = pg_fetch_object($result)) + { + //Datensatz aktualisieren + $qry = getupdateqry($row_found, $row_fas_alle); + + if($qry!='') + { + if(pg_query($conn, $qry)) + { + $text.="LVA wurde aktualisiert: $qry\n"; + $anz_update++; + } + else + { + $text.="Fehler beim Update einer LVA: $qry\n"; + $update_error++; + } + } + } + else + { + $text.='Fehler beim Lesen des Datensatzes:'.getlvabez($row_fas_alle); + $update_error++; + } + } + else + { + $text.="\nLVA ".getlvabez($row_fas_alle)." hat mehrere Eintraege in tbl_synclehrveranstaltung\n"; + $double_error++; + } + } + else + { + //$text.="\nLVA ".getlvabez($row_fas_alle)." hat nicht plausible Daten\n"; + } + } + + $headtext.="\n$plausi_error Fehler beim Plausibilitaetscheck!\n"; + $headtext.="$update_error Fehler bei LVA-Update!\n"; + $headtext.="$insert_error Fehler bei LVA-Insert!\n"; + $headtext.="$double_error Fas_id's kommen in Synctab mehrmals vor!\n"; + $headtext.="$double_lva_error Lehrveranstaltungen kommen in VileSci mehrmals vor!\n"; + $headtext.="$anz_update LVAs wurden aktualisiert.\n"; + $headtext.="$anz_insert LVAs wurden neu angelegt.\n\n"; + + if(count($double_lva)>0) + { + $headtext.="Doppelte Lehrveranstaltungen:\n\n"; + foreach ($double_lva as $bez) + $headtext.=$bez."\n"; + } + + + foreach ($stg_data as $stg=>$trash) + { + $msg = $stg_data[$stg]['text']; + if($msg!='') + { + $text.="\nMails an Studiengang ".$stg_data[$stg]['kuerzel'].'('.$stg_data[$stg]['mail'].") ... "; + if(mail('oesi@technikum-wien.at',"FAS - Vilesci (Lehrveranstaltungen) ".$stg_data[$stg]['kuerzel'],$head_stg_text.$msg,"From: vilesci@technikum-wien.at")) + $text.="gesendet\n\n$msg"; + else + $text.="FEHLER beim senden\n\n$msg"; + } + } + + $text.="\nEND OF SYNCHRONISATION\n"; + + if (mail($adress,"FAS - Vilesci (Lehrveranstaltungen)",$headtext."\n\n".$text,"From: vilesci@technikum-wien.at")) + $sendmail=true; + else + $sendmail=false; +?> + + +
+