From fb9f4e046ba574dc17fe51ded63c287624f00aa1 Mon Sep 17 00:00:00 2001 From: bison-paolo Date: Fri, 23 Dec 2016 12:03:49 +0100 Subject: [PATCH] Added getAppliedStudiengang method --- .../api/v1/organisation/Studiengang2.php | 29 ++++++++++++ .../models/organisation/Studiengang_model.php | 47 +++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/application/controllers/api/v1/organisation/Studiengang2.php b/application/controllers/api/v1/organisation/Studiengang2.php index c589d6a1e..1c64e223d 100644 --- a/application/controllers/api/v1/organisation/Studiengang2.php +++ b/application/controllers/api/v1/organisation/Studiengang2.php @@ -80,4 +80,33 @@ class Studiengang2 extends APIv1_Controller $this->response($result, REST_Controller::HTTP_OK); } + + /** + * @return void + */ + public function getAppliedStudiengang() + { + $person_id = $this->get('person_id'); + $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); + $titel = $this->get('titel'); + $status_kurzbz = $this->get('status_kurzbz'); + + if (isset($person_id) && isset($studiensemester_kurzbz) && isset($titel) && isset($status_kurzbz)) + { + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + + $result = $this->StudiengangModel->getAppliedStudiengang( + $person_id, + $studiensemester_kurzbz, + $titel, + $status_kurzbz + ); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } } \ No newline at end of file diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index b5b0fb435..f4eaa0437 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -178,4 +178,51 @@ class Studiengang_model extends DB_Model return $result; } + + /** + * TODO + */ + public function getAppliedStudiengang($person_id, $studiensemester_kurzbz, $titel, $status_kurzbz) + { + // Then join with table + $this->addJoin('public.tbl_prestudent', 'studiengang_kz'); + // Join table + $this->addJoin('public.tbl_prestudentstatus', 'prestudent_id'); + // Then join with table + $this->addJoin('lehre.tbl_studienplan', 'studienplan_id'); + // Then join with table + $this->addJoin( + '( + SELECT * + FROM public.tbl_notizzuordnung INNER JOIN public.tbl_notiz n USING(notiz_id) + WHERE n.titel = \''.$titel.'\') tbl_nn', + 'prestudent_id', + 'LEFT' + ); + + // Ordering by studiengang_kz and studienplan_id + $this->addOrder('public.tbl_studiengang.bezeichnung'); + + $result = $this->loadTree( + 'tbl_studiengang', + array( + 'tbl_prestudent', + 'tbl_prestudentstatus', + 'tbl_studienplan', + 'tbl_nn' + ), + 'public.tbl_prestudent.person_id = '.$person_id. + ' AND public.tbl_prestudentstatus.studiensemester_kurzbz = \''.$studiensemester_kurzbz.'\''. + ' AND (public.tbl_prestudentstatus.status_kurzbz = \'Interessent\' OR public.tbl_prestudentstatus.status_kurzbz = \'Bewerber\')' + , + array( + 'prestudenten', + 'prestudentstatus', + 'studienplaene', + 'notizen' + ) + ); + + return $result; + } } \ No newline at end of file