import 'package:equatable/equatable.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/wall_sensor/model/wall_sensor_model.dart';

abstract class WallSensorEvent extends Equatable {
  const WallSensorEvent();

  @override
  List<Object> get props => [];
}

class WallSensorFetchStatusEvent extends WallSensorEvent {}

class WallSensorChangeValueEvent extends WallSensorEvent {
  final int value;
  final String code;
  const WallSensorChangeValueEvent({required this.value, required this.code});

  @override
  List<Object> get props => [value, code];
}

class WallSensorFetchBatchStatusEvent extends WallSensorEvent {
  final List<String> devicesIds;
  const WallSensorFetchBatchStatusEvent(this.devicesIds);

  @override
  List<Object> get props => [devicesIds];
}

class GetDeviceReportsEvent extends WallSensorEvent {
  final String deviceUuid;
  final String code;
  const GetDeviceReportsEvent({
    required this.deviceUuid,
    required this.code,
  });

  @override
  List<Object> get props => [deviceUuid, code];
}

class ShowDescriptionEvent extends WallSensorEvent {
  final String description;
  const ShowDescriptionEvent({required this.description});
}

class BackToGridViewEvent extends WallSensorEvent {}

class WallSensorBatchControlEvent extends WallSensorEvent {
  final List<String> deviceIds;
  final String code;
  final dynamic value;

  const WallSensorBatchControlEvent({
    required this.deviceIds,
    required this.code,
    required this.value,
  });

  @override
  List<Object> get props => [deviceIds, code, value];
}

class WallSensorFactoryResetEvent extends WallSensorEvent {
  final String deviceId;
  final FactoryResetModel factoryReset;

  const WallSensorFactoryResetEvent({
    required this.deviceId,
    required this.factoryReset,
  });
}

class WallSensorRealtimeUpdateEvent extends WallSensorEvent {
  final WallSensorModel deviceStatus;
  const WallSensorRealtimeUpdateEvent(this.deviceStatus);
}
