hesabixArc/hesabixUI/hesabix_ui/lib/services/business_user_service.dart

66 lines
2.1 KiB
Dart

import '../core/api_client.dart';
import '../models/business_user_model.dart';
class BusinessUserService {
final ApiClient _apiClient;
BusinessUserService(this._apiClient);
/// Get all users for a business
Future<BusinessUsersResponse> getBusinessUsers(int businessId) async {
try {
final response = await _apiClient.get('/api/v1/business/$businessId/users');
return BusinessUsersResponse.fromJson(response.data['data']);
} catch (e) {
throw Exception('Failed to fetch business users: $e');
}
}
/// Add a new user to business
Future<AddUserResponse> addUser(AddUserRequest request) async {
try {
final response = await _apiClient.post(
'/api/v1/business/${request.businessId}/users',
data: request.toJson(),
);
return AddUserResponse.fromJson(response.data);
} catch (e) {
throw Exception('Failed to add user: $e');
}
}
/// Update user permissions
Future<UpdatePermissionsResponse> updatePermissions(UpdatePermissionsRequest request) async {
try {
final response = await _apiClient.put(
'/api/v1/business/${request.businessId}/users/${request.userId}/permissions',
data: request.toJson(),
);
return UpdatePermissionsResponse.fromJson(response.data['data']);
} catch (e) {
throw Exception('Failed to update permissions: $e');
}
}
/// Remove user from business
Future<RemoveUserResponse> removeUser(RemoveUserRequest request) async {
try {
final response = await _apiClient.delete(
'/api/v1/business/${request.businessId}/users/${request.userId}',
);
return RemoveUserResponse.fromJson(response.data);
} catch (e) {
throw Exception('Failed to remove user: $e');
}
}
/// Get user details
Future<BusinessUser> getUserDetails(int businessId, int userId) async {
try {
final response = await _apiClient.get('/api/v1/business/$businessId/users/$userId');
return BusinessUser.fromJson(response.data['data']['user']);
} catch (e) {
throw Exception('Failed to fetch user details: $e');
}
}
}