feature(LvPlan Feiertage): adds endpoint to fetch feiertage and adds renderer components for the feiertage in the LvPlan

This commit is contained in:
SimonGschnell
2025-06-30 11:40:18 +02:00
parent e3fe20831e
commit 1c29bcd685
8 changed files with 208 additions and 6 deletions
+60
View File
@@ -254,6 +254,66 @@ class StundenplanLib{
}
}
public function fetchFerienTageEvents($start_date, $end_date, $studiengang_kz){
$this->_ci =& get_instance();
$this->_ci->load->model('organisation/Ferien_model','FerienModel');
$ferienEvents = $this->_ci->FerienModel->execReadOnlyQuery("
SELECT *
FROM lehre.tbl_ferien
WHERE (bisdatum BETWEEN ? AND ?) AND (studiengang_kz = 0 OR studiengang_kz = ?)
",[$start_date, $end_date, $studiengang_kz]);
if (isError($ferienEvents)) {
return error(getData($ferienEvents));
}
$ferienEvents = getData($ferienEvents);
$ferienEvents = array_map(function($event){
$event_start = new DateTime($event->vondatum);
$event_end = new DateTime($event->bisdatum);
$event_end->modify('+1 day');
$interval = new DateInterval('P1D');
$period = new DatePeriod($event_start, $interval, $event_end);
$event->dates = array_map(function($date){
return $date->format('Y-m-d');
}, iterator_to_array($period));
return $event;
}, $ferienEvents);
$ferienEventsFlattened=[];
foreach($ferienEvents as $ferien_event){
foreach($ferien_event->dates as $date){
$event = new stdClass();
$event->bezeichnung = $ferien_event->bezeichnung;
$event->datum = $date;
$event->type = 'ferien';
$ferienEventsFlattened[] = $event;
}
};
$today=new DateTime();
$ferienEventsFlattened = array_map(function($event) use($today){
$ferien_event = (object) array(
'type' => 'ferien',
'beginn' => $today->format('H:i:s'),
'ende' => $today->format('H:i:s'),
'allDayEvent' => true,
'datum' => $event->datum,
'topic' => $event->bezeichnung,
'titel' => $event->bezeichnung,
'farbe' => '00689E'
);
return $ferien_event;
}, $ferienEventsFlattened);
return $ferienEventsFlattened;
}
// start of the private functions ########################################################################################################
// function used to sort an array of studiensemester strings
private function sortStudienSemester(&$semester_range){
usort(