import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.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/pages/device_managment/water_heater/bloc/water_heater_bloc.dart';
import 'package:syncrow_web/pages/device_managment/water_heater/factories/water_heater_bloc_factory.dart';
import 'package:syncrow_web/pages/device_managment/water_heater/models/water_heater_status_model.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';

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

  final List<String> deviceIds;

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => WaterHeaterBlocFactory.create(
        deviceId: deviceIds.first,
      )..add(FetchWaterHeaterBatchStatusEvent(devicesUuid: deviceIds)),
      child: BlocBuilder<WaterHeaterBloc, WaterHeaterState>(
        builder: (context, state) {
          if (state is WaterHeaterLoadingState) {
            return const Center(child: CircularProgressIndicator());
          } else if (state is WaterHeaterDeviceStatusLoaded) {
            return _buildStatusControls(context, state.status);
          } else if (state is WaterHeaterBatchFailedState) {
            return const Center(child: Text('Error fetching status'));
          } else {
            return const Center(child: CircularProgressIndicator());
          }
        },
      ),
    );
  }

  Widget _buildStatusControls(BuildContext context, WaterHeaterStatusModel 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.heaterSwitch,
            code: 'switch_1',
            deviceId: deviceIds.first,
            label: 'Water Heater',
            icon: Assets.waterHeater,
            onChange: (value) {
              context.read<WaterHeaterBloc>().add(
                    ControlWaterHeaterBatchEvent(
                      devicesUuid: deviceIds,
                      code: 'switch_1',
                      value: value,
                    ),
                  );
            },
          ),
          // FirmwareUpdateWidget(
          //   deviceId: deviceIds.first,
          //   version: 12,
          // ),
          FactoryResetWidget(
            callFactoryReset: () {},
          ),
        ],
      ),
    );
  }
}
