further progress

This commit is contained in:
Harald Bamberger
2026-10-09 16:07:28 +02:00
parent 8b68e60ae8
commit 682ad7c0e8
3 changed files with 37 additions and 13 deletions
@@ -11,6 +11,7 @@ class LvTermine extends FHCAPI_Controller
parent::__construct([ parent::__construct([
'getStundenplan' => ['admin:r', 'assistenz:r'], 'getStundenplan' => ['admin:r', 'assistenz:r'],
'getStudiensemester' => ['admin:r', 'assistenz:r'], 'getStudiensemester' => ['admin:r', 'assistenz:r'],
'getStundenplanForStudiensemester' => ['admin:r', 'assistenz:r'],
]); ]);
// Load Libraries // Load Libraries
@@ -37,13 +38,33 @@ class LvTermine extends FHCAPI_Controller
$this->getStundenplanbh($uid, '2026-02-04', '2027-02-03', $dbStundenplanTable, $groupConsecutiveHours); $this->getStundenplanbh($uid, '2026-02-04', '2027-02-03', $dbStundenplanTable, $groupConsecutiveHours);
} }
public function getStundenplanForStudiensemester($uid, $studiensemester_kurzbz, $dbStundenplanTable = "stundenplan", $groupConsecutiveHours = false)
{
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$resstudiensemester = getData($this->StudiensemesterModel->getStartEndeFromStudiensemester($studiensemester_kurzbz));
$resnextstudiensemester = getData($this->StudiensemesterModel->getNextFrom($studiensemester_kurzbz));
$studiensemester = ($resstudiensemester && count($resstudiensemester) > 0) ? $resstudiensemester[0] : null;
$studiensemester->studiensemester_kurzbz = $studiensemester_kurzbz;
$nextstudiensemester = ($resnextstudiensemester && count($resnextstudiensemester) > 0) ? $resnextstudiensemester[0] : null;
$this->addMeta('bhsemester', $studiensemester);
$this->addMeta('bhnextsemester', $nextstudiensemester);
$this->getStundenplanbh($uid, $studiensemester, $nextstudiensemester, $dbStundenplanTable, $groupConsecutiveHours);
}
//TODO Build own lib or combine with Controller Stundenplan.php //TODO Build own lib or combine with Controller Stundenplan.php
//here use of logic of Stundenplan.php, extended with parameters uid, grouping, and used dbTable //here use of logic of Stundenplan.php, extended with parameters uid, grouping, and used dbTable
public function getStundenplanbh($uid, $start_date = null, $end_date = null, $dbStundenplanTable = "stundenplan", $groupConsecutiveHours = false) public function getStundenplanbh($uid, $studiensemester, $nextstudiensemester, $dbStundenplanTable = "stundenplan", $groupConsecutiveHours = false)
{ {
$start_date = $studiensemester->start;
$end_date = $nextstudiensemester->ende;
$this->load->library('StundenplanLib');
$ci = get_instance(); $ci = get_instance();
$student_uid = $uid; $student_uid = $uid;
$semester_range = $this->studienSemesterErmitteln($start_date, $end_date); $semester_range = $this->stundenplanlib->studienSemesterErmitteln($start_date, $end_date);
if (isError($semester_range)) if (isError($semester_range))
return $semester_range; return $semester_range;
$semester_range = getData($semester_range); $semester_range = getData($semester_range);
@@ -52,7 +73,7 @@ class LvTermine extends FHCAPI_Controller
$first_semester = $semester_range[0]; $first_semester = $semester_range[0];
$this->sortStudienSemester($semester_range); $this->sortStudienSemester($semester_range);
$function_error = $this->applyLoadUeberSemesterHaelfte($semester_range); $function_error = $this->stundenplanlib->applyLoadUeberSemesterHaelfte($semester_range);
$ci->addMeta('nach_apply_semester_range', $semester_range); $ci->addMeta('nach_apply_semester_range', $semester_range);
if ($function_error) if ($function_error)
return $function_error; return $function_error;
@@ -65,7 +86,7 @@ class LvTermine extends FHCAPI_Controller
// getting the student_lehrverbaende of the student in the different studiensemester // getting the student_lehrverbaende of the student in the different studiensemester
$ci->addMeta('bhsemtest', print_r($semester_range, true)); $ci->addMeta('bhsemtest', print_r($semester_range, true));
/*
$semester_range = array( $semester_range = array(
'SS2026' => array( 'SS2026' => array(
'WS2025' => (object) array( 'WS2025' => (object) array(
@@ -82,14 +103,14 @@ class LvTermine extends FHCAPI_Controller
) )
) )
); );
*/
$student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range); $student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range, $studiensemester->studiensemester_kurzbz, $nextstudiensemester->studiensemester_kurzbz);
//get semester //get semester
if (isError($student_lehrverband)) if (isError($student_lehrverband))
return $student_lehrverband; return $student_lehrverband;
$student_lehrverband = getData($student_lehrverband); $student_lehrverband = getData($student_lehrverband);
/*
$student_lehrverband = array ( $student_lehrverband = array (
'SS2026' => 'SS2026' =>
array ( array (
@@ -122,7 +143,7 @@ class LvTermine extends FHCAPI_Controller
), ),
), ),
); );
*/
$ci->addMeta('studentlehrverbaende', $student_lehrverband); $ci->addMeta('studentlehrverbaende', $student_lehrverband);
$this->load->model('crm/Student_model', 'StudentModel'); $this->load->model('crm/Student_model', 'StudentModel');
@@ -295,7 +316,7 @@ class LvTermine extends FHCAPI_Controller
return success($benutzer_gruppen); return success($benutzer_gruppen);
} }
private function fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range) private function fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range, $studiensemester_kurzbz, $nextstudiensemester_kurzbz)
{ {
$this->load->model('person/Benutzergruppe_model', 'BenutzergruppeModel'); $this->load->model('person/Benutzergruppe_model', 'BenutzergruppeModel');
@@ -322,7 +343,7 @@ class LvTermine extends FHCAPI_Controller
$lehrverband_query_result = getData($lehrverband_query)??[]; $lehrverband_query_result = getData($lehrverband_query)??[];
$converted_studentLehrverband= array_map( $converted_studentLehrverband= array_map(
function ($item) function ($item) use($nextstudiensemester_kurzbz, $studiensemester_kurzbz)
{ {
$result = new stdClass(); $result = new stdClass();
$result->verbandsgruppe = $item->stg . $item->semester . trim($item->verband) . trim($item->gruppe); $result->verbandsgruppe = $item->stg . $item->semester . trim($item->verband) . trim($item->gruppe);
@@ -331,6 +352,7 @@ class LvTermine extends FHCAPI_Controller
$result->verband = $item->verband; $result->verband = $item->verband;
$result->gruppe = $item->gruppe; $result->gruppe = $item->gruppe;
$result->studiensemester_kurzbz = $item->studiensemester_kurzbz; $result->studiensemester_kurzbz = $item->studiensemester_kurzbz;
$result->query_studiensemester_kurzbz = ($item->studiensemester_kurzbz === $nextstudiensemester_kurzbz) ? $studiensemester_kurzbz : $item->studiensemester_kurzbz;
return $result; return $result;
}, },
$lehrverband_query_result); $lehrverband_query_result);
+4 -2
View File
@@ -683,8 +683,9 @@ class StundenplanLib
return success($student_lehrverband); return success($student_lehrverband);
} }
private function applyLoadUeberSemesterHaelfte(&$semester_range) public function applyLoadUeberSemesterHaelfte(&$semester_range)
{ {
$this->_ci = &get_instance();
$this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
/* /*
@@ -812,8 +813,9 @@ class StundenplanLib
} }
} }
private function studienSemesterErmitteln($start_date, $end_date) public function studienSemesterErmitteln($start_date, $end_date)
{ {
$this->_ci = &get_instance();
$this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
// gets all studiensemester from the student from start_date to end_date // gets all studiensemester from the student from start_date to end_date
@@ -557,7 +557,7 @@ class Stundenplan_model extends DB_Model
( (
{$this->escape($lehrverband->verbandsgruppe)} like sp.verbandsgruppe || '%' {$this->escape($lehrverband->verbandsgruppe)} like sp.verbandsgruppe || '%'
and sp.datum between {$this->escape($sem_date_range->start)} and {$this->escape($sem_date_range->ende)} and sp.datum between {$this->escape($sem_date_range->start)} and {$this->escape($sem_date_range->ende)}
and (sp.studiensemester_kurzbz is null or sp.studiensemester_kurzbz = {$this->escape($lehrverband->studiensemester_kurzbz)}) and (sp.studiensemester_kurzbz is null or sp.studiensemester_kurzbz = {$this->escape($lehrverband->query_studiensemester_kurzbz)})
) )
EOCLAUSE; EOCLAUSE;