marco.pms.mobileapp/lib/helpers/services/permission_service.dart

54 lines
1.8 KiB
Dart

import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:marco/model/user_permission.dart';
import 'package:marco/model/employee_info.dart';
class PermissionService {
static Future<List<UserPermission>> fetchPermissions(String token) async {
try {
final response = await http.get(
Uri.parse('https://stageapi.marcoaiot.com/api/user/profile'),
headers: {'Authorization': 'Bearer $token'},
);
if (response.statusCode == 200) {
final decoded = json.decode(response.body);
final List<dynamic> featurePermissions = decoded['data']['featurePermissions'];
return featurePermissions
.map<UserPermission>((permissionId) => UserPermission.fromJson({'id': permissionId}))
.toList();
} else {
final errorData = json.decode(response.body);
throw Exception('Failed to load permissions: ${errorData['message']}');
}
} catch (e) {
print('Error fetching permissions: $e');
throw Exception('Error fetching permissions: $e');
}
}
// New method to fetch employee info
static Future<EmployeeInfo> fetchEmployeeInfo(String token) async {
try {
final response = await http.get(
Uri.parse('https://stageapi.marcoaiot.com/api/user/profile'),
headers: {'Authorization': 'Bearer $token'},
);
if (response.statusCode == 200) {
final decoded = json.decode(response.body);
final employeeData = decoded['data']['employeeInfo'];
return EmployeeInfo.fromJson(employeeData);
} else {
final errorData = json.decode(response.body);
throw Exception('Failed to load employee info: ${errorData['message']}');
}
} catch (e) {
print('Error fetching employee info: $e');
throw Exception('Error fetching employee info: $e');
}
}
}