You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
workingHoursFlutter/lib/api/daily_working_api.dart

48 lines
1.6 KiB
Dart

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<Map<int, int>> 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<String, dynamic>;
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<String, dynamic>;
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?),
};
}
}