mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-18 15:32:17 +00:00
prototyp fuer die Stundenplan query fuer Studierende
This commit is contained in:
@@ -108,8 +108,15 @@ class Stundenplan extends FHCAPI_Controller
|
||||
*
|
||||
*/
|
||||
public function getStundenplan(){
|
||||
|
||||
// Query fuer Studenten prototyp ok
|
||||
//TODO: getStundenplan fuer Mitarbeiter anpassen
|
||||
//TODO: viele edge cases die es nicht moeglich machen besseren tbl_stundenplan index zu verwenden als idx_stundenplan_datum
|
||||
|
||||
// include Student model to fetch Studiengang_kz and Semester
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
|
||||
|
||||
// form validation
|
||||
$this->load->library('form_validation');
|
||||
@@ -128,7 +135,8 @@ class Stundenplan extends FHCAPI_Controller
|
||||
$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);
|
||||
$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) ?? [];
|
||||
|
||||
|
||||
@@ -193,20 +193,51 @@ class Stundenplan_model extends DB_Model
|
||||
* @return string
|
||||
*/
|
||||
public function getStundenplanQuery($uid, $start_date, $end_date,$studiengang_kz,$semester){
|
||||
return
|
||||
"select sp.*
|
||||
from lehre.vw_stundenplan sp
|
||||
left join public.tbl_benutzergruppe bg ON sp.gruppe_kurzbz=bg.gruppe_kurzbz AND bg.uid =".$this->escape($uid)."
|
||||
left join public.tbl_studiensemester ss1 ON bg.studiensemester_kurzbz=ss1.studiensemester_kurzbz AND ss1.start <=sp.datum AND ss1.ende>= sp.datum
|
||||
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
|
||||
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)";
|
||||
|
||||
$studiensemester = null;
|
||||
|
||||
$check_with_start_date = $this->execReadOnlyQuery("SELECT * FROM public.tbl_studiensemester WHERE " . $this->escape($start_date) . " BETWEEN start AND ende ;");
|
||||
$check_with_start_date = getData($check_with_start_date);
|
||||
if (count($check_with_start_date)>0)
|
||||
{
|
||||
$studiensemester = current($check_with_start_date)->studiensemester_kurzbz;
|
||||
}
|
||||
else
|
||||
{
|
||||
$check_with_end_date = $this->execReadOnlyQuery("SELECT * FROM public.tbl_studiensemester WHERE " . $this->escape($end_date) . " BETWEEN start AND ende ;");
|
||||
$check_with_end_date = getData($check_with_end_date);
|
||||
if (count($check_with_start_date) > 0)
|
||||
{
|
||||
$studiensemester = current($check_with_end_date)->studiensemester_kurzbz;
|
||||
}
|
||||
}
|
||||
|
||||
if(!is_null($studiensemester))
|
||||
{
|
||||
$semester_with_studiensemester = $this->execReadOnlyQuery("SELECT * FROM public.tbl_studentlehrverband WHERE student_uid = " . $this->escape($uid) . " AND studiensemester_kurzbz = " . $this->escape($studiensemester));
|
||||
$semester_with_studiensemester = getData($semester_with_studiensemester);
|
||||
$semester_with_studiensemester = current($semester_with_studiensemester)->semester;
|
||||
|
||||
return
|
||||
"select sp.*
|
||||
from lehre.vw_stundenplan sp
|
||||
left join public.tbl_benutzergruppe bg ON sp.gruppe_kurzbz=bg.gruppe_kurzbz AND bg.uid =".$this->escape($uid)."
|
||||
left join public.tbl_studiensemester ss1 ON bg.studiensemester_kurzbz=ss1.studiensemester_kurzbz AND ss1.start <=sp.datum AND ss1.ende>= sp.datum
|
||||
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
|
||||
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_with_studiensemester)."
|
||||
AND (ss1.studiensemester_kurzbz IS NOT NULL or ss2.studiensemester_kurzbz IS NOT NULL)";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return error("studiensemester could not be retrieved with the student_uid: ".$uid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user