Changes in Models:

- education/Lehreinheit_model getLesForLv: studiengang_kz and studiengang_kuerzel of lehreinheitgruppen is also retrieved
- education/Lehrveranstaltung_model getLvsWithIncomingPlaces:
   -- Retrieving not by Studienordnung Gültigkeit, but by tbl_studienplan_semester
   -- retrieving lvs of studiengang ECI Campus International
This commit is contained in:
alex
2019-04-08 17:21:38 +02:00
parent c649bf3fbe
commit ecadec9280
2 changed files with 55 additions and 37 deletions
@@ -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
);
}
}
}
@@ -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);