import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/devices/bloc/three_gang_bloc/three_gang_bloc.dart';
import 'package:syncrow_app/features/devices/bloc/three_gang_bloc/three_gang_event.dart';
import 'package:syncrow_app/features/devices/bloc/three_gang_bloc/three_gang_state.dart';
import 'package:syncrow_app/features/devices/model/group_three_gang_model.dart';
import 'package:syncrow_app/features/shared_widgets/devices_default_switch.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';

class ThreeGangList extends StatelessWidget {
  const ThreeGangList(
      {super.key, required this.threeGangList, required this.allSwitches});

  final List<GroupThreeGangModel> threeGangList;
  final bool allSwitches;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<ThreeGangBloc, ThreeGangState>(
      builder: (context, state) {
        return SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              const SizedBox(height: 10),
              const BodySmall(text: 'All Lights'),
              const SizedBox(height: 5),
              DevicesDefaultSwitch(
                off: 'OFF',
                on: 'ON',
                switchValue: allSwitches,
                action: () {
                  BlocProvider.of<ThreeGangBloc>(context)
                      .add(GroupAllOnEvent());
                },
                secondAction: () {
                  BlocProvider.of<ThreeGangBloc>(context)
                      .add(GroupAllOffEvent());
                },
              ),
              ListView.builder(
                shrinkWrap: true,
                physics: const NeverScrollableScrollPhysics(),
                padding: const EdgeInsets.all(0),
                itemCount: threeGangList.length,
                itemBuilder: (context, index) {
                  return Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      const SizedBox(height: 10),
                      BodySmall(
                          text:
                              '${threeGangList[index].deviceName} beside light'),
                      const SizedBox(height: 5),
                      DevicesDefaultSwitch(
                        off: 'OFF',
                        on: 'ON',
                        switchValue: threeGangList[index].firstSwitch,
                        action: () {
                          BlocProvider.of<ThreeGangBloc>(context).add(
                              ChangeFirstSwitchStatusEvent(
                                  value: threeGangList[index].firstSwitch,
                                  deviceId: threeGangList[index].deviceId));
                        },
                      ),
                      const SizedBox(height: 10),
                      BodySmall(
                          text:
                              '${threeGangList[index].deviceName} ceiling light'),
                      const SizedBox(height: 5),
                      DevicesDefaultSwitch(
                        off: 'OFF',
                        on: 'ON',
                        switchValue: threeGangList[index].secondSwitch,
                        action: () {
                          BlocProvider.of<ThreeGangBloc>(context).add(
                              ChangeSecondSwitchStatusEvent(
                                  value: threeGangList[index].secondSwitch,
                                  deviceId: threeGangList[index].deviceId));
                        },
                      ),
                      const SizedBox(height: 10),
                      BodySmall(
                          text: '${threeGangList[index].deviceName} spotlight'),
                      const SizedBox(height: 5),
                      DevicesDefaultSwitch(
                        off: 'OFF',
                        on: 'ON',
                        switchValue: threeGangList[index].thirdSwitch,
                        action: () {
                          BlocProvider.of<ThreeGangBloc>(context).add(
                              ChangeThirdSwitchStatusEvent(
                                  value: threeGangList[index].thirdSwitch,
                                  deviceId: threeGangList[index].deviceId));
                        },
                      ),
                    ],
                  );
                },
              ),
            ],
          ),
        );
      },
    );
  }
}
