import '../core/api_client.dart'; import '../models/account_model.dart'; class AccountService { final ApiClient _client; AccountService({ApiClient? client}) : _client = client ?? ApiClient(); /// دریافت درخت حساب‌ها برای یک کسب و کار Future> getAccountsTree({required int businessId}) async { try { final res = await _client.get>( '/api/v1/accounts/business/$businessId/tree', ); // API پاسخ را در فیلد 'data' برمی‌گرداند final responseData = res.data?['data'] as Map?; return responseData ?? {'items': []}; } catch (e) { print('خطا در دریافت درخت حساب‌ها: $e'); return {'items': []}; } } /// دریافت لیست حساب‌ها برای یک کسب و کار Future> getAccounts({required int businessId}) async { try { final res = await _client.get>( '/api/v1/accounts/business/$businessId', ); final responseData = res.data?['data'] as Map?; return responseData ?? {'items': []}; } catch (e) { print('خطا در دریافت حساب‌ها: $e'); return {'items': []}; } } /// دریافت یک حساب خاص با ID Future> getAccount({ required int businessId, required int accountId, }) async { try { final res = await _client.get>( '/api/v1/accounts/business/$businessId/account/$accountId', ); final responseData = res.data?['data'] as Map?; if (responseData == null) { throw Exception('حساب یافت نشد'); } return responseData; } catch (e) { print('خطا در دریافت حساب $accountId: $e'); rethrow; } } /// جستجوی حساب‌ها Future> searchAccounts({ required int businessId, String? searchQuery, int limit = 50, }) async { try { final requestData = { 'take': limit, 'skip': 0, 'sort_by': 'name', 'sort_desc': false, }; if (searchQuery != null && searchQuery.isNotEmpty) { requestData['search'] = searchQuery; } final res = await _client.post>( '/api/v1/accounts/business/$businessId', data: requestData, ); final responseData = res.data?['data'] as Map?; return responseData ?? {'items': []}; } catch (e) { print('خطا در جستجوی حساب‌ها: $e'); return {'items': []}; } } }