import 'package:comwell_key_app/choose_share_room/components/my_room_widget.dart';
import 'package:comwell_key_app/choose_share_room/cubit/choose_share_room_cubit.dart';
import 'package:comwell_key_app/choose_share_room/cubit/choose_share_room_state.dart';
import 'package:comwell_key_app/common/components/comwell_app_bar.dart';
import 'package:comwell_key_app/common/components/comwell_error_widget.dart';
import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/utils/l10n_utils.dart';
import 'package:flutter/material.dart';
import 'package:comwell_key_app/choose_share_room/components/choose_room_widget.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:comwell_key_app/common/components/shimmer_loader/choose_share_room_shimmer_loader.dart';

class ChooseShareRoomPage extends StatelessWidget {
  final Booking booking;

  const ChooseShareRoomPage({super.key, required this.booking});

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    final cubit = context.read<ChooseShareRoomCubit>();
    return Scaffold(
      backgroundColor: Theme.of(context).colorScheme.surface,
      appBar: const ComwellAppBar(),
      body: BlocBuilder<ChooseShareRoomCubit, ChooseShareRoomState>(
        builder: (context, state) {
          if (state.isLoading) {
            return const ChooseShareRoomShimmerLoader();
          }

          if (state.errorMessage.isNotEmpty) {
            return Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  ComwellErrorWidget(
                    title: context.strings.choose_room_error_title,
                    subtitle: context.strings.choose_room_error_subtitle,
                  ),
                ],
              ),
            );
          }

          return Padding(
            padding: const EdgeInsets.symmetric(horizontal: 16),
            child: ListView(
              children: [
                const SizedBox(height: 24),
                Text(
                  context.strings.choose_room,
                  style: theme.textTheme.headlineLarge,
                ),
                const SizedBox(height: 8),
                Text(
                  context.strings.choose_room_subtitle,
                  style: theme.textTheme.bodySmall,
                ),
                const SizedBox(height: 24),
                ...state.rooms
                    .where((room) => room.assignedTo == null)
                    .map(
                      (room) => ChooseRoomWidget(
                        booking: booking,
                        roomName: room.name,
                        description: room.description,
                        guests: room.guests,
                        imageAsset: room.imageAssets.first,
                      ),
                    ),
                const SizedBox(height: 32),
                if (state.rooms.any((room) => room.assignedTo != null))
                  ...state.rooms
                      .where((room) => room.assignedTo != null)
                      .map(
                        (room) => MyRoomWidget(
                          roomName: room.name,
                          description: room.description,
                          guests: room.guests,
                          imageAsset: room.imageAssets.first,
                        ),
                      ),
                const SizedBox(height: 32),
              ],
            ),
          );
        },
      ),
    );
  }
}