import '../core/api_client.dart'; import '../models/warehouse_model.dart'; class WarehouseService { final ApiClient _api; WarehouseService({ApiClient? apiClient}) : _api = apiClient ?? ApiClient(); Future> listWarehouses({required int businessId}) async { final res = await _api.get>('/api/v1/warehouses/business/$businessId'); final data = res.data?['data'] as Map? ?? {}; final items = data['items'] as List? ?? const []; return items.map((e) => Warehouse.fromJson(Map.from(e as Map))).toList(); } Future createWarehouse({required int businessId, required Map payload}) async { final res = await _api.post>('/api/v1/warehouses/business/$businessId', data: payload); final data = (res.data?['data'] as Map? ?? {}); return Warehouse.fromJson(data); } Future getWarehouse({required int businessId, required int warehouseId}) async { final res = await _api.get>('/api/v1/warehouses/business/$businessId/$warehouseId'); final data = (res.data?['data']?['item'] as Map? ?? {}); return Warehouse.fromJson(data); } Future updateWarehouse({required int businessId, required int warehouseId, required Map payload}) async { final res = await _api.put>('/api/v1/warehouses/business/$businessId/$warehouseId', data: payload); final data = (res.data?['data'] as Map? ?? {}); return Warehouse.fromJson(data); } Future deleteWarehouse({required int businessId, required int warehouseId}) async { final res = await _api.delete>('/api/v1/warehouses/business/$businessId/$warehouseId'); return res.statusCode == 200 && (res.data?['data']?['deleted'] == true); } Future> createFromInvoice({ required int businessId, required int invoiceId, Map? body, }) async { final res = await _api.post>( '/api/v1/warehouse-docs/business/$businessId/from-invoice/$invoiceId', data: body ?? const {}, ); return Map.from(res.data?['data'] ?? const {}); } Future> postDoc({ required int businessId, required int docId, }) async { final res = await _api.post>( '/api/v1/warehouse-docs/business/$businessId/$docId/post', data: const {}, ); return Map.from(res.data?['data'] ?? const {}); } Future> getDoc({ required int businessId, required int docId, }) async { final res = await _api.get>( '/api/v1/warehouse-docs/business/$businessId/$docId', ); return Map.from(res.data?['data'] ?? const {}); } Future> search({ required int businessId, int page = 1, int limit = 20, Map? filters, }) async { final body = { 'take': limit, 'skip': (page - 1) * limit, ...?filters, }; final res = await _api.post>( '/api/v1/warehouse-docs/business/$businessId/search', data: body, ); return Map.from(res.data?['data'] ?? const {}); } }