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.)
|
// Kein JSON – gib den Rohinhalt zurück (CSV, Text etc.)
|
||||||
return $response;
|
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