import 'package:syncrow_app/features/scene/model/create_scene_model.dart'; import 'package:syncrow_app/features/scene/model/scene_details_model.dart'; import 'package:syncrow_app/features/scene/model/scenes_model.dart'; import 'package:syncrow_app/services/api/api_links_endpoints.dart'; import 'package:syncrow_app/services/api/http_service.dart'; class SceneApi { static final HTTPService _httpService = HTTPService(); static Future> createScene( CreateSceneModel createSceneModel) async { try { final response = await _httpService.post( path: ApiEndpoints.createScene, body: createSceneModel.toJson(), showServerMessage: false, expectedResponseModel: (json) { return json; }, ); return response; } catch (e) { rethrow; } } static Future> getScenesByUnitId(String unitId) async { try { final response = await _httpService.get( path: ApiEndpoints.getUnitScenes.replaceAll('{unitUuid}', unitId), showServerMessage: false, expectedResponseModel: (json) { List scenes = []; for (var scene in json) { scenes.add(ScenesModel.fromJson(scene)); } return scenes; }, ); return response; } catch (e) { rethrow; } } static Future triggerScene(String sceneId) async { try { final response = await _httpService.post( path: ApiEndpoints.triggerScene.replaceAll('{sceneId}', sceneId), showServerMessage: false, expectedResponseModel: (json) => json['success'], ); return response; } catch (e) { rethrow; } } //getScene static Future getSceneDetails(String sceneId) async { try { final response = await _httpService.get( path: ApiEndpoints.getScene.replaceAll('{sceneId}', sceneId), showServerMessage: false, expectedResponseModel: (json) => SceneDetailsModel.fromJson(json), ); return response; } catch (e) { rethrow; } } //updateScene static updateScene(CreateSceneModel createSceneModel, String sceneId) async { try { final response = await _httpService.put( path: ApiEndpoints.updateScene.replaceAll('{sceneId}', sceneId), body: createSceneModel .toJson(sceneId.isNotEmpty == true ? sceneId : null), expectedResponseModel: (json) { return json; }, ); return response; } catch (e) { rethrow; } } //deleteScene static Future deleteScene( {required String unitUuid, required String sceneId}) async { try { final response = await _httpService.delete( path: ApiEndpoints.deleteScene .replaceAll('{sceneId}', sceneId) .replaceAll('{unitUuid}', unitUuid), showServerMessage: false, expectedResponseModel: (json) => json['statusCode'] == 200, ); return response; } catch (e) { rethrow; } } }