query('SELECT * FROM business_hours')->fetchAll() as $r) { $hoursByWeekday[(int) $r['weekday']] = $r; } $holidays = $pdo->query('SELECT * FROM business_holidays ORDER BY holiday_date')->fetchAll(); api_json([ 'enabled' => get_setting('business_hours_enabled', '0') === '1', 'hours' => array_map(function (int $wd) use ($hoursByWeekday) { $h = $hoursByWeekday[$wd] ?? ['is_open' => 0, 'open_time' => '09:00:00', 'close_time' => '17:00:00']; return [ 'weekday' => $wd, 'isOpen' => (bool) $h['is_open'], 'openTime' => substr($h['open_time'], 0, 5), 'closeTime' => substr($h['close_time'], 0, 5), ]; }, BUSINESS_WEEKDAYS), 'holidays' => array_map(fn(array $h) => [ 'id' => (int) $h['id'], 'date' => $h['holiday_date'], 'name' => $h['name'], ], $holidays), ]); } $body = api_request_body(); $action = $body['action'] ?? ''; if ($action === 'save_hours') { set_setting('business_hours_enabled', !empty($body['enabled']) ? '1' : '0'); $incoming = (array) ($body['hours'] ?? []); $byWeekday = []; foreach ($incoming as $entry) { $byWeekday[(int) ($entry['weekday'] ?? -1)] = $entry; } $stmt = $pdo->prepare('UPDATE business_hours SET is_open=?, open_time=?, close_time=? WHERE weekday=?'); foreach (BUSINESS_WEEKDAYS as $wd) { $entry = $byWeekday[$wd] ?? null; $isOpen = !empty($entry['isOpen']) ? 1 : 0; $openTime = trim((string) ($entry['openTime'] ?? '09:00')) . ':00'; $closeTime = trim((string) ($entry['closeTime'] ?? '17:00')) . ':00'; $stmt->execute([$isOpen, $openTime, $closeTime, $wd]); } audit_log($staff['id'], 'Geschäftszeiten aktualisiert (Mobile App)'); api_json(['ok' => true]); } if ($action === 'add_holiday') { $date = trim((string) ($body['date'] ?? '')); $name = trim((string) ($body['name'] ?? '')); if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) api_error(422, 'INVALID_DATE', 'Bitte ein gültiges Datum angeben.'); if ($name === '') api_error(422, 'NAME_REQUIRED', 'Bitte einen Namen für den Feiertag angeben.'); $pdo->prepare('INSERT INTO business_holidays (holiday_date, name) VALUES (?,?)')->execute([$date, $name]); audit_log($staff['id'], "Feiertag hinzugefügt: {$name} ({$date}) (Mobile App)"); api_json(['id' => (int) $pdo->lastInsertId()]); } if ($action === 'delete_holiday') { $id = (int) ($body['id'] ?? 0); $pdo->prepare('DELETE FROM business_holidays WHERE id = ?')->execute([$id]); api_json(['ok' => true]); } api_error(422, 'INVALID_ACTION', 'Unbekannte Aktion.');