From 42a09ffa9ed227ced55e3a936dca0a5385809d5e Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 29 Jan 2025 15:21:01 +0100 Subject: [PATCH] - lehrform beim faktor hinzugefuegt - indexes - delete restrict -> delete cascade bei der faktor tabelle - neues recht fuer reports -> direktzugriff --- include/lehrveranstaltung_faktor.class.php | 166 +++++++++++------- public/js/components/Tag/Tag.js | 2 + system/dbupdate_3.4.php | 3 +- system/dbupdate_3.4/40717_lv_faktor.php | 13 ++ system/dbupdate_3.4/55289_pep_fine_tuning.php | 16 ++ vilesci/lehre/lehrveranstaltung_faktor.php | 23 +++ 6 files changed, 160 insertions(+), 63 deletions(-) create mode 100644 system/dbupdate_3.4/55289_pep_fine_tuning.php diff --git a/include/lehrveranstaltung_faktor.class.php b/include/lehrveranstaltung_faktor.class.php index 49459321b..b61ce907d 100644 --- a/include/lehrveranstaltung_faktor.class.php +++ b/include/lehrveranstaltung_faktor.class.php @@ -8,6 +8,7 @@ class lehrveranstaltung_faktor extends basis_db public $lehrveranstaltung_faktor_id; // serial public $lehrveranstaltung_id; // integer public $faktor; // numeric + public $lehrform_kurzbz; // varchar(8) public $studiensemester_kurzbz_von; // varchar(16) public $studiensemester_kurzbz_bis; // varchar(16) public $insertamum; // timestamp @@ -58,7 +59,44 @@ class lehrveranstaltung_faktor extends basis_db return true; } - public function loadByLV($lv_id, $von = null, $bis = null, $id = null) + public function loadByLV($lv_id) + { + + if (!is_numeric($lv_id)) + { + $this->errormsg = 'Lehrveranstaltung_faktor_id muss eine gueltige Zahl sein'; + return false; + } + $qry = "SELECT * + FROM lehre.tbl_lehrveranstaltung_faktor + LEFT JOIN public.tbl_studiensemester vonstsem + ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_von = vonstsem.studiensemester_kurzbz + LEFT JOIN public.tbl_studiensemester bisstem + ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_bis = bisstem.studiensemester_kurzbz + WHERE lehrveranstaltung_id = ".$this->db_add_param($lv_id, FHC_INTEGER); + + + if (!$result = $this->db_query($qry)) { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while ($row = $this->db_fetch_object($result)) + { + $lv_faktor_objekt = new lehrveranstaltung_faktor(); + + $lv_faktor_objekt->lehrveranstaltung_faktor_id = $row->lehrveranstaltung_faktor_id; + $lv_faktor_objekt->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lv_faktor_objekt->faktor = $row->faktor; + $lv_faktor_objekt->lehrform_kurzbz = $row->lehrform_kurzbz; + $lv_faktor_objekt->studiensemester_kurzbz_von = $row->studiensemester_kurzbz_von; + $lv_faktor_objekt->studiensemester_kurzbz_bis = $row->studiensemester_kurzbz_bis; + $this->lv_faktoren[] = $lv_faktor_objekt; + } + + return true; + } + public function checkIfExists($lv_id, $von = null, $bis = null, $id = null, $lehrform_kurzbz = null) { if (!is_numeric($lv_id)) @@ -105,50 +143,80 @@ class lehrveranstaltung_faktor extends basis_db lehrveranstaltung_faktor_id != ". $this->db_add_param($id, FHC_INTEGER); } - if (!$result = $this->db_query($qry)) { - $this->errormsg = 'Datensatz konnte nicht geladen werden'; - return false; - } - - while ($row = $this->db_fetch_object($result)) + if (!empty($lehrform_kurzbz) && $lehrform_kurzbz !== "") { - $lv_faktor_objekt = new lehrveranstaltung_faktor(); - - $lv_faktor_objekt->lehrveranstaltung_faktor_id = $row->lehrveranstaltung_faktor_id; - $lv_faktor_objekt->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $lv_faktor_objekt->faktor = $row->faktor; - $lv_faktor_objekt->studiensemester_kurzbz_von = $row->studiensemester_kurzbz_von; - $lv_faktor_objekt->studiensemester_kurzbz_bis = $row->studiensemester_kurzbz_bis; - - $this->lv_faktoren[] = $lv_faktor_objekt; + $qry .= " + AND + lehrform_kurzbz = ". $this->db_add_param($lehrform_kurzbz); + } + else + { + $qry .= " + AND lehrform_kurzbz IS NULL + "; } - return true; + if ($result = $this->db_query($qry)) + { + if ($this->db_num_rows($result) > 0) + return true; + else + return false; + } } - public function addFaktor($lv_id, $faktor, $von, $bis = NULL) + public function save($new = false) { - $qry = 'INSERT INTO lehre.tbl_lehrveranstaltung_faktor (lehrveranstaltung_id, faktor, studiensemester_kurzbz_von, studiensemester_kurzbz_bis) - VALUES ('. $this->db_add_param($lv_id, FHC_INTEGER) . ', '. - $this->db_add_param($faktor, FHC_INTEGER) . ', '. - $this->db_add_param($von, FHC_STRING) . ', '. - $this->db_add_param($bis, FHC_STRING) . ');'; + if ($new) + { + $qry = 'INSERT INTO lehre.tbl_lehrveranstaltung_faktor (lehrveranstaltung_id, faktor, studiensemester_kurzbz_von, studiensemester_kurzbz_bis, lehrform_kurzbz, insertvon) + VALUES ('. $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', '. + $this->db_add_param($this->faktor, FHC_INTEGER) . ', '. + $this->db_add_param($this->studiensemester_kurzbz_von) . ', '. + $this->db_add_param($this->studiensemester_kurzbz_bis) . ', '. + $this->db_add_param($this->lehrform_kurzbz) . ', '. + $this->db_add_param($this->insertvon) . ');'; + } + else + { + $qry = "UPDATE lehre.tbl_lehrveranstaltung_faktor + SET faktor = ". $this->db_add_param($this->faktor) ." , + studiensemester_kurzbz_von = ". $this->db_add_param($this->studiensemester_kurzbz_von) .", + studiensemester_kurzbz_bis = ". $this->db_add_param($this->studiensemester_kurzbz_bis) .", + lehrform_kurzbz = ". $this->db_add_param($this->lehrform_kurzbz) .", + updatevon = ". $this->db_add_param($this->updatevon) .", + updateamum = ". $this->db_add_param($this->updateamum) ." + WHERE lehrveranstaltung_faktor_id = ". $this->db_add_param($this->lehrveranstaltung_faktor_id, FHC_INTEGER); + } + if ($this->db_query($qry)) { - $qry_id = "SELECT currval('lehre.lehrveranstaltung_faktor_id_seq') as id;"; - if($this->db_query($qry_id)) + if ($new) { - if($row = $this->db_fetch_object()) + $qry_id = "SELECT currval('lehre.lehrveranstaltung_faktor_id_seq') as id;"; + if($this->db_query($qry_id)) { - $this->db_query('COMMIT'); - return [ - 'id' => $row->id, - 'lv_id' => $lv_id, - 'faktor' => $faktor, - 'von' => $von, - 'bis' => $bis - ]; + if($row = $this->db_fetch_object()) + { + $this->db_query('COMMIT'); + return [ + 'id' => $row->id, + 'lv_id' => $this->lehrveranstaltung_id, + 'faktor' => $this->faktor, + 'lehrform_kurzbz' => $this->lehrform_kurzbz, + 'von' => $this->studiensemester_kurzbz_von, + 'bis' => $this->studiensemester_kurzbz_bis + ]; + } + else + { + $this->db_query('ROLLBACK'); + return [ + 'status' => 'error', + 'message' => 'Fehler beim Einfügen in die Datenbank:' + ]; + } } else { @@ -160,34 +228,7 @@ class lehrveranstaltung_faktor extends basis_db } } else - { - $this->db_query('ROLLBACK'); - return [ - 'status' => 'error', - 'message' => 'Fehler beim Einfügen in die Datenbank:' - ]; - } - } - else - { - return [ - 'status' => 'error', - 'message' => 'Fehler beim Einfügen in die Datenbank:' - ]; - } - } - - public function updateFaktor($id, $faktor, $von, $bis) - { - $qry = "UPDATE lehre.tbl_lehrveranstaltung_faktor - SET faktor = ". $this->db_add_param($faktor) ." , - studiensemester_kurzbz_von = ". $this->db_add_param($von) .", - studiensemester_kurzbz_bis = ". $this->db_add_param($bis) ." - WHERE lehrveranstaltung_faktor_id = ". $this->db_add_param($id, FHC_INTEGER); - - if ($this->db_query($qry)) - { - return true; + return true; } else { @@ -215,6 +256,7 @@ class lehrveranstaltung_faktor extends basis_db WHERE lehrveranstaltung_id = ".$this->db_add_param($lv_id, FHC_INTEGER) . " AND (vonstsem.start <= now() OR vonstsem.start IS NULL) AND (bisstem.ende >= now() OR bisstem.ende IS NULL) + AND lehrform_kurzbz IS NULL ORDER BY vonstsem.start DESC LIMIT 1 "; diff --git a/public/js/components/Tag/Tag.js b/public/js/components/Tag/Tag.js index ba4e75352..ca3d28fdd 100644 --- a/public/js/components/Tag/Tag.js +++ b/public/js/components/Tag/Tag.js @@ -192,11 +192,13 @@ export default { }, template: `
+ +