import 'package:sidak_desa_mobile/core/api/api.dart'; import 'dart:convert'; import 'package:http/http.dart' as http; class AttedanceApi { Future> verifyAttendance({ required String token, required int userId, String? deviceInfo, double? latitude, double? longitude, }) async { final uri = Uri.parse('${Apiconfig.baseUrl}/api/attendance/verify'); final res = await http.post( uri, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, body: jsonEncode({ 'token': token, 'user_id': userId, 'device_info': deviceInfo, // boleh null 'latitude': latitude, 'longitude': longitude, }), ); final data = jsonDecode(res.body); if (res.statusCode >= 200 && res.statusCode < 300) { if (data is Map) return data; return {'data': data}; } // Laravel biasanya kasih message + errors if (data is Map) { final msg = (data['message'] ?? 'Verifikasi absen gagal').toString(); throw Exception(msg); } throw Exception('Verifikasi absen gagal'); } Future> getDailyAttendance({ required int userId, required String date, }) async { final url = Uri.parse( "${Apiconfig.baseUrl}/api/riwayat/$userId?date=$date", ); final response = await http.get( url, headers: {'Accept': 'application/json'}, ); print("DAILY STATUS: ${response.statusCode}"); print("DAILY BODY: ${response.body}"); final data = jsonDecode(response.body); if (response.statusCode == 200 && data['ok'] == true) { return data; } throw Exception("Gagal ambil data"); } }