. */ if (! defined('BASEPATH')) exit('No direct script access allowed'); class Studium extends FHCAPI_Controller { /** * Object initialization */ public function __construct() { parent::__construct([ 'getStudienAllSemester'=> self::PERM_LOGGED, 'getStudiengaengeForStudienSemester'=> self::PERM_LOGGED, 'getStudienplaeneBySemester'=> self::PERM_LOGGED, ]); $this->load->model('crm/Student_model', 'StudentModel'); $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); $this->load->model('organisation/Studienordnung_model','StudienordnungModel'); $this->load->model('organisation/Studiensemester_model',"StudiensemesterModel"); $this->load->model('organisation/Studienplan_model', 'StudienplanModel'); $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel'); $this->load->model('codex/Orgform_model','OrgformModel'); } //------------------------------------------------------------------------------------------------------------------ // Public methods public function getStudienAllSemester(){ $parameter_studiensemester = $this->input->get('studiensemester',true); $parameter_studiengang = $this->input->get('studiengang',true); $parameter_semester = $this->input->get('semester',true); $parameter_studienplan = $this->input->get('studienplan',true); $test1=null; $test2=null; $test3=null; $test4=null; if(isset($parameter_studiensemester)){ $parameter_studiensemester = current($this->getDataOrTerminateWithError($this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz" => $parameter_studiensemester]))); } if(isset($parameter_studiengang)){ $parameter_studiengang = current($this->getDataOrTerminateWithError($this->StudiengangModel->loadWhere(["studiengang_kz" => $parameter_studiengang]))); } if(isset($parameter_studienplan)){ $this->StudienplanModel->addJoin("lehre.tbl_studienordnung", "studienordnung_id"); $this->StudienplanModel->addJoin("lehre.tbl_studienplan_semester", "studienplan_id"); $parameter_studienplan = $this->StudienplanModel->loadWhere(["studienplan_id" => $parameter_studienplan, "aktiv" => TRUE]); $parameter_studienplan = current($this->getDataOrTerminateWithError($parameter_studienplan)); } // fetch studiensemester $allStudienSemester = $this->getDataOrTerminateWithError($this->StudiensemesterModel->load()); $aktuelles_studiensemester = current($this->getDataOrTerminateWithError($this->StudiensemesterModel->getAkt())); if(isset($parameter_studiensemester) && !empty(array_filter($allStudienSemester, function($studiensemester) use($parameter_studiensemester){ return $studiensemester->studiensemester_kurzbz == $parameter_studiensemester->studiensemester_kurzbz; }))){ $test1=true; $aktuelles_studiensemester = $parameter_studiensemester; } // fetch studiengaenge $studiengaenge = $this->computeStudiengaenge($aktuelles_studiensemester->studiensemester_kurzbz); $aktuelles_studiengang = current($studiengaenge); if(!$aktuelles_studiengang){ $aktuelles_studiengang = null; } if(isset($parameter_studiengang) && !empty(array_filter( $studiengaenge,function($studiengang)use($parameter_studiengang){ return $studiengang->studiengang_kz == $parameter_studiengang->studiengang_kz; }))){ $test2=true; $aktuelles_studiengang = $parameter_studiengang; } // compute semester and studienplaene if($aktuelles_studiengang){ $studienplaene = $this->computeStudienplaene($aktuelles_studiengang->studiengang_kz, $aktuelles_studiensemester->studiensemester_kurzbz); }else{ $studienplaene =[]; } $semester = array_values(array_unique(array_map(function($item){ return $item->semester; }, $studienplaene))); $aktuelles_semester = current($semester); if(!$aktuelles_semester){ $aktuelles_semester = null; } if(isset($parameter_semester) && in_array($parameter_semester, $semester)){ $test3=true; $aktuelles_semester = $parameter_semester; } $semester_studienplan = array_filter($studienplaene, function($item) use($aktuelles_semester){ return $item->semester == $aktuelles_semester; }); // fetch current studienplan based on semester $aktuelles_studienplan = current($semester_studienplan); if(!$aktuelles_studienplan){ $aktuelles_studienplan = null; } if(isset($parameter_studienplan) && !empty(array_filter( $semester_studienplan, function($stundenplan) use($parameter_studienplan){ return $stundenplan->studienplan_id == $parameter_studienplan->studienplan_id; }))){ $test4=true; $aktuelles_studienplan = $parameter_studienplan ; } // result object $result = new stdClass(); $result->studienSemester = []; $result->studienSemester["all"]= $allStudienSemester; $result->studienSemester["preselected"]=$aktuelles_studiensemester; $result->studiengang["all"]=$studiengaenge; $result->studiengang["preselected"]=$aktuelles_studiengang; $result->semester["all"] =$semester; $result->semester["preselected"] =$aktuelles_semester; $result->studienplan["all"]=$semester_studienplan; $result->studienplan["preselected"]=$aktuelles_studienplan; $result->test1=$test1; $result->test2=$test2; $result->test3=$test3; $result->test4=$test4; /* if($this->getDataOrTerminateWithError($this->StudentModel->isStudent(getAuthUID()))){ $studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $aktuelles_studiensemester_kz]); $studentLehrverband = current($this->getDataOrTerminateWithError($studentLehrverband)); $result->studentLehrverband = $studentLehrverband; //$currentStudienplan = $this->StudienplanModel->loadWhere(["studiengang_kz"=>$studentLehrverband->studiengang_kz,"semester"=>$studentLehrverband->semester, "verband"=>$studentLehrverband->verband, "gruppe"=>$studentLehrverband->gruppe]); $studienplaene = $this->getDataOrTerminateWithError($this->computeStudienplaene($studentLehrverband->studiengang_kz, $studentLehrverband->studiensemester_kurzbz)); $result->studienPleane = $studienplaene; //get the studienplan for the user $preselectedStudienplan = $this->getStudienPlanFromPrestudentStatus(getAuthPersonId()); //set the preselected semester $preselectedSemester = $preselectedStudienplan->semester; //get the studienordnung for the studienplan $preselectedStudienordnung = $this->getStudienOrdnungForStudienplan($preselectedStudienplan->studienplan_id); } */ $this->terminateWithSuccess($result); } public function getStudiengaengeForStudienSemester($studiensemester){ $studiengaenge = $this->computeStudiengaenge($studiensemester); $this->terminateWithSuccess($studiengaenge); } public function getStudienplaeneBySemester(){ $this->load->library('form_validation'); $this->form_validation->set_data($this->input->get()); $this->form_validation->set_rules('studiengang', 'studiengang', 'required'); $this->form_validation->set_rules('studiensemester', 'studiensemester', 'required'); if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array()); $studiengang = $this->input->get('studiengang',true); $studiensemester = $this->input->get('studiensemester',true); $studienplaene = $this->computeStudienplaene($studiengang, $studiensemester); $this->terminateWithSuccess($studienplaene); } //------------------------------------------------------------------------------------------------------------------ // Private methods private function computeStudienplaene($studiengang, $studiensemester){ $studienplaene = $this->StudienplanModel->getStudienplaeneBySemester($studiengang, $studiensemester); $studienplaene = $this->getDataOrTerminateWithError($studienplaene); $studienplaene = array_map(function($studienplan){ $orgform = current($this->getDataOrTerminateWithError($this->OrgformModel->loadWhere(["orgform_kurzbz" => $studienplan->orgform_kurzbz]))); $studienplan->orgform_bezeichnung = $orgform->bezeichnung; return $studienplan; },$studienplaene); return $studienplaene; } private function computeStudiengaenge($studiensemester){ $studiengang_studiensemester_result = $this->StudiengangModel->getStudiengaengeByStudiensemester($studiensemester); $studiengang_studiensemester_result = $this->getDataOrTerminateWithError($studiengang_studiensemester_result); return $studiengang_studiensemester_result; } private function getStudienPlanFromPrestudentStatus($person_id){ $studienplan_id = current($this->getDataOrTerminateWithError($this->PrestudentstatusModel->getLastStatusPerson($person_id)))->studienplan_id; $studienplan =current($this->getDataOrTerminateWithError($this->StudienplanModel->loadWhere(["studienplan_id"=>$studienplan_id]))); return $studienplan; } }