diff --git a/lib/pages/routines/models/gateway.dart b/lib/pages/routines/models/gateway.dart new file mode 100644 index 00000000..be257a8b --- /dev/null +++ b/lib/pages/routines/models/gateway.dart @@ -0,0 +1,108 @@ +import 'package:syncrow_web/pages/routines/models/device_functions.dart'; +import 'package:syncrow_web/utils/constants/assets.dart'; + +class GatewayOperationalValue { + final String icon; + final String description; + final dynamic value; + + GatewayOperationalValue({ + required this.icon, + required this.description, + required this.value, + }); +} + +abstract class GatewayFunctions extends DeviceFunction { + final String type; + + GatewayFunctions({ + required super.deviceId, + required super.deviceName, + required super.code, + required super.operationName, + required super.icon, + required this.type, + }); + + List getOperationalValues(); +} + +final class GatewaySwitchAlarmSound extends GatewayFunctions { + GatewaySwitchAlarmSound({ + required super.deviceId, + required super.deviceName, + required super.type, + super.code = '', + super.operationName = 'Switch Alarm Sound', + super.icon = Assets.activeBell, + }); + + @override + List getOperationalValues() => [ + GatewayOperationalValue( + icon: Assets.assetsAcPower, + description: "ON", + value: true, + ), + GatewayOperationalValue( + icon: Assets.assetsAcPowerOFF, + description: "OFF", + value: false, + ), + ]; +} + +final class GatewayMasterState extends GatewayFunctions { + GatewayMasterState({ + required super.deviceId, + required super.deviceName, + required super.type, + super.code = '', + super.operationName = 'Master State', + super.icon = Assets.gear, + }); + + @override + List getOperationalValues() { + return [ + GatewayOperationalValue( + icon: Assets.assetsAcPower, + description: "Normal", + value: true, + ), + GatewayOperationalValue( + icon: Assets.assetsAcPowerOFF, + description: "Alarm", + value: false, + ), + ]; + } +} + +final class GatewayFactoryReset extends GatewayFunctions { + GatewayFactoryReset({ + required super.deviceId, + required super.deviceName, + required super.type, + super.code = '', + super.operationName = 'Factory Reset', + super.icon = Assets.factoryReset, + }); + + @override + List getOperationalValues() { + return [ + GatewayOperationalValue( + icon: Assets.assetsAcPower, + description: "ON", + value: true, + ), + GatewayOperationalValue( + icon: Assets.assetsAcPowerOFF, + description: "OFF", + value: false, + ), + ]; + } +}