diff --git a/AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php b/AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php index 57a3e4c8..b70f6ca2 100644 --- a/AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php +++ b/AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php @@ -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; +} + }