diff --git a/application/controllers/api/v1/organisation/Studiengang2.php b/application/controllers/api/v1/organisation/Studiengang2.php index 83d60abb1..bea2f218e 100644 --- a/application/controllers/api/v1/organisation/Studiengang2.php +++ b/application/controllers/api/v1/organisation/Studiengang2.php @@ -11,23 +11,27 @@ * @filesource */ // ------------------------------------------------------------------------ -if (!defined("BASEPATH")) exit("No direct script access allowed"); +if (!defined('BASEPATH')) exit('No direct script access allowed'); class Studiengang2 extends APIv1_Controller { /** - * Course API constructor. + * */ public function __construct() { parent::__construct(); + // Load model PersonModel - $this->load->model("organisation/studiengang_model", "StudiengangModel"); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); } + /** + * getStudiengang + */ public function getStudiengang() { - $studiengang_kz = $this->get("studiengang_kz"); + $studiengang_kz = $this->get('studiengang_kz'); if (isset($studiengang_kz)) { @@ -41,28 +45,31 @@ class Studiengang2 extends APIv1_Controller } } + /** + * getAllForBewerbung + */ public function getAllForBewerbung() { $this->response($this->StudiengangModel->getAllForBewerbung(), REST_Controller::HTTP_OK); } /** - * Method getStudiengangStudienplan + * getStudiengangStudienplan */ public function getStudiengangStudienplan() { // Getting HTTP GET parameters - $studiensemester_kurzbz = $this->get("studiensemester_kurzbz"); - $ausbildungssemester = $this->get("ausbildungssemester"); - $aktiv = $this->get("aktiv"); - $onlinebewerbung = $this->get("onlinebewerbung"); + $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); + $ausbildungssemester = $this->get('ausbildungssemester'); + $aktiv = $this->get('aktiv'); + $onlinebewerbung = $this->get('onlinebewerbung'); // If $studiensemester_kurzbz and $ausbildungssemester are present if (isset($studiensemester_kurzbz) && isset($ausbildungssemester)) { // Check & set - if (!isset($aktiv)) $aktiv = "TRUE"; - if (!isset($onlinebewerbung)) $onlinebewerbung = "TRUE"; + if (!isset($aktiv)) $aktiv = 'TRUE'; + if (!isset($onlinebewerbung)) $onlinebewerbung = 'TRUE'; $result = $this->StudiengangModel->getStudienplan($studiensemester_kurzbz, $ausbildungssemester, $aktiv, $onlinebewerbung); @@ -74,15 +81,20 @@ class Studiengang2 extends APIv1_Controller } } + /** + * getStudiengangBewerbung + */ public function getStudiengangBewerbung() { - $result = $this->StudiengangModel->getStudiengangBewerbung(); + $oe_kurzbz = $this->get('oe_kurzbz'); + + $result = $this->StudiengangModel->getStudiengangBewerbung($oe_kurzbz); $this->response($result, REST_Controller::HTTP_OK); } /** - * @return void + * getAppliedStudiengang */ public function getAppliedStudiengang() { @@ -109,7 +121,7 @@ class Studiengang2 extends APIv1_Controller } /** - * @return void + * getAppliedStudiengangFromNow */ public function getAppliedStudiengangFromNow() { @@ -134,7 +146,7 @@ class Studiengang2 extends APIv1_Controller } /** - * @return void + * getAppliedStudiengangFromNowOE */ public function getAppliedStudiengangFromNowOE() { diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index 4755408be..36e4b6992 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -138,7 +138,7 @@ class Studiengang_model extends DB_Model /** * getStudiengangBewerbung */ - public function getStudiengangBewerbung() + public function getStudiengangBewerbung($oe_kurzbz = null) { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; @@ -161,21 +161,45 @@ class Studiengang_model extends DB_Model $this->addOrder('public.tbl_studiengang.bezeichnung'); $this->addOrder('lehre.tbl_studienplan.studienplan_id'); + $where = 'public.tbl_studiengang.aktiv = TRUE + AND public.tbl_studiengang.onlinebewerbung = TRUE + AND ( + (tbl_bewerbungstermine.beginn <= NOW() AND tbl_bewerbungstermine.ende >= NOW()) + OR tbl_bewerbungstermine.beginn IS NULL + ) + AND ss.studiensemester_kurzbz IN ( + SELECT DISTINCT studiensemester_kurzbz + FROM public.tbl_bewerbungstermine + WHERE beginn <= NOW() AND ende >= NOW() + ) + AND ss.semester = 1 + AND lehre.tbl_studienplan.aktiv = TRUE'; + + if ($oe_kurzbz != null) + { + $where .= ' AND public.tbl_studiengang.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = '.$this->escape($oe_kurzbz).' + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )'; + } + $result = $this->loadTree( 'public.tbl_studiengang', array( 'lehre.tbl_studienplan', 'lehre.tbl_akadgrad' ), - 'public.tbl_studiengang.aktiv = TRUE - AND public.tbl_studiengang.onlinebewerbung = TRUE - AND ((tbl_bewerbungstermine.beginn <= NOW() AND tbl_bewerbungstermine.ende >= NOW()) OR tbl_bewerbungstermine.beginn IS NULL) - AND ss.studiensemester_kurzbz IN ( - SELECT DISTINCT studiensemester_kurzbz FROM public.tbl_bewerbungstermine WHERE beginn <= NOW() AND ende >= NOW() - ) - AND ss.semester = 1 - AND lehre.tbl_studienplan.aktiv = TRUE' - , + $where, array( 'studienplaene', 'akadgrad'