import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/one_gang_switch/bloc/wall_light_switch_bloc.dart';
import 'package:syncrow_web/pages/device_managment/one_gang_switch/bloc/wall_light_switch_event.dart';
import 'package:syncrow_web/pages/device_managment/one_gang_switch/bloc/wall_light_switch_state.dart';
import 'package:syncrow_web/pages/device_managment/one_gang_switch/models/wall_light_status_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';

class WallLightBatchControlView extends StatelessWidget with HelperResponsiveLayout {
  const WallLightBatchControlView({super.key, required this.deviceIds});

  final List<String> deviceIds;

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => WallLightSwitchBloc(deviceId: deviceIds.first)
        ..add(WallLightSwitchFetchBatchEvent(deviceIds)),
      child: BlocBuilder<WallLightSwitchBloc, WallLightSwitchState>(
        builder: (context, state) {
          if (state is WallLightSwitchLoading) {
            return const Center(child: CircularProgressIndicator());
          } else if (state is WallLightSwitchStatusLoaded) {
            return _buildStatusControls(context, state.status);
          } else if (state is WallLightSwitchError || state is WallLightSwitchControlError) {
            return const Center(child: Text('Error fetching status'));
          } else {
            return const Center(child: CircularProgressIndicator());
          }
        },
      ),
    );
  }

  Widget _buildStatusControls(BuildContext context, WallLightStatusModel status) {
    final isExtraLarge = isExtraLargeScreenSize(context);
    final isLarge = isLargeScreenSize(context);
    final isMedium = isMediumScreenSize(context);
    return SizedBox(
      child: GridView(
        padding: const EdgeInsets.symmetric(horizontal: 50),
        shrinkWrap: true,
        physics: const NeverScrollableScrollPhysics(),
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: isLarge || isExtraLarge
              ? 3
              : isMedium
                  ? 2
                  : 1,
          mainAxisExtent: 140,
          crossAxisSpacing: 12,
          mainAxisSpacing: 12,
        ),
        children: [
          ToggleWidget(
            value: status.switch1,
            code: 'switch_1',
            deviceId: deviceIds.first,
            label: 'Wall Light',
            onChange: (value) {
              context.read<WallLightSwitchBloc>().add(
                    WallLightSwitchBatchControl(
                      devicesIds: deviceIds,
                      code: 'switch_1',
                      value: value,
                    ),
                  );
            },
          ),
          // FirmwareUpdateWidget(
          //   deviceId: deviceIds.first,
          //   version: 12,
          // ),
          FactoryResetWidget(
            callFactoryReset: () {
              context.read<WallLightSwitchBloc>().add(WallLightFactoryReset(
                  deviceId: status.uuid, factoryReset: FactoryResetModel(devicesUuid: deviceIds)));
            },
          ),
        ],
      ),
    );
  }
}
