AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php aktualisiert

This commit is contained in:
olaf.braun 2025-06-26 23:12:32 +02:00
parent 6046c51ce0
commit 3e23c556c9
1 changed files with 47 additions and 0 deletions

View File

@ -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;
}
}