Ferienverwaltung: CI code: made completely independent from studiengang, legacy code: made backwards compatible by including oe_kurzbz where applicable

This commit is contained in:
Alexei Karpenko
2026-05-25 13:52:05 +02:00
parent 179386bea9
commit bfdec12c0e
3 changed files with 10 additions and 44 deletions
@@ -27,7 +27,6 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
class Ferien extends FHCAPI_Controller
{
const DEFAULT_BERECHTIGUNG = 'basis/ferien';
const DEFAULT_STUDIENGANG_KZ = 0;
/**
* Calls the parent's constructor and prepares libraries and phrases
@@ -40,7 +39,6 @@ class Ferien extends FHCAPI_Controller
'getOe' => self::DEFAULT_BERECHTIGUNG.':r',
'getStudienplaene' => self::DEFAULT_BERECHTIGUNG.':r',
'getFerientypen' => self::DEFAULT_BERECHTIGUNG.':r',
'getStg' => self::DEFAULT_BERECHTIGUNG.':r',
'insert' => self::DEFAULT_BERECHTIGUNG.':w',
'update' => self::DEFAULT_BERECHTIGUNG.':w',
'delete' => self::DEFAULT_BERECHTIGUNG.':w'
@@ -78,10 +76,9 @@ class Ferien extends FHCAPI_Controller
$this->FerienModel->addSelect(
'tbl_ferien.ferien_id, tbl_ferien.bezeichnung, tbl_ferien.vondatum, tbl_ferien.bisdatum,
plan.studienplan_id, stg.studiengang_kz, oe.oe_kurzbz, fetyp.ferientyp_kurzbz,
oe.bezeichnung AS oe_bezeichnung, UPPER(stg.typ::varchar(1) || stg.kurzbz) AS studiengang_kuerzel,
plan.studienplan_id, plan.bezeichnung AS studienplan_bezeichnung, fetyp.mitarbeiter AS mitarbeiterrelevant, fetyp.studierende AS studierendenrelevant,
fetyp.lehre'
plan.studienplan_id, oe.oe_kurzbz, fetyp.ferientyp_kurzbz, oe.bezeichnung AS oe_bezeichnung,
plan.studienplan_id, plan.bezeichnung AS studienplan_bezeichnung, fetyp.mitarbeiter AS mitarbeiterrelevant,
fetyp.studierende AS studierendenrelevant, fetyp.lehre'
);
$this->FerienModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
$this->FerienModel->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
@@ -226,20 +223,6 @@ class Ferien extends FHCAPI_Controller
$this->terminateWithSuccess($data);
}
/**
* Get list of Studiengaenge
*/
public function getStg()
{
$this->StudiengangModel->addSelect(' tbl_studiengang.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel');
$this->StudiengangModel->addOrder('typ, kurzbz');
$result = $this->StudiengangModel->loadWhere(['aktiv' => true]);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
/**
* Add Ferien
*/
@@ -253,13 +236,6 @@ class Ferien extends FHCAPI_Controller
if (!$this->permissionlib->isBerechtigt(self::DEFAULT_BERECHTIGUNG, 'suid', $data['oe_kurzbz']))
return $this->terminateWithError($this->p->t('ui', 'keineBerechtigung'));
// get studiengang_kz from oe, otherwise default kz
$this->StudiengangModel->addSelect('studiengang_kz');
$this->StudiengangModel->addLimit(1);
$result = $this->StudiengangModel->loadWhere(['oe_kurzbz' => $data['oe_kurzbz']]);
$data['studiengang_kz'] = hasData($result) ? getData($result)[0]->studiengang_kz : self::DEFAULT_STUDIENGANG_KZ;
$data = array_merge($data, ['insertamum' => date('c'), 'insertvon' => getAuthUID()]);
$id = $this->getDataOrTerminateWithError($this->FerienModel->insert($data));
@@ -353,8 +329,7 @@ class Ferien extends FHCAPI_Controller
{
if (isset($ferien_id))
{
$this->FerienModel->addSelect('tbl_ferien.oe_kurzbz, stg.oe_kurzbz AS studiengang_oe_kurzbz, studiengang_kz');
$this->FerienModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
$this->FerienModel->addSelect('oe_kurzbz');
$result = $this->FerienModel->load($ferien_id);
if (isError($result)) return $this->terminateWithError(getError($result));
@@ -363,12 +338,7 @@ class Ferien extends FHCAPI_Controller
{
$ferien = getData($result)[0];
if (isset($ferien->oe_kurzbz))
$berechtigung_oe_kurzbz = $ferien->oe_kurzbz;
elseif (isset($ferien->studiengang_oe_kurzbz))
$berechtigung_oe_kurzbz = $ferien->studiengang_oe_kurzbz;
if ($this->permissionlib->isBerechtigt(self::DEFAULT_BERECHTIGUNG, $typ, $berechtigung_oe_kurzbz)) return;
if ($this->permissionlib->isBerechtigt(self::DEFAULT_BERECHTIGUNG, $typ, $ferien->oe_kurzbz)) return;
}
}
@@ -49,12 +49,6 @@ export default {
url: 'api/frontend/v1/education/ferien/getFerientypen'
};
},
getStg() {
return {
method: 'get',
url: 'api/frontend/v1/education/ferien/getStg'
};
},
getDefaultVonBis() {
return {
method: 'get',
+5 -3
View File
@@ -125,11 +125,13 @@
}
else
{
$sql_query="INSERT INTO lehre.tbl_ferien (studiengang_kz, bezeichnung, vondatum, bisdatum) VALUES(
$sql_query="INSERT INTO lehre.tbl_ferien (studiengang_kz, bezeichnung, vondatum, bisdatum, oe_kurzbz) VALUES(
".$db->db_add_param($_POST['studiengang_kz'], FHC_INTEGER).",
".$db->db_add_param($_POST['bezeichnung']).",
".$db->db_add_param($datum_obj->formatDatum($_POST['vondatum'],'Y-m-d')).",
".$db->db_add_param($datum_obj->formatDatum($_POST['bisdatum'],'Y-m-d')).");";
".$db->db_add_param($datum_obj->formatDatum($_POST['bisdatum'],'Y-m-d')).",
CASE WHEN ".$db->db_add_param($_POST['studiengang_kz'], FHC_INTEGER)." = 0 THEN NULL
ELSE (SELECT oe_kurzbz FROM public.tbl_studiengang WHERE studiengang_kz = ".$db->db_add_param($_POST['studiengang_kz'], FHC_INTEGER).") END);";
//echo $sql_query;
$db->db_query($sql_query);
$stg_kz = $_POST['studiengang_kz'];
@@ -251,7 +253,7 @@
{
echo '
<tr>
<td>'.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).'</td>
<td>'.$db->convert_html_chars($stg_arr[$row->studiengang_kz] ?? '').'</td>
<td>'.$db->convert_html_chars($row->vondatum).'</td>
<td>'.$db->convert_html_chars($row->bisdatum).'</td>
<td>'.$db->convert_html_chars($row->bezeichnung).'</td>';