import 'package:comwell_key_app/common/components/comwell_app_bar.dart';
import 'package:comwell_key_app/common/components/comwell_text_field.dart';
import 'package:comwell_key_app/find_booking/cubit/find_booking_cubit.dart';
import 'package:comwell_key_app/find_booking/cubit/find_booking_state.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
import 'package:comwell_key_app/utils/l10n_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';

class FindBookingPage extends StatefulWidget {
  const FindBookingPage({super.key});

  @override
  FindBookingPageState createState() => FindBookingPageState();
}

class FindBookingPageState extends State<FindBookingPage>
    with SingleTickerProviderStateMixin {
  late TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(length: 4, vsync: this);
  }

  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);

    return BlocBuilder<FindBookingCubit, FindBookingState>(
        builder: (context, state) {
      final cubit = context.read<FindBookingCubit>();
      return Scaffold(
        appBar: const ComwellAppBar(),
        backgroundColor: Theme.of(context).colorScheme.surface,
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Text(
                'Find Booking',
                style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
              ),
              const SizedBox(height: 20),
              const SizedBox(height: 20),
              ComwellTextField(
                fieldName: context.strings.booking_reference,
                initialValue: '',
                readOnly: false,
                controller: cubit.confirmationIdController,
                textInputType: const TextInputType.numberWithOptions(signed: true),
              ),
              const SizedBox(height: 20),
              ComwellTextField(
                fieldName: context.strings.your_last_name,
                initialValue: '',
                readOnly: false,
                controller: cubit.lastNameController,
              ),
              const Spacer(),
              const SizedBox(height: 20),
            ],
          ),
        ),
        bottomNavigationBar: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            const Divider(color: colorDivider),
            Padding(
              padding: const EdgeInsets.only(
                  left: 16, right: 16, top: 16, bottom: 32),
              child: ElevatedButton(
                style: ElevatedButton.styleFrom(
                  minimumSize: const Size(double.infinity, 50),
                  backgroundColor: sandColor,
                  disabledBackgroundColor: disabledButtonColor,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(25),
                  ),
                ),
                onPressed: cubit.canContinue
                    ? () async {
                        await cubit.findBooking(
                            cubit.confirmationIdController.text,
                            cubit.lastNameController.text);
                        if (context.mounted) {
                          context.push(AppRoutes.loadingPage);
                        }
                      }
                    : null,
                child: Text(
                  'Find Booking',
                  style: theme.textTheme.headlineSmall?.copyWith(
                    color: Colors.white,
                  ),
                ),
              ),
            ),
          ],
        ),
      );
    });
  }
}