import 'dart:convert'; import 'package:flutter/cupertino.dart'; import 'package:test_sa/models/device/device.dart'; import '../controllers/api_routes/urls.dart'; import 'api_client.dart'; class DevicesApiClient { static final DevicesApiClient _instance = DevicesApiClient._internal(); final List devices = []; DevicesApiClient._internal(); factory DevicesApiClient() => _instance; /// Fetch devices by [hospitalId] and insert the result into [devices] list Future getEquipment(String hospitalId) async { final response = await ApiClient().getJsonForResponse(URLs.host1 + URLs.getEquipment, queryParameters: {'client': hospitalId}); List equipmentListJson = json.decode(utf8.decode(response.bodyBytes)); devices.clear(); devices.addAll(equipmentListJson.map((device) => Device.fromJson(device)).toList()); debugPrint("devices : ${devices.length}"); } /// Returns a list of devices by [hospitalId] and [serialNumber] (or | and) [number] Future> getDevicesList({required String hospitalId, String? serialNumber, String? number}) async { final response = await ApiClient().getJsonForResponse( URLs.host1 + URLs.getEquipment, queryParameters: { 'client': hospitalId, if (serialNumber?.isEmpty == false) 'name': serialNumber, if (number?.isEmpty == false) 'number': number, }, ); List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); return categoriesListJson.map((device) => Device.fromJson(device)).toList(); } /// Returns a list of devices by [hospitalId] (and optionally) [serialNumber] Future> getDevicesListBySN({required String hospitalId, required String serialNumber}) async { final response = await ApiClient().getJsonForResponse( URLs.host1 + URLs.getEquipment, queryParameters: { 'client': hospitalId, if (serialNumber.isNotEmpty) 'serial_qr': serialNumber, }, ); List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); return categoriesListJson.map((device) => Device.fromJson(device)).toList(); } }