import 'package:dio/dio.dart'; import '../core/api_client.dart'; import '../models/petty_cash.dart'; class PettyCashService { final ApiClient _client; PettyCashService({ApiClient? client}) : _client = client ?? ApiClient(); Future> list({required int businessId, required Map queryInfo}) async { try { final res = await _client.post>( '/api/v1/petty-cash/businesses/$businessId/petty-cash', data: queryInfo, ); // Null safety checks final data = res.data ?? {}; if (data['items'] == null) { data['items'] = []; } return data; } catch (e) { // Return safe fallback data structure return { 'items': [], 'pagination': { 'total': 0, 'page': 1, 'per_page': queryInfo['take'] ?? 10, 'total_pages': 0, 'has_next': false, 'has_prev': false, }, 'query_info': queryInfo, }; } } Future create({required int businessId, required Map payload}) async { final res = await _client.post>( '/api/v1/petty-cash/businesses/$businessId/petty-cash/create', data: payload, ); final data = (res.data?['data'] as Map? ?? {}); if (data.isEmpty) { throw Exception('No data received from server'); } return PettyCash.fromJson(data); } Future getById(int id) async { final res = await _client.get>('/api/v1/petty-cash/petty-cash/$id'); final data = (res.data?['data'] as Map? ?? {}); return PettyCash.fromJson(data); } Future update({required int id, required Map payload}) async { final res = await _client.put>('/api/v1/petty-cash/petty-cash/$id', data: payload); final data = (res.data?['data'] as Map? ?? {}); return PettyCash.fromJson(data); } Future delete(int id) async { await _client.delete>('/api/v1/petty-cash/petty-cash/$id'); } Future>> exportExcel({required int businessId, required Map body}) async { return await _client.post>( '/api/v1/petty-cash/businesses/$businessId/petty-cash/export/excel', data: body, options: Options( responseType: ResponseType.bytes, ), ); } Future>> exportPdf({required int businessId, required Map body}) async { return await _client.post>( '/api/v1/petty-cash/businesses/$businessId/petty-cash/export/pdf', data: body, options: Options( responseType: ResponseType.bytes, ), ); } Future> bulkDelete({required int businessId, required List ids}) async { final res = await _client.post>( '/api/v1/petty-cash/businesses/$businessId/petty-cash/bulk-delete', data: {'ids': ids}, ); return (res.data ?? {}); } }