- lehrform beim faktor hinzugefuegt

- indexes
- delete restrict -> delete cascade bei der faktor tabelle
- neues recht fuer reports -> direktzugriff
This commit is contained in:
ma0048
2025-01-29 15:21:01 +01:00
parent 0d99cc35d4
commit 42a09ffa9e
6 changed files with 160 additions and 63 deletions
+87 -45
View File
@@ -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,36 +143,56 @@ 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';
if (!empty($lehrform_kurzbz) && $lehrform_kurzbz !== "")
{
$qry .= "
AND
lehrform_kurzbz = ". $this->db_add_param($lehrform_kurzbz);
}
else
{
$qry .= "
AND lehrform_kurzbz IS NULL
";
}
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
return true;
else
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->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 save($new = false)
{
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);
}
public function addFaktor($lv_id, $faktor, $von, $bis = NULL)
{
$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 ($this->db_query($qry))
{
if ($new)
{
$qry_id = "SELECT currval('lehre.lehrveranstaltung_faktor_id_seq') as id;";
if($this->db_query($qry_id))
@@ -144,10 +202,11 @@ class lehrveranstaltung_faktor extends basis_db
$this->db_query('COMMIT');
return [
'id' => $row->id,
'lv_id' => $lv_id,
'faktor' => $faktor,
'von' => $von,
'bis' => $bis
'lv_id' => $this->lehrveranstaltung_id,
'faktor' => $this->faktor,
'lehrform_kurzbz' => $this->lehrform_kurzbz,
'von' => $this->studiensemester_kurzbz_von,
'bis' => $this->studiensemester_kurzbz_bis
];
}
else
@@ -169,24 +228,6 @@ class lehrveranstaltung_faktor extends basis_db
}
}
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;
}
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
";
+2
View File
@@ -192,11 +192,13 @@ export default {
},
template: `
<div class="plus_button_container" @mouseleave="hideList">
<span :title="values.length === 0 ? 'Bitte Zeilen markieren' : ''">
<button @mouseover="showList = true"
:disabled="!values || values.length === 0"
class="btn btn-sm">
<i class="fa-solid fa-tag fa-xl"></i>
</button>
</span>
<ul v-if="showList" class="dropdown_list">
<li v-for="(item, index) in tags" :key="index" @click="openModal(item)" :title="item.bezeichnung">
{{ item.bezeichnung }}
+2 -1
View File
@@ -68,6 +68,7 @@ require_once('dbupdate_3.4/33683_digitale_anwesenheitsliste_und_entschuldigungsm
require_once('dbupdate_3.4/40717_lv_faktor.php');
require_once('dbupdate_3.4/48526_pep_tagging.php');
require_once('dbupdate_3.4/41950_perm_gehaelter.php');
require_once('dbupdate_3.4/55289_pep_fine_tuning.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -263,7 +264,7 @@ $tabellen=array(
"lehre.tbl_zeitfenster" => array("wochentag","stunde","ort_kurzbz","studiengang_kz","gewicht"),
"lehre.tbl_zeugnis" => array("zeugnis_id","student_uid","zeugnis","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"),
"lehre.tbl_lehrveranstaltung_faktor" => array("lehrveranstaltung_faktor_id", "lehrveranstaltung_id","faktor","studiensemester_kurzbz_von","studiensemester_kurzbz_bis","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_lehrveranstaltung_faktor" => array("lehrveranstaltung_faktor_id", "lehrveranstaltung_id","faktor", "lehrform_kurzbz", "studiensemester_kurzbz_von","studiensemester_kurzbz_bis","insertamum","insertvon","updateamum","updatevon"),
"public.ci_apikey" => array("apikey_id","key","level","ignore_limits","date_created"),
"public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung", "co_name"),
"public.tbl_adressentyp" => array("adressentyp_kurzbz", "bezeichnung", "bezeichnung_mehrsprachig", "sort"),
+13
View File
@@ -78,3 +78,16 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_lehrv
}
}
if(!@$db->db_query("SELECT lehrform_kurzbz FROM lehre.tbl_lehrveranstaltung_faktor LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_lehrveranstaltung_faktor ADD COLUMN lehrform_kurzbz varchar(8);
ALTER TABLE lehre.tbl_lehrveranstaltung_faktor ADD CONSTRAINT fk_lehrveranstaltung_faktor_lehrform_kurzbz FOREIGN KEY (lehrform_kurzbz) REFERENCES lehre.tbl_lehrform (lehrform_kurzbz) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE lehre.tbl_lehrveranstaltung_faktor DROP CONSTRAINT fk_lehrveranstaltung_faktor_lehrveranstaltung_id;
ALTER TABLE lehre.tbl_lehrveranstaltung_faktor ADD CONSTRAINT fk_lehrveranstaltung_faktor_lehrveranstaltung_id FOREIGN KEY (lehrveranstaltung_id) REFERENCES lehre.tbl_lehrveranstaltung (lehrveranstaltung_id) ON DELETE CASCADE ON UPDATE CASCADE;
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_lehrveranstaltung_faktor '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte lehrform_kurzbz zu Tabelle lehre.tbl_lehrveranstaltung_faktor hinzugefügt';
}
@@ -0,0 +1,16 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
// system.tbl_berechtigung: add berechtigung addons/reports:begrenzt
if($result = $db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz='addons/reports:begrenzt'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('addons/reports:begrenzt', 'Reports nur über Direktlink aufrufbar');";
if(!$db->db_query($qry))
echo '<strong>Berechtigung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neue Berechtigung addons/reports:begrenzt zu system.tbl_berechtigung hinzugefügt';
}
}
@@ -6,6 +6,7 @@ require_once('../../include/phrasen.class.php');
require_once('../../include/lehrveranstaltung.class.php');
require_once('../../include/lehrveranstaltung_faktor.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/lehrform.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
@@ -38,12 +39,14 @@ echo '<!DOCTYPE HTML>
var row = $(this).closest('tr');
var id = row.data('id');
var faktor = row.find('.faktor').text();
var lehrform = row.find('.lehrform').text();
var von = row.find('.von').text();
var bis = row.find('.bis').text();
$('#action').val('edit');
$('#id').val(id);
$('#faktor').val(faktor);
$('#lehrform').val(lehrform);
$('#von').val(von);
$('#bis').val(bis);
});
@@ -63,12 +66,14 @@ echo '<!DOCTYPE HTML>
var id = $('#id').val();
var faktor = $('#faktor').val();
var lehrform = $('#lehrform').val();
var von = $('#von').val();
var bis = $('#bis').val();
var lv_id = $('#lv_id').val();
var formData = {
faktor: faktor,
lehrform_kurzbz: lehrform,
von: von,
bis: bis,
lv_id: lv_id
@@ -132,6 +137,7 @@ echo '<!DOCTYPE HTML>
{
var row = $('#faktorTable tbody tr[data-id="' + formData.id + '"]');
row.find('.faktor').text(formData.faktor);
row.find('.lehrform').text(formData.lehrform_kurzbz);
row.find('.von').text(formData.von);
row.find('.bis').text(formData.bis);
@@ -189,6 +195,7 @@ echo '<!DOCTYPE HTML>
var row = tr
.append(
$('<td>').text(faktor.faktor).addClass('faktor'),
$('<td>').text(faktor.lehrform_kurzbz || "").addClass('lehrform'),
$('<td>').text(faktor.von).addClass('von'),
$('<td>').text(faktor.bis).addClass('bis'),
$('<td>').append(editButton).addClass('edit'),
@@ -232,6 +239,9 @@ $faktor->loadByLV($lv->lehrveranstaltung_id);
$studiensemester = new studiensemester();
$studiensemester->getAll('desc');
$lehrform = new lehrform();
$lehrform->getAll();
echo '
</head>
@@ -265,6 +275,17 @@ echo '
echo '<option value="'.$sem->studiensemester_kurzbz.'">'.$sem->studiensemester_kurzbz.'</option>';
}
echo '
</select>
<label for="lehrform">Lehrform</label>
<select id="lehrform" name="lehrform">
<option value="">---keine Auswahl---</option>';
foreach ($lehrform->lehrform as $lehrform)
{
echo '<option value="'.$lehrform->lehrform_kurzbz.'">'.$lehrform->bezeichnung.'</option>';
}
echo '
</select>
<button type="submit">'.$p->t('global/speichern').'</button>
@@ -276,6 +297,7 @@ echo '
<thead>
<tr>
<th>'.$p->t('lv/faktor').'</th>
<th>'.$p->t('lvaliste/lehrform').'</th>
<th>'.$p->t('global/von').'</th>
<th>'.$p->t('global/bis').'</th>
<th>'.$p->t('global/bearbeiten').'</th>
@@ -291,6 +313,7 @@ if(count($faktor->lv_faktoren) > 0)
{
echo "<tr data-id=". $lv_faktor->lehrveranstaltung_faktor_id .">
<td class='faktor'>".$lv_faktor->faktor."</td>
<td class='lehrform'>".$lv_faktor->lehrform_kurzbz."</td>
<td class='von'>".$lv_faktor->studiensemester_kurzbz_von."</td>
<td class='bis'>".$lv_faktor->studiensemester_kurzbz_bis."</td>
<td><button class='edit'>".$p->t('global/bearbeiten')."</button></td>