import 'package:syncrow_web/pages/routines/models/gang_switches/base_switch_function.dart';
import 'package:syncrow_web/pages/routines/models/gang_switches/switch_operational_value.dart';
import 'package:syncrow_web/utils/constants/assets.dart';

class ThreeGangSwitch1Function extends BaseSwitchFunction {
  ThreeGangSwitch1Function({required super.deviceId, required super.deviceName ,required type})
      : super(
          code: 'switch_1',
          operationName: 'Light 1 Switch',
          icon: Assets.assetsAcPower,
        );

  @override
  List<SwitchOperationalValue> getOperationalValues() => [
        SwitchOperationalValue(
          icon: Assets.assetsAcPower,
          description: "ON",
          value: true,
        ),
        SwitchOperationalValue(
          icon: Assets.assetsAcPowerOFF,
          description: "OFF",
          value: false,
        ),
      ];
}

class ThreeGangCountdown1Function extends BaseSwitchFunction {
  ThreeGangCountdown1Function({required super.deviceId, required super.deviceName ,required type})
      : super(
          code: 'countdown_1',
          operationName: 'Light 1 Countdown',
          icon: Assets.assetsLightCountdown,
        );

  @override
  List<SwitchOperationalValue> getOperationalValues() => [
        SwitchOperationalValue(
          icon: '',
          description: "sec",
          value: 0.0,
          minValue: 0,
          maxValue: 43200,
          stepValue: 1,
        ),
      ];
}

class ThreeGangSwitch2Function extends BaseSwitchFunction {
  ThreeGangSwitch2Function({required super.deviceId, required super.deviceName, required type})
      : super(
          code: 'switch_2',
          operationName: 'Light 2 Switch',
          icon: Assets.assetsAcPower,
        );

  @override
  List<SwitchOperationalValue> getOperationalValues() => [
        SwitchOperationalValue(
          icon: Assets.assetsAcPower,
          description: "ON",
          value: true,
        ),
        SwitchOperationalValue(
          icon: Assets.assetsAcPowerOFF,
          description: "OFF",
          value: false,
        ),
      ];
}

class ThreeGangCountdown2Function extends BaseSwitchFunction {
  ThreeGangCountdown2Function({required super.deviceId, required super.deviceName ,required type})
      : super(
          code: 'countdown_2',
          operationName: 'Light 2 Countdown',
          icon: Assets.assetsLightCountdown,
        );

  @override
  List<SwitchOperationalValue> getOperationalValues() => [
        SwitchOperationalValue(
          icon: '',
          description: "sec",
          value: 0.0,
          minValue: 0,
          maxValue: 43200,
          stepValue: 1,
        ),
      ];
}

class ThreeGangSwitch3Function extends BaseSwitchFunction {
  ThreeGangSwitch3Function({required super.deviceId, required super.deviceName ,required type})
      : super(
          code: 'switch_3',
          operationName: 'Light 3 Switch',
          icon: Assets.assetsAcPower,
        );

  @override
  List<SwitchOperationalValue> getOperationalValues() => [
        SwitchOperationalValue(
          icon: Assets.assetsAcPower,
          description: "ON",
          value: true,
        ),
        SwitchOperationalValue(
          icon: Assets.assetsAcPowerOFF,
          description: "OFF",
          value: false,
        ),
      ];
}

class ThreeGangCountdown3Function extends BaseSwitchFunction {
  ThreeGangCountdown3Function({required super.deviceId, required super.deviceName ,required type})
      : super(
          code: 'countdown_3',
          operationName: 'Light 3 Countdown',
          icon: Assets.assetsLightCountdown,
        );

  @override
  List<SwitchOperationalValue> getOperationalValues() => [
        SwitchOperationalValue(
          icon: '',
          description: "sec",
          value: 0.0,
          minValue: 0,
          maxValue: 43200,
          stepValue: 1,
        ),
      ];
}
