diff --git a/application/controllers/api/frontend/v1/Stundenplan.php b/application/controllers/api/frontend/v1/Stundenplan.php index 0efd32807..7b67dbeb3 100644 --- a/application/controllers/api/frontend/v1/Stundenplan.php +++ b/application/controllers/api/frontend/v1/Stundenplan.php @@ -108,6 +108,8 @@ class Stundenplan extends FHCAPI_Controller * */ public function getStundenplan(){ + // include Student model to fetch Studiengang_kz and Semester + $this->load->model('crm/Student_model', 'StudentModel'); // form validation $this->load->library('form_validation'); @@ -121,8 +123,13 @@ class Stundenplan extends FHCAPI_Controller $start_date = $this->input->get('start_date', TRUE); $end_date = $this->input->get('end_date', TRUE); - // the stundenplan query needs the uid and a start and end date - $stundenplan_data = $this->StundenplanModel->stundenplanGruppierung($this->StundenplanModel->getStundenplanQuery(get_uid(),$start_date,$end_date)); + // get Student_uid / Studiengang_kz / Semester in order to use index idx_stundenplan_datum_stgsem + $student_uid = get_uid(); + $student_data = $this->StudentModel->load([$student_uid]); + $student_data = getData($student_data)[0]; + $this->addMeta('studg',$student_data->studiengang_kz); + $this->addMeta('sem', $student_data->semester); + $stundenplan_data = $this->StundenplanModel->stundenplanGruppierung($this->StundenplanModel->getStundenplanQuery(get_uid(),$start_date,$end_date,$student_data->studiengang_kz,$student_data->semester)); $stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? []; $this->expand_object_information($stundenplan_data); diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index bebbb974f..039b8fdb8 100755 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -192,7 +192,7 @@ class Stundenplan_model extends DB_Model * * @return string */ - public function getStundenplanQuery($uid, $start_date, $end_date){ + public function getStundenplanQuery($uid, $start_date, $end_date,$studiengang_kz,$semester){ return "select sp.* from lehre.vw_stundenplan sp @@ -201,9 +201,12 @@ class Stundenplan_model extends DB_Model left join public.tbl_studentlehrverband slv ON sp.studiengang_kz=slv.studiengang_kz and slv.student_uid=".$this->escape($uid)." and (slv.semester=sp.semester OR sp.semester IS NULL) AND (slv.verband=sp.verband OR sp.verband IS NULL OR sp.verband='' OR sp.verband='0') AND (slv.gruppe=sp.gruppe OR sp.gruppe IS NULL OR sp.gruppe='' OR sp.gruppe='0') AND sp.gruppe_kurzbz IS NULL left join public.tbl_studiensemester ss2 ON slv.studiensemester_kurzbz=ss2.studiensemester_kurzbz AND ss2.start<=sp.datum and ss2.ende >= sp.datum - WHERE ss1.studiensemester_kurzbz IS NOT NULL or ss2.studiensemester_kurzbz IS NOT NULL - AND sp.datum >= ".$this->escape($start_date)." - AND sp.datum <= ".$this->escape($end_date); + WHERE + sp.datum >= ".$this->escape($start_date)." + AND sp.datum <= ".$this->escape($end_date)." + AND sp.studiengang_kz = ".$this->escape($studiengang_kz)." + AND sp.semester = ".$this->escape($semester)." + AND (ss1.studiensemester_kurzbz IS NOT NULL or ss2.studiensemester_kurzbz IS NOT NULL)"; } /**