import 'dart:convert'; import 'package:http/http.dart' as http; class DailyWorkingApi { final http.Client client; DailyWorkingApi({required this.client}); /// Liefert Map weekday(1..7) -> Minuten (int) Future> getDailyMinutes() async { final uri = Uri.parse( 'https://api.windesign.at/workinghours.php?module=dailyworking&function=getList', ); final res = await client.get(uri); if (res.statusCode != 200) { throw Exception('dailyworking/getList failed: ${res.statusCode} ${res.body}'); } final map = jsonDecode(res.body) as Map; if (map['error'] == true) { throw Exception('dailyworking/getList error: ${map['errmsg']}'); } final entries = (map['entries'] as List?) ?? const []; if (entries.isEmpty) { return { 1: 8 * 60, 2: 8 * 60, 3: 8 * 60, 4: 8 * 60, 5: 8 * 60, 6: 0, 7: 0, }; } final row = entries.first as Map; int parseHHMMSS(String? s) { if (s == null || s.isEmpty) return 0; final parts = s.split(':'); if (parts.length < 2) return 0; final h = int.tryParse(parts[0]) ?? 0; final m = int.tryParse(parts[1]) ?? 0; return h * 60 + m; } return { 1: parseHHMMSS(row['monday'] as String?), 2: parseHHMMSS(row['tuesday'] as String?), 3: parseHHMMSS(row['wednesday'] as String?), 4: parseHHMMSS(row['thursday'] as String?), 5: parseHHMMSS(row['friday'] as String?), 6: parseHHMMSS(row['saturday'] as String?), 7: parseHHMMSS(row['sunday'] as String?), }; } }