import 'package:finlytic_app/core/network/api_client.dart'; import 'package:finlytic_app/features/admin/models/admin_user_model.dart'; import 'package:finlytic_app/features/admin/models/admin_create_user_request_dto.dart'; import 'package:finlytic_app/features/admin/models/admin_update_user_request_dto.dart'; import 'package:finlytic_app/features/admin/models/service_setting_dto.dart'; class AdminRepository { final ApiClient apiClient; const AdminRepository({required this.apiClient}); Future> fetchUsers() async { try { final res = await apiClient.get('/api/v1/admin/users'); if (res.statusCode == 200 && res.data != null) { final List data = res.data; return data.map((json) => AdminUserModel.fromJson(json)).toList(); } return []; } catch (e) { throw Exception('Nutzer konnten nicht geladen werden: $e'); } } Future createUser(AdminCreateUserRequestDto dto) async { final res = await apiClient.post('/api/v1/admin/users', data: dto.toJson()); if (res.statusCode != 200 && res.statusCode != 201) { throw Exception('Erstellen fehlgeschlagen'); } } Future updateUser(String id, AdminUpdateUserRequestDto dto) async { final res = await apiClient.put('/api/v1/admin/users/$id', data: dto.toJson()); if (res.statusCode != 200) { throw Exception('Aktualisieren fehlgeschlagen'); } } Future>> fetchSettings() async { final res = await apiClient.get('/api/v1/admin/settings'); if (res.statusCode == 200 && res.data != null && res.data is Map) { final map = res.data as Map; final result = >{}; map.forEach((k, v) { if (v is List) { result[k] = v .whereType>() .map((item) => ServiceSettingDto.fromJson(item)) .toList(); } }); return result; } return {}; } Future updateServiceSettings(String serviceName, Map settings) async { final res = await apiClient.put('/api/v1/admin/settings/$serviceName', data: settings); if (res.statusCode != 200 && res.statusCode != 204) { throw Exception('Einstellungen konnten nicht gespeichert werden'); } } }