From ecadec9280adc9d8e671a6e55febc7ad84eaefef Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 8 Apr 2019 17:21:38 +0200 Subject: [PATCH] =?UTF-8?q?Changes=20in=20Models:=20-=20education/Lehreinh?= =?UTF-8?q?eit=5Fmodel=20getLesForLv:=20studiengang=5Fkz=20and=20studienga?= =?UTF-8?q?ng=5Fkuerzel=20of=20lehreinheitgruppen=20is=20also=20retrieved?= =?UTF-8?q?=20-=20education/Lehrveranstaltung=5Fmodel=20getLvsWithIncoming?= =?UTF-8?q?Places:=20=20=20=20--=20Retrieving=20not=20by=20Studienordnung?= =?UTF-8?q?=20G=C3=BCltigkeit,=20but=20by=20tbl=5Fstudienplan=5Fsemester?= =?UTF-8?q?=20=20=20=20--=20retrieving=20lvs=20of=20studiengang=20ECI=20Ca?= =?UTF-8?q?mpus=20International?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/education/Lehreinheit_model.php | 24 +++++-- .../education/Lehrveranstaltung_model.php | 68 +++++++++++-------- 2 files changed, 55 insertions(+), 37 deletions(-) diff --git a/application/models/education/Lehreinheit_model.php b/application/models/education/Lehreinheit_model.php index 737d482f8..7dba40153 100644 --- a/application/models/education/Lehreinheit_model.php +++ b/application/models/education/Lehreinheit_model.php @@ -14,6 +14,7 @@ class Lehreinheit_model extends DB_Model $this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel'); $this->load->model('education/lehreinheitgruppe_model', 'LehreinheitgruppeModel'); $this->load->model('education/lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel'); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); } /** @@ -57,13 +58,22 @@ class Lehreinheit_model extends DB_Model { foreach ($lehreinheitgruppen->retval as $lehreinheitgruppe) { - $letoadd->lehreinheitgruppen[] = array( - 'semester' => $lehreinheitgruppe->semester, - 'verband' => $lehreinheitgruppe->verband, - 'gruppe' => $lehreinheitgruppe->gruppe, - 'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz, - 'direktinskription' => $lehreinheitgruppe->direktinskription - ); + $studiengangresponse = $this->StudiengangModel->load($lehreinheitgruppe->studiengang_kz); + if (hasData($studiengangresponse)) + { + $studiengang = $studiengangresponse->retval[0]; + $stgkuerzel = mb_strtoupper($studiengang->typ . $studiengang->kurzbz); + + $letoadd->lehreinheitgruppen[] = array( + 'semester' => $lehreinheitgruppe->semester, + 'verband' => $lehreinheitgruppe->verband, + 'gruppe' => $lehreinheitgruppe->gruppe, + 'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz, + 'direktinskription' => $lehreinheitgruppe->direktinskription, + 'studiengang_kz' => $lehreinheitgruppe->studiengang_kz, + 'studiengang_kuerzel' => $stgkuerzel + ); + } } } diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index c7455f62e..6813773f3 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -208,11 +208,11 @@ class Lehrveranstaltung_model extends DB_Model * Gets valid Lehrveranstaltungen with incoming places for a Studiensemester. * Only * 1. Lvs with incoming places > 0 - * 2. Studienordnung valid in current semester or with Lehrauftrag (i.e. assigned Lehreinheit) + * 2. Studienplan valid in current semester or with Lehrauftrag (i.e. assigned Lehreinheit) * @param $studiensemester_kurzbz * @return object */ - public function getLvsWithIncomings($studiensemester_kurzbz) + public function getLvsWithIncomingPlaces($studiensemester_kurzbz) { $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); @@ -221,36 +221,44 @@ class Lehrveranstaltung_model extends DB_Model if (!hasData($studsemres)) return success(array()); - $semstart = $studsemres->retval[0]->start; - $semende = $studsemres->retval[0]->ende; - - $parametersarray = array($studiensemester_kurzbz, $studsemres->retval[0]->studienjahr_kurzbz, $semstart, $semende, $studiensemester_kurzbz); + $parametersarray = array($studiensemester_kurzbz, $studsemres->retval[0]->studienjahr_kurzbz, $studiensemester_kurzbz, $studiensemester_kurzbz); $query = " - SELECT lv.*, ? AS studiensemester_kurzbz, ? AS studienjahr_kurzbz, UPPER(stg.typ::varchar(1) || stg.kurzbz) AS studiengang_kuerzel, - stg.bezeichnung AS studiengang_bezeichnung, stg.english AS studiengang_bezeichnung_english, stg.typ, tbl_sprache.locale - FROM lehre.tbl_lehrveranstaltung lv - JOIN public.tbl_studiengang stg ON lv.studiengang_kz = stg.studiengang_kz - JOIN public.tbl_sprache ON lv.sprache = tbl_sprache.sprache - WHERE lv.lehrtyp_kurzbz != 'modul' - AND ( - EXISTS - ( - SELECT 1 FROM - lehre.tbl_studienplan_lehrveranstaltung - JOIN lehre.tbl_studienplan ON tbl_studienplan_lehrveranstaltung.studienplan_id = tbl_studienplan.studienplan_id - JOIN lehre.tbl_studienordnung ON tbl_studienordnung.studienordnung_id = tbl_studienplan.studienordnung_id - JOIN public.tbl_studiensemester semvon ON lehre.tbl_studienordnung.gueltigvon = semvon.studiensemester_kurzbz OR lehre.tbl_studienordnung.gueltigvon IS NULL - JOIN public.tbl_studiensemester sembis ON lehre.tbl_studienordnung.gueltigbis = sembis.studiensemester_kurzbz OR lehre.tbl_studienordnung.gueltigbis IS NULL - WHERE tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id = lv.lehrveranstaltung_id - AND (?::date >= semvon.start OR semvon.start IS NULL) AND (?::date <= sembis.ende OR sembis.ende IS NULL) - ) - OR EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = lv.lehrveranstaltung_id AND studiensemester_kurzbz = ?) - ) - AND lv.incoming > 0 - AND lv.aktiv - AND stg.typ IN ('b', 'm') - ORDER BY studiengang_kuerzel, orgform_kurzbz, lv.bezeichnung, lv.lehrform_kurzbz, lv.lehrveranstaltung_id + SELECT * FROM ( + SELECT DISTINCT ON (lv.lehrveranstaltung_id) lv.lehrveranstaltung_id, lv.bezeichnung AS lv_bezeichnung, lv.kurzbz AS lv_kurzbz, lv.sprache, lv.ects, lv.lehre, + lv.lehreverzeichnis, lv.sws, lv.lvs, lv.alvs, lv.lvps, lv.las, lv.incoming, lv.lehrform_kurzbz, lv.orgform_kurzbz AS lv_orgform, lv.semester, + ? AS studiensemester_kurzbz, ? AS studienjahr_kurzbz, UPPER(stg.typ::VARCHAR(1) || stg.kurzbz) AS studiengang_kuerzel, + stg.bezeichnung AS studiengang_bezeichnung, stg.english AS studiengang_bezeichnung_english, stg.typ, stg.orgform_kurzbz AS studiengang_orgform, + tbl_sprache.locale, CASE WHEN lv.orgform_kurzbz NOTNULL THEN lv.orgform_kurzbz ELSE stg.orgform_kurzbz END AS orgform_kurzbz + FROM lehre.tbl_lehrveranstaltung lv + JOIN public.tbl_studiengang stg ON lv.studiengang_kz = stg.studiengang_kz + JOIN public.tbl_sprache ON lv.sprache = tbl_sprache.sprache + WHERE lv.lehrtyp_kurzbz != 'modul' + AND ( + EXISTS + ( + WITH gueltige_studienplaene AS ( + SELECT studienplan_id, semester + FROM lehre.tbl_studienplan + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + WHERE tbl_studienplan.aktiv + AND lehre.tbl_studienplan_semester.studiensemester_kurzbz = ? + ) + SELECT 1 + FROM lehre.tbl_studienplan_lehrveranstaltung + WHERE tbl_studienplan_lehrveranstaltung.studienplan_id IN (SELECT studienplan_id FROM gueltige_studienplaene) + AND tbl_studienplan_lehrveranstaltung.semester IN + (SELECT semester FROM gueltige_studienplaene + WHERE gueltige_studienplaene.studienplan_id = tbl_studienplan_lehrveranstaltung.studienplan_id) + AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id = lv.lehrveranstaltung_id + ) + OR EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = lv.lehrveranstaltung_id AND studiensemester_kurzbz = ?) + ) + AND lv.incoming > 0 + AND lv.aktiv + AND (stg.typ IN ('b', 'm') OR stg.studiengang_kz = 10006)-- ECI Studiengang Campus International + ) lvs + ORDER BY studiengang_kuerzel, orgform_kurzbz, lv_bezeichnung, lehrform_kurzbz, lehrveranstaltung_id; "; return $this->execQuery($query, $parametersarray);