import 'package:flutter/material.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/device_status.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/pages/visitor_password/model/device_model.dart'; import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/utils/constants/api_const.dart'; class DevicesManagementApi { Future> fetchDevices() async { try { final response = await HTTPService().get( path: ApiEndpoints.getAllDevices, showServerMessage: true, expectedResponseModel: (json) { List jsonData = json; List devicesList = jsonData.map((jsonItem) { return AllDevicesModel.fromJson(jsonItem); }).toList(); return devicesList; }, ); return response; } catch (e) { debugPrint('Error fetching $e'); return []; } } Future getDeviceStatus(String uuid) async { try { final response = await HTTPService().get( path: ApiEndpoints.getDeviceStatus.replaceAll('{uuid}', uuid), showServerMessage: true, expectedResponseModel: (json) { return DeviceStatus.fromJson(json); }, ); return response; } catch (e) { debugPrint('Error fetching $e'); return DeviceStatus( productUuid: '', productType: '', status: [], ); } } //deviceControl Future deviceControl(String uuid, Status status) async { try { final response = await HTTPService().post( path: ApiEndpoints.deviceControl.replaceAll('{uuid}', uuid), body: status.toMap(), showServerMessage: true, expectedResponseModel: (json) { return json['success'] ?? false; }, ); return response; } catch (e) { debugPrint('Error fetching $e'); return false; } } static Future> getDevicesByGatewayId( String gatewayId) async { final response = await HTTPService().get( path: ApiEndpoints.gatewayApi.replaceAll('{gatewayUuid}', gatewayId), showServerMessage: false, expectedResponseModel: (json) { List devices = []; if (json == null || json.isEmpty || json == []) { return devices; } for (var device in json['devices']) { devices.add(DeviceModel.fromJson(device)); } return devices; }, ); return response; } static Future openDoorLock(String deviceId) async { final response = await HTTPService().post( path: ApiEndpoints.openDoorLock.replaceAll('{doorLockUuid}', deviceId), showServerMessage: false, expectedResponseModel: (json) { return json['success'] ?? false; }, ); return response; } }