import 'package:comwell_key_app/presentation/screens/booking_details/bloc/booking_details_cubit.dart';
import 'package:comwell_key_app/presentation/screens/booking_details/booking_details_page.dart';
import 'package:comwell_key_app/find_booking/loading_page.dart';
import 'package:comwell_key_app/overview/cubit/overview_cubit.dart';
import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/utils/locator.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';

final bookingDetailsRoute = GoRoute(
  path: AppRoutes.bookingDetails,
  builder: (context, state) {
    final booking = state.extra as Booking;
    return BlocProvider<BookingDetailsCubit>(
      create: (BuildContext context) => BookingDetailsCubit(
        booking: booking,
        locator(),
        locator(),
        locator(),
        locator(),
        locator(),
        locator(),
      ),
      child: const BookingDetailsPage(),
    );
  },
);

final bookingDetailsWithIdRoute = GoRoute(
  path: AppRoutes.bookingDetailsWithId,
  builder: (context, state) {
    final bookingId = state.pathParameters['id']!;
    context.read<OverviewCubit>().findBookingById(bookingId);
    return const LoadingPage();
  },
);