mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 06:54:04 +00:00
Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b68e60ae8 | ||
|
|
bdf8b3c609 | ||
|
|
f616d70a5d | ||
|
|
e70449046e | ||
|
|
53e64cc83f | ||
|
|
4f8ffa1228 | ||
|
|
a826bd7bc7 | ||
|
|
6324c3d467 | ||
|
|
377c53cf60 |
@@ -32,37 +32,129 @@ class LvTermine extends FHCAPI_Controller
|
||||
$this->load->model('person/Benutzergruppe_model', 'BenutzergruppeModel');
|
||||
}
|
||||
|
||||
//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
|
||||
public function getStundenplan($uid, $start_date = null, $end_date = null, $dbStundenplanTable = "stundenplan", $groupConsecutiveHours = false)
|
||||
{
|
||||
$this->getStundenplanbh($uid, '2026-02-04', '2027-02-03', $dbStundenplanTable, $groupConsecutiveHours);
|
||||
}
|
||||
|
||||
//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
|
||||
public function getStundenplanbh($uid, $start_date = null, $end_date = null, $dbStundenplanTable = "stundenplan", $groupConsecutiveHours = false)
|
||||
{
|
||||
$ci = get_instance();
|
||||
$student_uid = $uid;
|
||||
$semester_range = $this->studienSemesterErmitteln($start_date, $end_date);
|
||||
if (isError($semester_range))
|
||||
return $semester_range;
|
||||
$semester_range = getData($semester_range);
|
||||
$ci->addMeta('semester_range', $semester_range);
|
||||
|
||||
$first_semester = $semester_range[0];
|
||||
|
||||
$this->sortStudienSemester($semester_range);
|
||||
$this->applyLoadUeberSemesterHaelfte($semester_range);
|
||||
$function_error = $this->applyLoadUeberSemesterHaelfte($semester_range);
|
||||
$ci->addMeta('nach_apply_semester_range', $semester_range);
|
||||
if ($function_error)
|
||||
return $function_error;
|
||||
|
||||
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($semester_range, $student_uid);
|
||||
$student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($semester_range, $student_uid);
|
||||
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range);
|
||||
if (isError($benutzer_gruppen))
|
||||
return $benutzer_gruppen;
|
||||
$benutzer_gruppen = getData($benutzer_gruppen);
|
||||
$ci->addMeta('spezialgruppen', $benutzer_gruppen);
|
||||
// getting the student_lehrverbaende of the student in the different studiensemester
|
||||
|
||||
if(!$groupConsecutiveHours)
|
||||
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery(
|
||||
$start_date,
|
||||
$end_date,
|
||||
$semester_range,
|
||||
$benutzer_gruppen,
|
||||
$student_lehrverband
|
||||
);
|
||||
else
|
||||
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery(
|
||||
$start_date,
|
||||
$end_date,
|
||||
$semester_range,
|
||||
$benutzer_gruppen,
|
||||
$student_lehrverband,
|
||||
true,
|
||||
$dbStundenplanTable
|
||||
);
|
||||
$ci->addMeta('bhsemtest', print_r($semester_range, true));
|
||||
|
||||
$semester_range = array(
|
||||
'SS2026' => array(
|
||||
'WS2025' => (object) array(
|
||||
'start' => '2026-02-04',
|
||||
'ende' => '2026-05-19'
|
||||
),
|
||||
'SS2026' => (object) array(
|
||||
'start' => '2026-02-04',
|
||||
'ende' => '2026-11-15'
|
||||
),
|
||||
'WS2026' => (object) array(
|
||||
'start' => '2026-09-01',
|
||||
'ende' => '2027-02-03'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range);
|
||||
|
||||
//get semester
|
||||
if (isError($student_lehrverband))
|
||||
return $student_lehrverband;
|
||||
$student_lehrverband = getData($student_lehrverband);
|
||||
|
||||
$student_lehrverband = array (
|
||||
'SS2026' =>
|
||||
array (
|
||||
0 =>
|
||||
(object) array(
|
||||
'verbandsgruppe' => 'BEE1A',
|
||||
'studiengang_kz' => 476,
|
||||
'semester' => 1,
|
||||
'verband' => 'A',
|
||||
'gruppe' => ' ',
|
||||
'studiensemester_kurzbz' => 'WS2025',
|
||||
),
|
||||
1 =>
|
||||
(object) array(
|
||||
'verbandsgruppe' => 'BEE2A',
|
||||
'studiengang_kz' => 476,
|
||||
'semester' => 2,
|
||||
'verband' => 'A',
|
||||
'gruppe' => ' ',
|
||||
'studiensemester_kurzbz' => 'SS2026',
|
||||
),
|
||||
2 =>
|
||||
(object) array(
|
||||
'verbandsgruppe' => 'BEE3A',
|
||||
'studiengang_kz' => 476,
|
||||
'semester' => 3,
|
||||
'verband' => 'A',
|
||||
'gruppe' => ' ',
|
||||
'studiensemester_kurzbz' => 'SS2026',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
$ci->addMeta('studentlehrverbaende', $student_lehrverband);
|
||||
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->StudentModel->addSelect('ausbildungssemester');
|
||||
$this->StudentModel->addJoin('public.tbl_prestudentstatus ps', 'prestudent_id');
|
||||
$result = $this->StudentModel->loadWhere(array(
|
||||
"student_uid"=>$student_uid,
|
||||
'studiensemester_kurzbz' => $first_semester,
|
||||
));
|
||||
if (isError($result))
|
||||
$semesterStud = null;
|
||||
if(hasData($result)){
|
||||
$result = getData($result);
|
||||
$data = current($result);
|
||||
$semesterStud = $data->ausbildungssemester;
|
||||
}
|
||||
|
||||
$ci->addMeta('semester of studentUid', $semesterStud);
|
||||
|
||||
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery(
|
||||
$start_date,
|
||||
$end_date, //will be overwritten in model if $ende_semProlonged
|
||||
$semester_range,
|
||||
$benutzer_gruppen,
|
||||
$student_lehrverband,
|
||||
$dbStundenplanTable,
|
||||
$groupConsecutiveHours,
|
||||
null,
|
||||
null
|
||||
);
|
||||
|
||||
$ci->addMeta('bhstdplanquery', $stundenplan_query);
|
||||
|
||||
if(!$stundenplan_query)
|
||||
{
|
||||
@@ -84,47 +176,23 @@ class LvTermine extends FHCAPI_Controller
|
||||
|
||||
public function getStudiensemester()
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
$this->StudiensemesterModel->addOrder('studienjahr_kurzbz', 'DESC');
|
||||
$result = $this->StudiensemesterModel->load();
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$this->terminateWithSuccess($data);
|
||||
$this->StudiensemesterModel->addOrder('studienjahr_kurzbz', 'DESC');
|
||||
$result = $this->StudiensemesterModel->load();
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
//copied from Stundenplan.php
|
||||
private function studienSemesterErmitteln($start_date, $end_date)
|
||||
{
|
||||
// gets all studiensemester from the student from start_date to end_date
|
||||
$semester_range = $this->StudiensemesterModel->getByDateRange($start_date, $end_date);
|
||||
$semester_range = array_map(
|
||||
function ($sem) {
|
||||
return $sem->studiensemester_kurzbz;
|
||||
},
|
||||
$this->getDataOrTerminateWithError($semester_range)
|
||||
);
|
||||
// TODO(Manu) following 5 private functions are copybased of StundenplanLib,
|
||||
// just applyLoadUeberSemesterHaelfte is different
|
||||
// after approval: change to public in StundenplanLib and use it here?
|
||||
|
||||
// if no studiensemester is found for the given timespan, get the nearest studiensemester
|
||||
if(count($semester_range) == 0)
|
||||
{
|
||||
$aktuelle_studiensemester = $this->StudiensemesterModel->getNearest();
|
||||
$aktuelle_studiensemester = $this->getDataOrTerminateWithError($aktuelle_studiensemester);
|
||||
if (count($aktuelle_studiensemester) == 0) {
|
||||
$this->terminateWithError("No aktuelles semester");
|
||||
}
|
||||
$aktuelle_studiensemester = current($aktuelle_studiensemester)->studiensemester_kurzbz;
|
||||
// push aktuelles semester in active semester array
|
||||
array_push($semester_range, $aktuelle_studiensemester);
|
||||
}
|
||||
return $semester_range;
|
||||
}
|
||||
|
||||
//copied from Stundenplan.php
|
||||
private function sortStudienSemester(&$semester_range)
|
||||
{
|
||||
private function sortStudienSemester(&$semester_range){
|
||||
usort(
|
||||
$semester_range,
|
||||
function ($first, $second) {
|
||||
function($first, $second)
|
||||
{
|
||||
$sem_first = null;
|
||||
$year_first = null;
|
||||
$match_first = null;
|
||||
@@ -133,8 +201,8 @@ class LvTermine extends FHCAPI_Controller
|
||||
$year_second = null;
|
||||
$match_second = null;
|
||||
|
||||
preg_match('/([WS]+)([0-9]+)/', $first, $match_first);
|
||||
preg_match('/([WS]+)([0-9]+)/', $second, $match_second);
|
||||
preg_match('/([WS]+)([0-9]+)/',$first,$match_first);
|
||||
preg_match('/([WS]+)([0-9]+)/',$second,$match_second);
|
||||
|
||||
$sem_first = $match_first[1];
|
||||
$year_first = intval($match_first[2]);
|
||||
@@ -146,15 +214,15 @@ class LvTermine extends FHCAPI_Controller
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
elseif($year_first > $year_second)
|
||||
else if($year_first > $year_second)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
elseif($year_first == $year_second && $sem_first > $sem_second)
|
||||
else if($year_first == $year_second && $sem_first > $sem_second)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
elseif($year_first == $year_second && $sem_first < $sem_second)
|
||||
else if($year_first == $year_second && $sem_first < $sem_second)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -163,9 +231,146 @@ class LvTermine extends FHCAPI_Controller
|
||||
);
|
||||
}
|
||||
|
||||
//copied from Stundenplan.php
|
||||
private function fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range)
|
||||
{
|
||||
$this->load->model('person/Benutzergruppe_model', 'BenutzergruppeModel');
|
||||
|
||||
$benutzer_gruppen = [];
|
||||
// for each studiensemester fetch the benutzer gruppen and add them to an associate $bentuzer_gruppen array
|
||||
/*
|
||||
[
|
||||
['WS2023'] => [['gruppe1_SS2023','gruppe2_SS2023'],['gruppe1_WS2023','gruppe2_WS2023']],
|
||||
['SS2024'] => [['gruppe1_WS2023','gruppe2_WS2023'],['gruppe1_SS2024','gruppe2_SS2024']],
|
||||
['WS2024'] => [['gruppe1_SS2024','gruppe2_SS2024'],['gruppe1_WS2024','gruppe2_WS2024']],
|
||||
]
|
||||
*/
|
||||
foreach($semester_range as $semester_key => $semester_array)
|
||||
{
|
||||
$benutzer_gruppen[$semester_key] = [];
|
||||
// each semester could have ajoint semesters that need to be checked
|
||||
foreach($semester_array as $semester=>$semester_date_range)
|
||||
{
|
||||
// for each active semester query the benutzer_gruppen associated to the semester
|
||||
$benutzer_query = $this->BenutzergruppeModel->execReadOnlyQuery("
|
||||
SELECT * FROM tbl_benutzergruppe where uid = ? AND studiensemester_kurzbz = ?",[$student_uid, $semester]);
|
||||
if(isError($benutzer_query)){
|
||||
return error(getData($benutzer_query));
|
||||
}
|
||||
$benutzer_query_result = getData($benutzer_query)??[];
|
||||
|
||||
array_push(
|
||||
$benutzer_gruppen[$semester_key],
|
||||
array_map(
|
||||
function($item)
|
||||
{
|
||||
return "'".$item->gruppe_kurzbz. "'";
|
||||
},
|
||||
$benutzer_query_result
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// merge the gruppen of each studiensemester together for the original studiensemester
|
||||
/*
|
||||
[
|
||||
['WS2023'] => ['gruppe1_SS2023','gruppe2_SS2023','gruppe1_WS2023','gruppe2_WS2023'],
|
||||
['SS2024'] => ['gruppe1_WS2023','gruppe2_WS2023','gruppe1_SS2024','gruppe2_SS2024'],
|
||||
['WS2024'] => ['gruppe1_SS2024','gruppe2_SS2024','gruppe1_WS2024','gruppe2_WS2024'],
|
||||
]
|
||||
*/
|
||||
$benutzer_gruppen = array_map(
|
||||
function($gruppe)
|
||||
{
|
||||
$merged_gruppe = [];
|
||||
foreach($gruppe as $gruppen_array)
|
||||
{
|
||||
$merged_gruppe = array_merge($merged_gruppe, $gruppen_array);
|
||||
}
|
||||
return $merged_gruppe;
|
||||
},
|
||||
$benutzer_gruppen
|
||||
);
|
||||
|
||||
return success($benutzer_gruppen);
|
||||
}
|
||||
|
||||
private function fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range)
|
||||
{
|
||||
$this->load->model('person/Benutzergruppe_model', 'BenutzergruppeModel');
|
||||
|
||||
$student_lehrverband = [];
|
||||
// for each studiensemester fetch the studentlehrverbaende and add them to an associate $student_lehrverband array
|
||||
/*
|
||||
[
|
||||
['WS2023'] => [ [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""] ] ],
|
||||
['SS2024'] => [ [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""] ], [ ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""] ] ],
|
||||
['WS2024'] => [ [ ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""] ], [ ['stg_kz'=>298,'semester'=>3,'verband'=>"A",'gruppe'=>""] ] ],
|
||||
]
|
||||
*/
|
||||
foreach($semester_range as $semester_key => $semester_array)
|
||||
{
|
||||
$student_lehrverband[$semester_key] = [];
|
||||
foreach($semester_array as $semester=>$semester_date_range)
|
||||
{
|
||||
// for each active semester query the student_lehrverband associated to the semester
|
||||
$lehrverband_query = $this->BenutzergruppeModel->execReadOnlyQuery("
|
||||
SELECT vbd.*, UPPER(s.typ || s.kurzbz) as stg FROM tbl_studentlehrverband vbd join tbl_studiengang s USING(studiengang_kz) where vbd.student_uid = ? AND vbd.studiensemester_kurzbz = ?", [$student_uid, $semester]);
|
||||
if(isError($lehrverband_query)){
|
||||
return error(getData($lehrverband_query));
|
||||
}
|
||||
$lehrverband_query_result = getData($lehrverband_query)??[];
|
||||
|
||||
$converted_studentLehrverband= array_map(
|
||||
function ($item)
|
||||
{
|
||||
$result = new stdClass();
|
||||
$result->verbandsgruppe = $item->stg . $item->semester . trim($item->verband) . trim($item->gruppe);
|
||||
$result->studiengang_kz = $item->studiengang_kz;
|
||||
$result->semester = $item->semester;
|
||||
$result->verband = $item->verband;
|
||||
$result->gruppe = $item->gruppe;
|
||||
$result->studiensemester_kurzbz = $item->studiensemester_kurzbz;
|
||||
return $result;
|
||||
},
|
||||
$lehrverband_query_result);
|
||||
|
||||
array_push($student_lehrverband[$semester_key], $converted_studentLehrverband);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// merge the studentlehrverband of each studiensemester together for the original studiensemester
|
||||
/*
|
||||
[
|
||||
['WS2023'] => [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""] ],
|
||||
['SS2024'] => [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""], ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""] ],
|
||||
['WS2024'] => [ ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""], ['stg_kz'=>298,'semester'=>3,'verband'=>"A",'gruppe'=>""] ],
|
||||
]
|
||||
*/
|
||||
|
||||
$student_lehrverband = array_map(
|
||||
function($studentlehrverband)
|
||||
{
|
||||
$merged_studentlehrverband = [];
|
||||
foreach($studentlehrverband as $studentlehrverband_array)
|
||||
{
|
||||
$merged_studentlehrverband = array_merge($merged_studentlehrverband, $studentlehrverband_array);
|
||||
}
|
||||
return $merged_studentlehrverband;
|
||||
},
|
||||
$student_lehrverband
|
||||
);
|
||||
|
||||
return success($student_lehrverband);
|
||||
}
|
||||
|
||||
//note: this is different to the version in StundenplanLib, changes apply just to LVTermine in StudVW
|
||||
private function applyLoadUeberSemesterHaelfte(&$semester_range)
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
/*
|
||||
@var($semester_collection)
|
||||
convert the array of studiensemester into an associative array with the studiensemester as the key
|
||||
@@ -185,9 +390,13 @@ class LvTermine extends FHCAPI_Controller
|
||||
foreach($semester_range as $studiensemester)
|
||||
{
|
||||
$previous_studiensemester = $this->StudiensemesterModel->getPreviousFrom($studiensemester);
|
||||
$previous_studiensemester = $this->getDataOrTerminateWithError($previous_studiensemester);
|
||||
if(isError($previous_studiensemester))
|
||||
{
|
||||
return error(getData($previous_studiensemester));
|
||||
}
|
||||
$previous_studiensemester = getData($previous_studiensemester);
|
||||
if (count($previous_studiensemester) == 0) {
|
||||
$this->terminateWithError("No previous semester");
|
||||
return error('no previous semester');
|
||||
}
|
||||
$previous_studiensemester = current($previous_studiensemester)->studiensemester_kurzbz;
|
||||
$semester_collection[$studiensemester] = [$previous_studiensemester, $studiensemester];
|
||||
@@ -237,25 +446,33 @@ class LvTermine extends FHCAPI_Controller
|
||||
foreach($semester_collection as $semester_original => $semester_adjoint)
|
||||
{
|
||||
$semester_start_ende = $this->StudiensemesterModel->getStartEndeFromStudiensemester($semester_original);
|
||||
$semester_start_ende = current($this->getDataOrTerminateWithError($semester_start_ende));
|
||||
if(isError($semester_start_ende))
|
||||
{
|
||||
return error(getData($semester_start_ende));
|
||||
}
|
||||
$semester_start_ende = current(getData($semester_start_ende));
|
||||
|
||||
// initialize empty arrays to add key value pairs
|
||||
$studienSemesterDateRanges[$semester_original] = [];
|
||||
|
||||
// check if the studiensemester is a summer semester and add 1 month to bridge the school summer break
|
||||
$match = null;
|
||||
preg_match("/^(SS)([0-9]+)/", $semester_original, $match);
|
||||
preg_match("/^(SS)([0-9]+)/",$semester_original,$match);
|
||||
if(count($match) >0)
|
||||
{
|
||||
$one_month = new DateInterval('P1M');
|
||||
$one_day = DateInterval::createFromDateString('1 days');
|
||||
$summer_studiensemester_end_date = DateTime::createFromFormat('Y-m-d', $semester_start_ende->ende);
|
||||
$summer_studiensemester_end_date = DateTime::createFromFormat('Y-m-d',$semester_start_ende->ende);
|
||||
$summer_studiensemester_end_date->add($one_month);
|
||||
$summer_studiensemester_end_date->sub($one_day);
|
||||
$semester_start_ende->ende = date_format($summer_studiensemester_end_date, 'Y-m-d');
|
||||
$semester_start_ende->ende = date_format($summer_studiensemester_end_date,'Y-m-d');
|
||||
}
|
||||
if (defined('LVPLAN_LOAD_UEBER_SEMESTERHAELFTE') && LVPLAN_LOAD_UEBER_SEMESTERHAELFTE === true)
|
||||
|
||||
//TODO(Manu) config not taken into account
|
||||
if (defined('LVPLAN_LOAD_UEBER_SEMESTERHAELFTE') && LVPLAN_LOAD_UEBER_SEMESTERHAELFTE)
|
||||
{
|
||||
$this->addMeta('LVPLAN_LOAD_UEBER_SEMESTERHAELFTE_TRUE', $semester_range);
|
||||
|
||||
foreach($semester_adjoint as $adjoint)
|
||||
{
|
||||
$studienSemesterDateRanges[$semester_original][$adjoint]=$semester_start_ende;
|
||||
@@ -263,139 +480,106 @@ class LvTermine extends FHCAPI_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->addMeta('LVPLAN_LOAD_UEBER_SEMESTERHAELFTE_FALSE', $semester_range);
|
||||
//TODO: half of a DateInterval might not be correctly calculated
|
||||
// calculate the half of the studiensemester
|
||||
$studiensemester_start_date = DateTime::createFromFormat('Y-m-d', $semester_start_ende->start);
|
||||
$studiensemester_end_date = DateTime::createFromFormat('Y-m-d', $semester_start_ende->ende);
|
||||
$studiensemester_start_date = DateTime::createFromFormat('Y-m-d',$semester_start_ende->start);
|
||||
$studiensemester_end_date = DateTime::createFromFormat('Y-m-d',$semester_start_ende->ende);
|
||||
$studiensemester_time_difference = $studiensemester_start_date->diff($studiensemester_end_date);
|
||||
$half_dateNumber = ceil($studiensemester_time_difference->d/2)+ceil(($studiensemester_time_difference->m*30)/2);
|
||||
$half_dateInterval = new DateInterval('P'.strval($half_dateNumber) .'D');
|
||||
$studiensemester_half = date_format($studiensemester_start_date->add($half_dateInterval), 'Y-m-d');
|
||||
$studiensemester_half = date_format($studiensemester_start_date->add($half_dateInterval),'Y-m-d');
|
||||
|
||||
$first_half = new stdClass();
|
||||
$first_half->start = $semester_start_ende->start;
|
||||
$first_half->ende = $studiensemester_half;
|
||||
|
||||
$studienSemesterDateRanges[$semester_original][$semester_adjoint[0]] = $first_half;
|
||||
$studienSemesterDateRanges[$semester_original][$semester_adjoint[1]] = $semester_start_ende;
|
||||
$studiensemester_start_date = DateTime::createFromFormat(
|
||||
'Y-m-d',
|
||||
$semester_start_ende->start
|
||||
);
|
||||
|
||||
$studiensemester_end_date = DateTime::createFromFormat(
|
||||
'Y-m-d',
|
||||
$semester_start_ende->ende
|
||||
);
|
||||
|
||||
$studiensemester_time_difference = $studiensemester_start_date->diff(
|
||||
$studiensemester_end_date
|
||||
);
|
||||
|
||||
$half_dateNumber =
|
||||
ceil($studiensemester_time_difference->d / 2) +
|
||||
ceil(($studiensemester_time_difference->m * 30) / 2);
|
||||
|
||||
$half_dateInterval = new DateInterval(
|
||||
'P' . strval($half_dateNumber) . 'D'
|
||||
);
|
||||
|
||||
$second_semester_end_date = clone $studiensemester_end_date;
|
||||
$second_semester_end_date->add($half_dateInterval);
|
||||
|
||||
$second_semester_date_range = clone $semester_start_ende;
|
||||
$second_semester_date_range->ende = $second_semester_end_date->format('Y-m-d');
|
||||
|
||||
// 2nd Adjacent-Semester: old time intervall plus half next semester
|
||||
$studienSemesterDateRanges[$semester_original][$semester_adjoint[1]] = $second_semester_date_range;
|
||||
}
|
||||
$semester_range = $studienSemesterDateRanges;
|
||||
}
|
||||
}
|
||||
|
||||
//copied from Stundenplan.php, extended with $student_uid
|
||||
private function fetchBenutzerGruppenFromStudiensemester($semester_range, $student_uid)
|
||||
private function studienSemesterErmitteln($start_date, $end_date)
|
||||
{
|
||||
//$student_uid = getAuthUID();
|
||||
$benutzer_gruppen = [];
|
||||
// for each studiensemester fetch the benutzer gruppen and add them to an associate $bentuzer_gruppen array
|
||||
/*
|
||||
[
|
||||
['WS2023'] => [['gruppe1_SS2023','gruppe2_SS2023'],['gruppe1_WS2023','gruppe2_WS2023']],
|
||||
['SS2024'] => [['gruppe1_WS2023','gruppe2_WS2023'],['gruppe1_SS2024','gruppe2_SS2024']],
|
||||
['WS2024'] => [['gruppe1_SS2024','gruppe2_SS2024'],['gruppe1_WS2024','gruppe2_WS2024']],
|
||||
]
|
||||
*/
|
||||
foreach($semester_range as $semester_key => $semester_array)
|
||||
{
|
||||
$benutzer_gruppen[$semester_key] = [];
|
||||
// each semester could have ajoint semesters that need to be checked
|
||||
foreach($semester_array as $semester => $semester_date_range)
|
||||
{
|
||||
// for each active semester query the benutzer_gruppen associated to the semester
|
||||
$benutzer_query = $this->BenutzergruppeModel->execReadOnlyQuery("
|
||||
SELECT * FROM tbl_benutzergruppe where uid = ? AND studiensemester_kurzbz = ?", [$student_uid, $semester]);
|
||||
$benutzer_query_result = $this->getDataOrTerminateWithError($benutzer_query);
|
||||
array_push(
|
||||
$benutzer_gruppen[$semester_key],
|
||||
array_map(
|
||||
function ($item) {
|
||||
return "'".$item->gruppe_kurzbz. "'";
|
||||
},
|
||||
$benutzer_query_result
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
// merge the gruppen of each studiensemester together for the original studiensemester
|
||||
/*
|
||||
[
|
||||
['WS2023'] => ['gruppe1_SS2023','gruppe2_SS2023','gruppe1_WS2023','gruppe2_WS2023'],
|
||||
['SS2024'] => ['gruppe1_WS2023','gruppe2_WS2023','gruppe1_SS2024','gruppe2_SS2024'],
|
||||
['WS2024'] => ['gruppe1_SS2024','gruppe2_SS2024','gruppe1_WS2024','gruppe2_WS2024'],
|
||||
]
|
||||
*/
|
||||
$benutzer_gruppen = array_map(
|
||||
function ($gruppe) {
|
||||
$merged_gruppe = [];
|
||||
foreach($gruppe as $gruppen_array)
|
||||
{
|
||||
$merged_gruppe = array_merge($merged_gruppe, $gruppen_array);
|
||||
}
|
||||
return $merged_gruppe;
|
||||
// gets all studiensemester from the student from start_date to end_date
|
||||
//$semester_range = $this->StudiensemesterModel->getByDateRange($start_date, $end_date);
|
||||
$semester_range = $this->StudiensemesterModel->getContainingOrNearestByDateRange($start_date, $end_date);
|
||||
if (isError($semester_range))
|
||||
return $semester_range;
|
||||
|
||||
$semester_range = array_map(
|
||||
function ($sem) {
|
||||
return $sem->studiensemester_kurzbz;
|
||||
},
|
||||
$benutzer_gruppen
|
||||
getData($semester_range) ?: []
|
||||
);
|
||||
|
||||
return $benutzer_gruppen;
|
||||
}
|
||||
|
||||
//copied from Stundenplan.php, extended with $student_uid
|
||||
private function fetchStudentlehrverbandFromStudiensemester($semester_range, $student_uid)
|
||||
{
|
||||
//$student_uid = getAuthUID();
|
||||
$student_lehrverband = [];
|
||||
// for each studiensemester fetch the studentlehrverbaende and add them to an associate $student_lehrverband array
|
||||
/*
|
||||
[
|
||||
['WS2023'] => [ [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""] ] ],
|
||||
['SS2024'] => [ [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""] ], [ ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""] ] ],
|
||||
['WS2024'] => [ [ ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""] ], [ ['stg_kz'=>298,'semester'=>3,'verband'=>"A",'gruppe'=>""] ] ],
|
||||
]
|
||||
*/
|
||||
foreach($semester_range as $semester_key => $semester_array)
|
||||
// if no studiensemester is found for the given timespan, get the nearest studiensemester
|
||||
if (count($semester_range) == 0)
|
||||
{
|
||||
$student_lehrverband[$semester_key] = [];
|
||||
foreach($semester_array as $semester => $semester_date_range)
|
||||
{
|
||||
// for each active semester query the student_lehrverband associated to the semester
|
||||
$lehrverband_query = $this->BenutzergruppeModel->execReadOnlyQuery("
|
||||
SELECT * FROM tbl_studentlehrverband where student_uid = ? AND studiensemester_kurzbz = ?", [$student_uid, $semester]);
|
||||
$lehrverband_query_result = $this->getDataOrTerminateWithError($lehrverband_query);
|
||||
array_push($student_lehrverband[$semester_key], array_map(
|
||||
function ($item) {
|
||||
$result = new stdClass();
|
||||
$result->studiengang_kz = $item->studiengang_kz;
|
||||
$result->semester = $item->semester;
|
||||
$result->verband = $item->verband;
|
||||
$result->gruppe = $item->gruppe;
|
||||
return $result;
|
||||
},
|
||||
$lehrverband_query_result));
|
||||
$aktuelle_studiensemester = $this->StudiensemesterModel->getNearest();
|
||||
if (isError($aktuelle_studiensemester))
|
||||
return $aktuelle_studiensemester;
|
||||
|
||||
$aktuelle_studiensemester = getData($aktuelle_studiensemester);
|
||||
if (count($aktuelle_studiensemester) == 0) {
|
||||
return error("No aktuelles semester");
|
||||
}
|
||||
$aktuelle_studiensemester = current($aktuelle_studiensemester)->studiensemester_kurzbz;
|
||||
// push aktuelles semester in active semester array
|
||||
array_push($semester_range, $aktuelle_studiensemester);
|
||||
}
|
||||
|
||||
// merge the studentlehrverband of each studiensemester together for the original studiensemester
|
||||
/*
|
||||
[
|
||||
['WS2023'] => [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""] ],
|
||||
['SS2024'] => [ ['stg_kz'=>298,'semester'=>1,'verband'=>"A",'gruppe'=>""], ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""] ],
|
||||
['WS2024'] => [ ['stg_kz'=>298,'semester'=>2,'verband'=>"A",'gruppe'=>""], ['stg_kz'=>298,'semester'=>3,'verband'=>"A",'gruppe'=>""] ],
|
||||
]
|
||||
*/
|
||||
$student_lehrverband = array_map(
|
||||
function ($studentlehrverband) {
|
||||
$merged_studentlehrverband = [];
|
||||
foreach($studentlehrverband as $studentlehrverband_array)
|
||||
{
|
||||
$merged_studentlehrverband = array_merge($merged_studentlehrverband, $studentlehrverband_array);
|
||||
}
|
||||
return $merged_studentlehrverband;
|
||||
},
|
||||
$student_lehrverband
|
||||
);
|
||||
//auf jeden Fall Semester 2 dazunehmen, wenn nur eines vorhanden ist für Anzeige der ersten Hälfte des folgenden Semesters?
|
||||
if (count($semester_range) == 1)
|
||||
{
|
||||
$nextStudiensemester = $this->StudiensemesterModel->getNextFrom($semester_range[0]);
|
||||
if (isError($nextStudiensemester))
|
||||
return $nextStudiensemester;
|
||||
|
||||
return $student_lehrverband;
|
||||
$nextStudiensemester = getData($nextStudiensemester);
|
||||
if (count($nextStudiensemester) == 0) {
|
||||
return error("No aktuelles semester");
|
||||
}
|
||||
$nextStudiensemester = current($nextStudiensemester)->studiensemester_kurzbz;
|
||||
// push aktuelles semester in active semester array
|
||||
array_push($semester_range, $nextStudiensemester);
|
||||
}
|
||||
|
||||
|
||||
return success($semester_range);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,22 @@ class StundenplanLib
|
||||
$this->_ci->addMeta('nach_apply_semester_range', $semester_range);
|
||||
if ($function_error)
|
||||
return $function_error;
|
||||
|
||||
|
||||
$this->_ci->addMeta('bhsemtest', print_r($semester_range, true));
|
||||
|
||||
$semester_range = array(
|
||||
'SS2026' => array(
|
||||
'WS2025' => (object) array(
|
||||
'start' => '2026-02-04',
|
||||
'ende' => '2026-05-19'
|
||||
),
|
||||
'SS2026' => (object) array(
|
||||
'start' => '2026-02-04',
|
||||
'ende' => '2026-11-15'
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
// getting the gruppen_kurzbz of the student in the different studiensemester
|
||||
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range);
|
||||
if (isError($benutzer_gruppen))
|
||||
|
||||
@@ -193,7 +193,8 @@ class Stundenplan_model extends DB_Model
|
||||
*/
|
||||
public function stundenplanGruppierungConsecutive($stundenplanViewQuery)
|
||||
{
|
||||
$query_result = $this->execReadOnlyQuery("
|
||||
$query_result = $this->execReadOnlyQuery(
|
||||
$stundenplanViewQuery . "
|
||||
SELECT
|
||||
distinct lehrveranstaltung_id,
|
||||
datum,
|
||||
@@ -247,7 +248,7 @@ class Stundenplan_model extends DB_Model
|
||||
anmerkung_lehreinheit,gruppe, verband, semester,stg_kurzbz,
|
||||
CONCAT(p.nachname, ' ', p.vorname) as lektorname
|
||||
|
||||
FROM (".$stundenplanViewQuery.") sp
|
||||
FROM stundenplaneintraege sp
|
||||
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = sp.stunde
|
||||
LEFT JOIN public.tbl_benutzer bn ON bn.uid = sp.uid
|
||||
LEFT JOIN public.tbl_person p ON p.person_id = bn.person_id
|
||||
@@ -280,7 +281,7 @@ class Stundenplan_model extends DB_Model
|
||||
|
||||
/**
|
||||
* queries Stundenplan but for a whole lva, irrespective of who is requesting it
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function getStundenplanLVA($start_date, $end_date, $lv_id) {
|
||||
@@ -528,7 +529,96 @@ class Stundenplan_model extends DB_Model
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $qry_params);
|
||||
}
|
||||
|
||||
|
||||
protected function genLehrverbandClauses($semester, $studentlehrverbaende)
|
||||
{
|
||||
$lvbdclauses = array();
|
||||
$studiengang_kz = null;
|
||||
foreach($semester as $sem=>$semester_date_range)
|
||||
{
|
||||
foreach($semester_date_range as $sem_date => $sem_date_range)
|
||||
{
|
||||
if(!array_key_exists($sem,$studentlehrverbaende) || count($studentlehrverbaende[$sem]) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$studlvbds = array_filter(
|
||||
$studentlehrverbaende[$sem],
|
||||
function($value) use ($sem_date) {
|
||||
return $value->studiensemester_kurzbz === $sem_date;
|
||||
}
|
||||
);
|
||||
|
||||
foreach($studlvbds as $key=>$lehrverband)
|
||||
{
|
||||
$studiengang_kz = $lehrverband->studiengang_kz;
|
||||
$lvbdclauses[] = <<<EOCLAUSE
|
||||
(
|
||||
{$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.studiensemester_kurzbz is null or sp.studiensemester_kurzbz = {$this->escape($lehrverband->studiensemester_kurzbz)})
|
||||
)
|
||||
EOCLAUSE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
$sql = implode(PHP_EOL . " OR" . PHP_EOL, $lvbdclauses);
|
||||
if($sql)
|
||||
{
|
||||
$sql = <<<EOSQL
|
||||
(
|
||||
sp.studiengang_kz = {$this->escape($studiengang_kz)}
|
||||
and
|
||||
sp.gruppe_kurzbz is null
|
||||
and
|
||||
(
|
||||
{$sql}
|
||||
)
|
||||
)
|
||||
EOSQL;
|
||||
|
||||
}
|
||||
return $sql;
|
||||
}
|
||||
|
||||
protected function genSpezialgruppenClauses($semester, $gruppen)
|
||||
{
|
||||
$spezgrpclauses = array();
|
||||
foreach($semester as $sem => $semester_date_range)
|
||||
{
|
||||
|
||||
foreach($semester_date_range as $sem_date => $sem_date_range)
|
||||
{
|
||||
// if there are not groups for the semester skip the iteration step
|
||||
if(!array_key_exists($sem_date,$gruppen) || count($gruppen[$sem_date]) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
// converts the array of gruppen strings into a sql IN (_,_,_) chain
|
||||
$groups = implode(', ', $gruppen[$sem_date]);
|
||||
$spezgrpclauses[] = <<<EOSPEZGRP
|
||||
(
|
||||
sp.gruppe_kurzbz IN ({$groups})
|
||||
AND sp.datum BETWEEN {$this->escape($sem_date_range->start)} AND {$this->escape($sem_date_range->ende)}
|
||||
)
|
||||
EOSPEZGRP;
|
||||
|
||||
}
|
||||
}
|
||||
$sql = implode(PHP_EOL . " OR" . PHP_EOL, $spezgrpclauses);
|
||||
if($sql)
|
||||
{
|
||||
$sql = <<<EOSQL
|
||||
(
|
||||
{$sql}
|
||||
)
|
||||
EOSQL;
|
||||
}
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
|
||||
*
|
||||
@@ -537,8 +627,8 @@ class Stundenplan_model extends DB_Model
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $isLvList=false, $db_stpl_table='stundenplan'){
|
||||
|
||||
public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $db_stpl_table='stundenplan', $showLvsStundenplan=false, $endDateNextSemHalf=null, $semesterFilter=null)
|
||||
{
|
||||
// helper function to check if either $gruppen or $studentlehrverbaende are empty for each semester
|
||||
$emptyCheck = function($toBeCheckedArray) use ($semester){
|
||||
$result = true;
|
||||
@@ -552,93 +642,42 @@ class Stundenplan_model extends DB_Model
|
||||
return $result;
|
||||
};
|
||||
|
||||
// if both the gruppen and the studentlehrverbaende are empty we early return
|
||||
// if both the gruppen and the studentlehrverbaende are empty we early return
|
||||
if($emptyCheck($gruppen) && $emptyCheck($studentlehrverbaende))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$query =
|
||||
"select sp.*
|
||||
from lehre.vw_".$db_stpl_table." sp
|
||||
WHERE
|
||||
sp.datum >= ".$this->escape($start_date)."
|
||||
AND sp.datum <= ".$this->escape($end_date);
|
||||
|
||||
// adds the AND sql chain only if both $gruppen and $studentlehrverbaende are not empty
|
||||
if(!$emptyCheck($gruppen) || !$emptyCheck($studentlehrverbaende))
|
||||
{
|
||||
$query .= " AND ( ";
|
||||
}
|
||||
$lvbdclauses = $this->genLehrverbandClauses($semester, $studentlehrverbaende);
|
||||
$spezgrpclauses = $this->genSpezialgruppenClauses($semester, $gruppen);
|
||||
$chainingand = ($lvbdclauses && $spezgrpclauses) ? 'AND' : '';
|
||||
|
||||
foreach($semester as $sem => $semester_date_range)
|
||||
{
|
||||
$query = <<<EOSQL
|
||||
with preprocessedsp as (
|
||||
select
|
||||
(UPPER(sp.stg_typ || sp.stg_kurzbz)) || sp.semester || sp.verband || sp.gruppe as verbandsgruppe,
|
||||
sp.*,
|
||||
le.studiensemester_kurzbz
|
||||
from
|
||||
lehre.vw_stundenplan sp
|
||||
join
|
||||
lehre.tbl_lehreinheit le on sp.lehreinheit_id = le.lehreinheit_id
|
||||
where
|
||||
sp.datum >= {$this->escape($start_date)}
|
||||
and sp.datum <= {$this->escape($end_date)}
|
||||
),
|
||||
stundenplaneintraege as (
|
||||
select
|
||||
sp.*
|
||||
from
|
||||
preprocessedsp sp
|
||||
where
|
||||
{$lvbdclauses}
|
||||
{$chainingand}
|
||||
{$spezgrpclauses}
|
||||
)
|
||||
|
||||
foreach($semester_date_range as $sem_date => $sem_date_range)
|
||||
{
|
||||
// if there are not groups for the semester skip the iteration step
|
||||
if(!array_key_exists($sem_date,$gruppen) || count($gruppen[$sem_date]) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
// converts the array of gruppen strings into a sql IN (_,_,_) chain
|
||||
$query .="(sp.gruppe_kurzbz IN (" .implode(',',$gruppen[$sem_date]).") AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende)." )";
|
||||
|
||||
$query .="OR";
|
||||
}
|
||||
}
|
||||
|
||||
// if there are no studentlehrverbaende and the gruppen are not empty, we can remove the last OR added after the groups
|
||||
if($emptyCheck($studentlehrverbaende) && !$emptyCheck($gruppen))
|
||||
{
|
||||
$query = substr($query, 0, -2);
|
||||
}
|
||||
|
||||
//Condition for showLVList FHC4
|
||||
if(!$isLvList)
|
||||
$stringGroupLv = "AND gruppe_kurzbz is null";
|
||||
else
|
||||
$stringGroupLv ="";
|
||||
|
||||
foreach($semester as $sem=>$semester_date_range)
|
||||
{
|
||||
foreach($semester_date_range as $sem_date => $sem_date_range)
|
||||
{
|
||||
if(!array_key_exists($sem,$studentlehrverbaende) || count($studentlehrverbaende[$sem]) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$studlvbds = array_filter(
|
||||
$studentlehrverbaende[$sem],
|
||||
function($value) use ($sem_date) {
|
||||
return $value->studiensemester_kurzbz === $sem_date;
|
||||
}
|
||||
);
|
||||
foreach($studlvbds as $key=>$lehrverband)
|
||||
{
|
||||
$query .= "(((sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND sp.gruppe = ".$this->escape($lehrverband->gruppe)." AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
|
||||
// Eintraege fuer den ganzen Verband
|
||||
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND (sp.gruppe is null OR sp.gruppe='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
|
||||
// Eintraege fuer das ganze Semester
|
||||
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)
|
||||
." AND ".$this->escape($sem_date_range->ende).")) AND gruppe_kurzbz is null)";
|
||||
|
||||
$query .="OR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if the studentlehrverbaende is not empty we can remove the last OR that was added to the query
|
||||
if(!$emptyCheck($studentlehrverbaende))
|
||||
{
|
||||
$query = substr($query, 0, -2);
|
||||
}
|
||||
|
||||
// closes the AND sql chain only if it was opened previously
|
||||
if(!$emptyCheck($gruppen) || !$emptyCheck($studentlehrverbaende))
|
||||
{
|
||||
$query .= ")";
|
||||
}
|
||||
EOSQL;
|
||||
|
||||
return $query;
|
||||
}
|
||||
@@ -730,4 +769,4 @@ class Stundenplan_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, [$lehrveranstaltung_id, $studiensemester_kurzbz]);
|
||||
}
|
||||
}
|
||||
}
|
||||
+47
-20
@@ -1,6 +1,7 @@
|
||||
import {CoreFilterCmpt} from "../../../../filter/Filter.js";
|
||||
import FormInput from "../../../../Form/Input.js";
|
||||
import FormForm from '../../../../Form/Form.js';
|
||||
import { capitalize } from '../../../../../helpers/StringHelpers.js';
|
||||
|
||||
export default {
|
||||
name: "TblCourseList",
|
||||
@@ -30,7 +31,7 @@ export default {
|
||||
tabulatorEvents: [],
|
||||
listStudiensemester: [],
|
||||
dataSem: {},
|
||||
showStundenplanDev: false
|
||||
stundenplanEnvironment: 'prod'
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -46,7 +47,7 @@ export default {
|
||||
return link;
|
||||
},
|
||||
dbStundenplanTable: function (){
|
||||
return this.showStundenplanDev ? 'stundenplandev' : 'stundenplan';
|
||||
return this.stundenplanEnvironment === 'dev' ? 'stundenplandev' : 'stundenplan';
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
@@ -112,15 +113,15 @@ export default {
|
||||
}
|
||||
};
|
||||
|
||||
setHeader('lehrveranstaltung_id', this.$p.t('lehre', 'lehrveranstaltung_id'));
|
||||
setHeader('lehreinheit_id', this.$p.t('global', 'lehreinheit_id'));
|
||||
setHeader('datum', this.$p.t('global', 'datum'));
|
||||
setHeader('beginn', this.$p.t('ui', 'dateFrom'));
|
||||
setHeader('ende', this.$p.t('ui', 'dateTo'));
|
||||
setHeader('gruppen_kuerzel', this.$p.t('global', 'gruppen'));
|
||||
setHeader('ort_kurzbz', this.$p.t('global', 'ortLocation'));
|
||||
setHeader('lektorname', this.$p.t('lehre', 'lektor'));
|
||||
setHeader('lehrfach_bez', this.$p.t('global', 'lehrfach'));
|
||||
setHeader('lehrveranstaltung_id', capitalize(this.$p.t('lehre','lehrveranstaltung_id')));
|
||||
setHeader('lehreinheit_id', capitalize(this.$p.t('global','lehreinheit_id')));
|
||||
setHeader('datum', capitalize(this.$p.t('global','datum')));
|
||||
setHeader('beginn', capitalize(this.$p.t('ui','dateFrom')));
|
||||
setHeader('ende', capitalize(this.$p.t('ui','dateTo')));
|
||||
setHeader('gruppen_kuerzel', capitalize(this.$p.t('global','gruppen')));
|
||||
setHeader('ort_kurzbz', capitalize(this.$p.t('global','ortLocation')));
|
||||
setHeader('lektorname', capitalize(this.$p.t('lehre','lektor')));
|
||||
setHeader('lehrfach_bez', capitalize(this.$p.t('global','lehrfach')));
|
||||
}
|
||||
}
|
||||
];
|
||||
@@ -135,7 +136,6 @@ export default {
|
||||
this.$refs.table.reloadTable();
|
||||
},
|
||||
switchStundenplan(){
|
||||
this.showStundenplanDev = !this.showStundenplanDev;
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
@@ -172,18 +172,45 @@ export default {
|
||||
reload
|
||||
:reload-btn-infotext="this.$p.t('table', 'reload')"
|
||||
>
|
||||
<template #actions>
|
||||
<template #actions>
|
||||
<button
|
||||
class="btn btn-outline-secondary"
|
||||
class="btn btn-outline-secondary me-2"
|
||||
@click="exportToExcel">
|
||||
{{$p.t('ui', 'export')}}
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-outline-secondary"
|
||||
@click="switchStundenplan">
|
||||
<span v-if="!showStundenplanDev">{{$p.t('lehre', 'stundenplan')}}</span>
|
||||
<span v-else>{{$p.t('lehre', 'stundenplanDev')}}</span>
|
||||
</button>
|
||||
|
||||
<div class="btn-group" role="group">
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="btnradio"
|
||||
id="btnradio_prod"
|
||||
value="prod"
|
||||
v-model="stundenplanEnvironment"
|
||||
@change="switchStundenplan()"
|
||||
>
|
||||
<label
|
||||
class="btn btn-outline-secondary"
|
||||
for="btnradio_prod"
|
||||
>
|
||||
{{$p.t('lehre', 'btn_stundenplanProd')}}
|
||||
</label>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="btnradio"
|
||||
id="btnradio_dev"
|
||||
value="dev"
|
||||
v-model="stundenplanEnvironment"
|
||||
@change="switchStundenplan()"
|
||||
>
|
||||
<label
|
||||
class="btn btn-outline-secondary"
|
||||
for="btnradio_dev"
|
||||
>
|
||||
{{$p.t('lehre', 'btn_stundenplanDev')}}
|
||||
</label>
|
||||
</div>
|
||||
</template>
|
||||
</core-filter-cmpt>
|
||||
</div>
|
||||
|
||||
@@ -62411,6 +62411,46 @@ I have been informed that I am under no obligation to consent to the transmissio
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'btn_stundenplanDev',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'LV-Plan (Planungs-Daten)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'LV-Plan (developing data)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'btn_stundenplanProd',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'LV-Plan (Produktiv Daten)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'LV-Plan (produktive data',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user