AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php aktualisiert
This commit is contained in:
parent
6046c51ce0
commit
3e23c556c9
|
|
@ -87,4 +87,51 @@ class TimeTrackingAPI
|
|||
// Kein JSON – gib den Rohinhalt zurück (CSV, Text etc.)
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function parseCalDataToJson(string $csvData): array {
|
||||
$lines = explode("\n", trim($csvData));
|
||||
$result = ["userlist" => []];
|
||||
|
||||
foreach ($lines as $line) {
|
||||
$fields = str_getcsv($line, ';');
|
||||
|
||||
if (count($fields) < 11) {
|
||||
// Fehlerhafte Zeile
|
||||
continue;
|
||||
}
|
||||
|
||||
[$id, $nachname, $vorname, $datum, $email, $stunden1, $stunden2, $grund1, $grund2, $wochentagNr, $wochentagName] = $fields;
|
||||
|
||||
// Benutzerstruktur initialisieren
|
||||
if (!isset($result["userList"][$email])) {
|
||||
$result["userlist"][$email] = [
|
||||
"absencList" => [],
|
||||
"publicholidayList" => []
|
||||
];
|
||||
}
|
||||
|
||||
// Feiertag erkennen: keine Stunden, kein Grund, aber Feiertagsname vorhanden
|
||||
$isHoliday = empty($stunden1) && empty($grund1) && !is_numeric($wochentagName);
|
||||
|
||||
if ($isHoliday) {
|
||||
$result["userlist"][$email]["publicholidayList"][] = [
|
||||
"name" => $wochentagName,
|
||||
"nr" => (int)$wochentagNr,
|
||||
"date" => $datum
|
||||
];
|
||||
} elseif (!empty($grund1)) {
|
||||
// Abwesenheit hinzufügen
|
||||
$result["userlist"][$email]["absenclist"][] = [
|
||||
"name" => $grund1,
|
||||
"nr" => (int)$stunden1,
|
||||
"date" => $datum,
|
||||
"ersterHalptag" => true,
|
||||
"zweiterHalbtag" => true
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue