import 'package:test_sa/api/devices_api_client.dart'; import 'package:test_sa/controllers/providers/loading_notifier.dart'; import '../../../models/device/device.dart'; class DevicesProvider extends LoadingNotifier { final List _searchableList = []; List get searchableList => _searchableList; //reset provider data void reset() { DevicesApiClient().devices.clear(); _stateCode = null; } // state code of current request to defied error message // like 400 customer request failed // 500 service not available int? _stateCode; int? get stateCode => _stateCode; /// - Fetching Devices From The Server and Inserting them into [DevicesApiClient.devices] List. /// - [_searchableList] will be filled after the request succeed. /// /// ### NOTE : if [hospitalId] is [NULL] nothing will happen Future getEquipment({required String? hospitalId}) async { if (hospitalId != null) { _searchableList.clear(); await waitApiRequest( () async { await DevicesApiClient().getEquipment(hospitalId); _searchableList.addAll(DevicesApiClient().devices); }, onSuccess: () { /// TODO : this is temporary _stateCode = 200; }, onError: (error) { /// TODO : this is temporary _stateCode = error.error?.errorCode; }, ); } } /// Returns a list of devices by [hospitalId] and [serialNumber] (or | and) [number] /// /// ### NOTE : if [hospitalId] is [NULL] empty list will be returned Future> getDevicesList({required String? hospitalId, String? serialNumber, String? number}) { if (hospitalId == null) return Future.value(const []); return DevicesApiClient().getDevicesList(hospitalId: hospitalId, serialNumber: serialNumber, number: number); } /// Returns a list of devices by [hospitalId] (and optionally) [serialNumber] /// /// ### NOTE : if [hospitalId] is [NULL] empty list will be returned Future> getDevicesListBySN({required String? hospitalId, required String serialNumber}) { if (hospitalId == null) return Future.value(const []); return DevicesApiClient().getDevicesListBySN(hospitalId: hospitalId, serialNumber: serialNumber); } }