diff --git a/application/core/Tag_Controller.php b/application/core/Tag_Controller.php index 6f6cef31b..10e54780e 100644 --- a/application/core/Tag_Controller.php +++ b/application/core/Tag_Controller.php @@ -33,22 +33,30 @@ class Tag_Controller extends FHCAPI_Controller public function getTag() { + $language = $this->_getLanguageIndex(); $id = $this->input->get('id'); $this->NotizModel->addSelect( - 'tbl_notiz.titel, + "tbl_notiz.titel, tbl_notiz.text, - array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung, + array_to_json(bezeichnung_mehrsprachig::varchar[])->>". $language. " as bezeichnung, tbl_notiz.notiz_id, tbl_notiz_typ.style, tbl_notiz.erledigt as done, tbl_notiz.insertamum, tbl_notiz.updateamum, - tbl_notiz.insertvon, - tbl_notiz.updatevon - ' + (verfasserperson.vorname || ' ' || verfasserperson.nachname || ' ' || '(' || verfasserbenutzer.uid || ')') as verfasser, + (bearbeiterperson.vorname || ' ' || bearbeiterperson.nachname || ' ' || '(' || bearbeiterbenutzer.uid || ')') as bearbeiter + " ); $this->NotizModel->addJoin('public.tbl_notiz_typ', 'public.tbl_notiz.typ = public.tbl_notiz_typ.typ_kurzbz'); + + $this->NotizModel->addJoin('public.tbl_benutzer verfasserbenutzer', 'tbl_notiz.verfasser_uid = verfasserbenutzer.uid', 'LEFT'); + $this->NotizModel->addJoin('public.tbl_person verfasserperson', 'verfasserbenutzer.person_id = verfasserperson.person_id', 'LEFT'); + + $this->NotizModel->addJoin('public.tbl_benutzer bearbeiterbenutzer', 'tbl_notiz.verfasser_uid = bearbeiterbenutzer.uid', 'LEFT'); + $this->NotizModel->addJoin('public.tbl_person bearbeiterperson', 'bearbeiterbenutzer.person_id = bearbeiterperson.person_id', 'LEFT'); + $notiz = $this->NotizModel->loadWhere(array('notiz_id' => $id)); $this->terminateWithSuccess(hasData($notiz) ? getData($notiz)[0] : array()); @@ -134,7 +142,11 @@ class Tag_Controller extends FHCAPI_Controller { $postData = $this->getPostJson(); $updateData = $this->NotizModel->update(array('notiz_id' => $postData->id), - array('text' => $postData->notiz) + array('text' => $postData->notiz, + 'updateamum' => date('Y-m-d H:i:s'), + 'updatevon' => $this->_uid, + 'bearbeiter_uid' => $this->_uid, + ) ); $this->terminateWithSuccess($updateData); } @@ -142,7 +154,11 @@ class Tag_Controller extends FHCAPI_Controller { $postData = $this->getPostJson(); $updateData = $this->NotizModel->update(array('notiz_id' => $postData->id), - array('erledigt' => !$postData->done) + array('erledigt' => !$postData->done, + 'updateamum' => date('Y-m-d H:i:s'), + 'updatevon' => $this->_uid, + 'bearbeiter_uid' => $this->_uid, + ) ); $this->terminateWithSuccess($updateData); @@ -183,5 +199,14 @@ class Tag_Controller extends FHCAPI_Controller show_error('User authentification failed'); } + private function _getLanguageIndex() + { + $this->load->model('system/Sprache_model', 'SpracheModel'); + $this->SpracheModel->addSelect('index'); + $result = $this->SpracheModel->loadWhere(array('sprache' => getUserLanguage())); + + return hasData($result) ? getData($result)[0]->index : 1; + } + } \ No newline at end of file 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/locale/de-AT/lvaliste.php b/locale/de-AT/lvaliste.php index e51ddcbf5..5f57dd27c 100644 --- a/locale/de-AT/lvaliste.php +++ b/locale/de-AT/lvaliste.php @@ -7,6 +7,7 @@ $this->phrasen['lvaliste/hilfeAnzeigen']='Hilfe anzeigen'; $this->phrasen['lvaliste/lehrfach']='Lehrfach'; $this->phrasen['lvaliste/lehrform']='Lehrform'; +$this->phrasen['lvaliste/faktor']='Faktor'; $this->phrasen['lvaliste/lvBezeichnung']='LV Bezeichnung'; $this->phrasen['lvaliste/lehrfachBezeichnung']='Lehrfach Bezeichnung'; $this->phrasen['lvaliste/lektor']='LektorIn'; diff --git a/locale/en-US/lvaliste.php b/locale/en-US/lvaliste.php index 4560a4182..d94f41c81 100644 --- a/locale/en-US/lvaliste.php +++ b/locale/en-US/lvaliste.php @@ -7,6 +7,7 @@ $this->phrasen['lvaliste/hilfeAnzeigen']='Show Legend'; $this->phrasen['lvaliste/lehrfach']='Subject'; $this->phrasen['lvaliste/lehrform']='Course Type'; +$this->phrasen['lvaliste/faktor']='Factor'; $this->phrasen['lvaliste/lvBezeichnung']='Course Title'; $this->phrasen['lvaliste/lehrfachBezeichnung']='Subject Title'; $this->phrasen['lvaliste/lektor']='Lector'; diff --git a/public/js/components/Tag/Tag.js b/public/js/components/Tag/Tag.js index b1bf33dbd..c7552a5a9 100644 --- a/public/js/components/Tag/Tag.js +++ b/public/js/components/Tag/Tag.js @@ -82,10 +82,10 @@ export default { this.tagData.style = item.style; this.tagData.zuordnung_typ = this.zuordnung_typ; this.tagData.done = item.done; - this.tagData.insertamum = item.insertamum; - this.tagData.updateamum = item.updateamum; - this.tagData.updatevon = item.updatevon; - this.tagData.insertvon = item.insertvon; + this.tagData.insertamum = this.formatDateTime(item.insertamum) + this.tagData.updateamum = this.formatDateTime(item.updateamum) + this.tagData.bearbeiter = item.bearbeiter; + this.tagData.verfasser = item.verfasser; if (item && item.notiz_id) { @@ -146,8 +146,6 @@ export default { this.$refs.tagModal.hide(); }); } - - }, async doneTag() { @@ -181,22 +179,35 @@ export default { id: "", done: false, insertamum: "", - insertvon: "", + verfasser: "", updateamum: "", - updatevon: "", + bearbeiter: "", response: "" }; this.selectedTagId = null; this.mode = "create"; + }, + formatDateTime: (dateString) => { + if (!dateString) return null; + return new Date(dateString).toLocaleString('de-AT', { + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit" + }); } }, template: `
@@ -232,12 +251,12 @@ export default { class="btn btn-success me-2" @click="doneTag" > - {{ tagData.done ? 'Rückgängig' : 'Erledigt' }} + {{ tagData.done ? $p.t('notiz', 'tag_rueckgaengig') : $p.t('notiz', 'tag_erledigt') }} - + diff --git a/soap/lehrveranstaltung_faktor.json.php b/soap/lehrveranstaltung_faktor.json.php index 49f13ac47..c182e0f70 100644 --- a/soap/lehrveranstaltung_faktor.json.php +++ b/soap/lehrveranstaltung_faktor.json.php @@ -40,7 +40,7 @@ switch($method) ]); break; } - if (exists($faktor['lv_id'], $faktor['von'], $faktor['bis'])) + if (exists($faktor['lv_id'], $faktor['von'], $faktor['bis'], null, $faktor['lehrform_kurzbz'])) { echo json_encode([ 'status' => 'error', @@ -49,12 +49,22 @@ switch($method) break; } - $result = $lv_faktor->addFaktor($faktor['lv_id'], $faktor['faktor'], $faktor['von'], $faktor['bis']); + $newFaktor = new lehrveranstaltung_faktor(); + $newFaktor->lehrveranstaltung_id = $faktor['lv_id']; + $newFaktor->faktor = $faktor['faktor']; + $newFaktor->studiensemester_kurzbz_von = $faktor['von']; + $newFaktor->studiensemester_kurzbz_bis = $faktor['bis']; + $newFaktor->lehrform_kurzbz = $faktor['lehrform_kurzbz']; + $newFaktor->insertvon = get_uid(); + $result = $newFaktor->save(true); + echo json_encode($result); } break; case 'updateFaktor': + $faktor = isset($_REQUEST['faktor']) ? $_REQUEST['faktor']: '' ; + if ($faktor !== '') { if (vonHigherThanBis($faktor['von'], $faktor['bis'])) @@ -65,7 +75,7 @@ switch($method) ]); break; } - if (exists($faktor['lv_id'], $faktor['von'], $faktor['bis'], $faktor['id'])) + if (exists($faktor['lv_id'], $faktor['von'], $faktor['bis'], $faktor['id'], $faktor['lehrform_kurzbz'])) { echo json_encode([ 'status' => 'error', @@ -74,7 +84,15 @@ switch($method) break; } - $result = $lv_faktor->updateFaktor($faktor['id'], $faktor['faktor'], $faktor['von'], $faktor['bis']); + $updateFaktor = new lehrveranstaltung_faktor(); + $updateFaktor->lehrveranstaltung_faktor_id = $faktor['id']; + $updateFaktor->faktor = $faktor['faktor']; + $updateFaktor->studiensemester_kurzbz_von = $faktor['von']; + $updateFaktor->studiensemester_kurzbz_bis = $faktor['bis']; + $updateFaktor->lehrform_kurzbz = $faktor['lehrform_kurzbz']; + $updateFaktor->updatevon = get_uid(); + $updateFaktor->updateamum = date('Y-m-d H:i:s'); + $result = $updateFaktor->save(); echo json_encode($result); } break; @@ -99,11 +117,12 @@ function isRightType($lv_id) return false; } -function exists($lv_id, $von, $bis, $id = null) +function exists($lv_id, $von, $bis, $id = null, $lehrform_kurzbz = null) { $lv_faktor = new lehrveranstaltung_faktor(); - $lv_faktor->loadByLV($lv_id, $von, $bis, $id); - return !empty($lv_faktor->lv_faktoren); + + $lehrform_kurzbz = $lehrform_kurzbz === ' - ' ? null : $lehrform_kurzbz; + return $lv_faktor->checkIfExists($lv_id, $von, $bis, $id, $lehrform_kurzbz); } function vonHigherThanBis($von, $bis) diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index f43240797..d007c04f6 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -71,6 +71,7 @@ require_once('dbupdate_3.4/41950_perm_gehaelter.php'); require_once('dbupdate_3.4/53903_valorisierung.php'); require_once('dbupdate_3.4/55968_index_anrechnung.php'); require_once('dbupdate_3.4/25999_locale_update.php'); +require_once('dbupdate_3.4/55289_pep_fine_tuning.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '| '.$p->t('lv/faktor').' | +'.$p->t('lvaliste/faktor').' | +'.$p->t('lvaliste/lehrform').' | '.$p->t('global/von').' | '.$p->t('global/bis').' | '.$p->t('global/bearbeiten').' | @@ -291,6 +313,7 @@ if(count($faktor->lv_faktoren) > 0) { echo "
|---|---|---|---|---|---|
| ".$lv_faktor->faktor." | +".$lv_faktor->lehrform_kurzbz." | ".$lv_faktor->studiensemester_kurzbz_von." | ".$lv_faktor->studiensemester_kurzbz_bis." |