import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:responsive_framework/responsive_framework.dart' as r;

import '../modules/about_us/bindings/about_us_binding.dart';
import '../modules/about_us/views/about_us_view.dart';
import '../modules/account_statement/bindings/account_statement_binding.dart';
import '../modules/account_statement/views/account_statement_view.dart';
import '../modules/add_money/bindings/add_money_binding.dart';
import '../modules/add_money/bindings/add_money_otp_binding.dart';
import '../modules/add_money/bindings/payment_method_binding.dart';
import '../modules/add_money/views/add_money_view.dart';
import '../modules/add_money/views/shared/currency_list_screen.dart';
import '../modules/add_money/views/shared/otp_add_money.dart';
import '../modules/add_money/views/shared/payment_method_view.dart';
import '../modules/add_new_account/bindings/add_new_binding.dart';
import '../modules/add_new_account/views/add_new_account_view.dart';
import '../modules/agent_location/bindings/agent_location_binding.dart';
import '../modules/agent_location/views/agent_location_view.dart';
import '../modules/app_intro/bindings/intro_screen_binding.dart';
import '../modules/app_intro/views/intro_screen_view.dart';
import '../modules/app_setting/bindings/app_setting_binding.dart';
import '../modules/app_setting/views/app_setting_view.dart';
import '../modules/beneficiary_management/bindings/beneficiary_management_binding.dart';
import '../modules/beneficiary_management/views/beneficiary_management_view.dart';
import '../modules/beneficiary_transfer_money/bindings/beneficiary_transfer_binding.dart';
import '../modules/beneficiary_transfer_money/views/beneficiary_transfer_view.dart';
import '../modules/beneficiary_transfer_money_otp/bindings/beneficiary_transfer_otp_binding.dart';
import '../modules/beneficiary_transfer_money_otp/views/beneficiary_transfer_otp_view.dart';
import '../modules/bill_management/bindings/bill_management_binding.dart';
import '../modules/bill_management/views/bill_management_view.dart';
import '../modules/bill_management_category/bindings/bill_management_category_binding.dart';
import '../modules/bill_management_category/views/bill_management_category_view.dart';
import '../modules/career/bindings/career_binding.dart';
import '../modules/career/views/career_view.dart';
import '../modules/change_transaction_pin/bindings/change_transaction_pin_binding.dart';
import '../modules/change_transaction_pin/views/change_transaction_pin_view.dart';

// import '../modules/change_transaction_pin_otp/bindings/change_transaction_pin_otp_binding.dart';
// import '../modules/change_transaction_pin_otp/views/change_transaction_pin_otp_view.dart';
import '../modules/change_transaction_pin_otp/bindings/change_transaction_pin_otp_binding.dart';
import '../modules/change_transaction_pin_otp/views/change_transaction_pin_otp_view.dart';
import '../modules/cheque_activation/bindings/cheque_activation_binding.dart';
import '../modules/cheque_activation/views/cheque_activation_view.dart';
import '../modules/cheque_book_request_details/bindings/cheque_book_request_details_binding.dart';
import '../modules/cheque_book_request_details/views/cheque_book_request_details_view.dart';
import '../modules/cheque_deposit/bindings/cheque_deposit_binding.dart';
import '../modules/cheque_deposit/views/cheque_deposit_view.dart';
import '../modules/cheque_management/bindings/cheque_management_binding.dart';
import '../modules/cheque_management/views/cheque_management_view.dart';
import '../modules/cheque_request/bindings/cheque_request_binding.dart';
import '../modules/cheque_request/views/cheque_request_view.dart';
import '../modules/cheque_status/bindings/cheque_status_binding.dart';
import '../modules/cheque_status/views/cheque_status_view.dart';
import '../modules/cheque_status_history/bindings/cheque_status_history_binding.dart';
import '../modules/cheque_status_history/views/cheque_status_history_view.dart';
import '../modules/contacts_screen/bindings/contacts_screen_binding.dart';
import '../modules/contacts_screen/views/contacts_screen_view.dart';
import '../modules/create_transaction_pin/bindings/create_transaction_pin_binding.dart';
import '../modules/create_transaction_pin/views/create_transaction_pin_view.dart';
import '../modules/create_transaction_pin_otp/bindings/create_transaction_pin_otp_binding.dart';
import '../modules/create_transaction_pin_otp/views/create_transaction_pin_otp_view.dart';
import '../modules/dail_transaction_limit/bindings/dail_transaction_limit_binding.dart';
import '../modules/dail_transaction_limit/views/dail_transaction_limit_view.dart';
import '../modules/dashboard/bindings/dashboard_screen_binding.dart';
import '../modules/dashboard/views/dashboard_screen_view.dart';
import '../modules/faqs/bindings/faqs_binding.dart';
import '../modules/faqs/bindings/faqs_first_screen_binding.dart';
import '../modules/faqs/bindings/faqs_second_screen_binding.dart';
import '../modules/faqs/bindings/faqs_third_screen_binding.dart';
import '../modules/faqs/views/faqs_first_screen_view.dart';
import '../modules/faqs/views/faqs_second_screen_view.dart';
import '../modules/faqs/views/faqs_third_screen_view.dart';
import '../modules/faqs/views/faqs_view.dart';
import '../modules/general_ledger/bindings/general_ledger_binding.dart';
import '../modules/general_ledger/views/general_ledger_view.dart';
import '../modules/internal_account_transaction/bindings/internal_transaction_binding.dart';
import '../modules/internal_account_transaction/views/internal_transaction_view.dart';
import '../modules/internal_transaction_otp/bindings/internal_transaction_otp_binding.dart';
import '../modules/internal_transaction_otp/views/internal_transaction_otp_view.dart';
import '../modules/login/bindings/login_screen_binding.dart';
import '../modules/login/views/login_screen_view.dart';
import '../modules/login_otp/bindings/o_t_p_screen_binding.dart';
import '../modules/login_otp/views/o_t_p_screen_view.dart';
import '../modules/my_account/bindings/my_account_binding.dart';
import '../modules/my_account/views/my_account_view.dart';
import '../modules/new_beneficiary/bindings/new_beneficiary_binding.dart';
import '../modules/new_beneficiary/views/new_beneficiary_view.dart';
import '../modules/new_beneficiary_otp/bindings/new_beneficiary_otp_binding.dart';
import '../modules/new_beneficiary_otp/views/new_beneficiary_otp_view.dart';
import '../modules/notifications/bindings/notifications_binding.dart';
import '../modules/notifications/views/notifications_view.dart';
import '../modules/password_change/bindings/password_change_binding.dart';
import '../modules/password_change/views/password_change_view.dart';
import '../modules/privacy_policy/bindings/privacy_policy_binding.dart';
import '../modules/privacy_policy/views/privacy_policy_view.dart';
import '../modules/qr_setting/bindings/qr_setting_binding.dart';
import '../modules/qr_setting/views/qr_scan_screen.dart';
import '../modules/qr_setting/views/qr_setting_view.dart';
import '../modules/qr_setting/views/qr_view_screen.dart';
import '../modules/recipient_details/bindings/recipient_details_binding.dart';
import '../modules/recipient_details/views/recipient_details_view.dart';
import '../modules/sample_fields/bindings/sample_fields_binding.dart';
import '../modules/sample_fields/views/sample_fields_view.dart';
import '../modules/sign_up/bindings/sign_up_screen_otp_binding.dart';
import '../modules/sign_up/bindings/sign_up_screen_step1_binding.dart';
import '../modules/sign_up/bindings/sign_up_screen_step2_binding.dart';
import '../modules/sign_up/bindings/sign_up_screen_step3_binding.dart';
import '../modules/sign_up/views/sign_up_screen_otp_view.dart';
import '../modules/sign_up/views/sign_up_screen_step1_view.dart';
import '../modules/sign_up/views/sign_up_screen_step2_view.dart';
import '../modules/sign_up/views/sign_up_screen_step3_view.dart';
import '../modules/splash/bindings/splash_screen_binding.dart';
import '../modules/splash/views/splash_screen_view.dart';
import '../modules/transaction_history/bindings/transaction_history_binding.dart';
import '../modules/transaction_history/views/transaction_history_view.dart';
import '../modules/u_received/bindings/u_received_binding.dart';
import '../modules/u_received/views/u_received_view.dart';
import '../modules/u_send/bindings/u_send_binding.dart';
import '../modules/u_send/views/u_send_view.dart';
import '../modules/u_send_otp/bindings/u_send_otp_binding.dart';
import '../modules/u_send_otp/views/u_send_otp_view.dart';
import '../modules/user_activity/bindings/user_activity_binding.dart';
import '../modules/user_activity/views/user_activity_view.dart';
import '../modules/user_profile/bindings/user_profile_binding.dart';
import '../modules/user_profile/views/user_profile_view.dart';
import '../modules/utility_bills_payment/bindings/utility_bills_payment_binding.dart';
import '../modules/utility_bills_payment/views/utility_bills_payment_view.dart';
import '../modules/utility_bills_selected_category/bindings/utility_bills_selected_category_binding.dart';
import '../modules/utility_bills_selected_category/views/utility_bills_selected_category_view.dart';
import '../modules/utility_bills_selected_category_details/bindings/utility_bills_selected_category_details_binding.dart';
import '../modules/utility_bills_selected_category_details/views/utility_bills_selected_category_details_view.dart';

part 'app_routes.dart';

class AppPages {
  AppPages._();

  static String INITIAL = Routes.SPLASH_SCREEN;

  static final routes = [
    GetPage(
      name: _Paths.SPLASH_SCREEN,
      page: () => responsiveWidget(const SplashScreenView()),
      binding: SplashScreenBinding(),
    ),
    GetPage(
      name: _Paths.INTRO_SCREEN,
      page: () => responsiveWidget(IntroScreenView()),
      binding: IntroScreenBinding(),
    ),
    GetPage(
      name: _Paths.LOGIN_SCREEN,
      page: () => responsiveWidget(const LoginScreenView()),
      binding: LoginScreenBinding(),
    ),
    GetPage(
      name: _Paths.DASHBOARD_SCREEN,
      page: () => responsiveWidget(const DashboardScreenView()),
      binding: DashboardScreenBinding(),
    ),
    GetPage(
      name: _Paths.SIGN_UP_SCREEN_STEP1,
      page: () => responsiveWidget(const SignUpScreenStep1View()),
      binding: SignUpScreenStep1Binding(),
    ),
    GetPage(
      name: _Paths.SIGN_UP_SCREEN_STEP2,
      page: () => responsiveWidget(const SignUpScreenStep2View()),
      binding: SignUpScreenStep2Binding(),
    ),
    GetPage(
      name: _Paths.SIGN_UP_SCREEN_STEP3,
      page: () => responsiveWidget(const SignUpScreenStep3View()),
      binding: SignUpScreenStep3Binding(),
    ),
    GetPage(
      name: _Paths.SIGN_UP_SCREEN_OTP,
      page: () => responsiveWidget(const SignUpScreenOTPView()),
      binding: SignUpScreenOTPBinding(),
    ),
    GetPage(
      name: _Paths.O_T_P_SCREEN,
      page: () => responsiveWidget(const OTPScreenView()),
      binding: OTPScreenBinding(),
    ),
    GetPage(
      name: _Paths.MY_ACCOUNT,
      page: () => responsiveWidget(const MyAccountView()),
      binding: MyAccountBinding(),
    ),
    GetPage(
      name: _Paths.BILL_MANAGEMENT,
      page: () => responsiveWidget(const BillManagementView()),
      binding: BillManagementBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_MANAGEMENT,
      page: () => responsiveWidget(const ChequeManagementView()),
      binding: ChequeManagementBinding(),
    ),
    GetPage(
      name: _Paths.U_SEND,
      page: () => responsiveWidget(const USendView()),
      binding: USendBinding(),
    ),
    GetPage(
      name: _Paths.INTERNAL_ACCOUNT_TRANS,
      page: () => responsiveWidget(const InternalAccountTransView()),
      binding: InternalAccountTransBinding(),
    ),
    GetPage(
      name: _Paths.U_RECEIVED,
      page: () => responsiveWidget(const UReceivedView()),
      binding: UReceivedBinding(),
    ),
    GetPage(
      name: _Paths.BENEFICIARY_MANAGEMENT,
      page: () => responsiveWidget(const BeneficiaryManagementView()),
      binding: BeneficiaryManagementBinding(),
    ),
    GetPage(
      name: _Paths.NEW_BENEFICIARY,
      page: () => responsiveWidget(const NewBeneficiaryView()),
      binding: NewBeneficiaryBinding(),
    ),
    GetPage(
      name: _Paths.NEW_BENEFICIARY_OPT,
      page: () => responsiveWidget(const NewBeneficiaryOtpView()),
      binding: NewBeneficiaryOtpBinding(),
    ),
    GetPage(
      name: _Paths.BENEFICIARY_TRANSFER_MONEY,
      page: () => responsiveWidget(const BeneficiaryTransferView()),
      binding: BeneficiaryTransferBinding(),
    ),
    GetPage(
      name: _Paths.BENEFICIARY_TRANSFER_MONEY_OTP,
      page: () => responsiveWidget(const BeneficiaryTransferOtpView()),
      binding: BeneficiaryTransferOtpBinding(),
    ),
    GetPage(
      name: _Paths.AGENT_LOCATION,
      page: () => responsiveWidget(const AgentLocationView()),
      binding: AgentLocationBinding(),
    ),
    GetPage(
      name: _Paths.ACCOUNT_STATEMENT,
      page: () => responsiveWidget(const AccountStatementView()),
      binding: AccountStatementBinding(),
    ),
    GetPage(
      name: _Paths.USER_PROFILE,
      page: () => responsiveWidget(const UserProfileView()),
      binding: UserProfileBinding(),
    ),
    GetPage(
      name: _Paths.PRIVACY_POLICY,
      page: () => responsiveWidget(const PrivacyPolicyView()),
      binding: PrivacyPolicyBinding(),
    ),
    GetPage(
      name: _Paths.USER_ACTIVITY,
      page: () => responsiveWidget(const UserActivityView()),
      binding: UserActivityBinding(),
    ),
    GetPage(
      name: _Paths.TRANSACTION_HISTORY,
      page: () => responsiveWidget(const TransactionHistoryView()),
      binding: TransactionHistoryBinding(),
    ),
    GetPage(
      name: _Paths.ABOUT_US,
      page: () => responsiveWidget(const AboutUsView()),
      binding: AboutUsBinding(),
    ),
    GetPage(
      name: _Paths.CAREER,
      page: () => responsiveWidget(const CareerView()),
      binding: CareerBinding(),
    ),
    // GetPage(
    //   name: _Paths.CONTACTS_SCREEN,
    //   page: () => responsiveWidget(const ContactsScreenView()),
    //   binding: ContactsScreenBinding(),
    // ),
    GetPage(
      name: _Paths.RECIPIENT_DETAILS,
      page: () => responsiveWidget(const RecipientDetailsView()),
      binding: RecipientDetailsBinding(),
    ),
    GetPage(
      name: _Paths.U_SEND_OTP,
      page: () => responsiveWidget(const USendOtpView()),
      binding: USendOtpBinding(),
    ),
    GetPage(
      name: _Paths.SAMPLE_FIELDS,
      page: () => responsiveWidget(const SampleFieldsView()),
      binding: SampleFieldsBinding(),
    ),
    GetPage(
      name: _Paths.INTRO_SCREEN,
      page: () => responsiveWidget(IntroScreenView()),
      binding: IntroScreenBinding(),
    ),
    GetPage(
      name: _Paths.changePassword,
      page: () => responsiveWidget(const ChangePasswordScreen()),
      binding: ChangePasswordBindings(),
    ),
    GetPage(
      name: _Paths.faqsView,
      page: () => responsiveWidget(FaqsView()),
      binding: FaqsBinding(),
    ),
    GetPage(
      name: _Paths.BILL_MANAGEMENT_CATEGORY,
      page: () => responsiveWidget(const BillManagementCategoryView()),
      binding: BillManagementCategoryBinding(),
    ),
    GetPage(
      name: _Paths.UTILITY_BILLS_PAYMENT,
      page: () => responsiveWidget(const UtilityBillsPaymentView()),
      binding: UtilityBillsPaymentBinding(),
    ),
    GetPage(
      name: _Paths.UTILITY_BILLS_SELECTED_CATEGORY,
      page: () => responsiveWidget(const UtilityBillsSelectedCategoryView()),
      binding: UtilityBillsSelectedCategoryBinding(),
    ),
    GetPage(
      name: _Paths.UTILITY_BILLS_SELECTED_CATEGORY_DETAILS,
      page: () => responsiveWidget(const UtilityBillsSelectedCategoryDetailsView()),
      binding: UtilityBillsSelectedCategoryDetailsBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_ACTIVATION,
      page: () => responsiveWidget(const ChequeActivationView()),
      binding: ChequeActivationBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_BOOK_REQUEST_DETAILS,
      page: () => responsiveWidget(const ChequeBookRequestDetailsView()),
      binding: ChequeBookRequestDetailsBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_DEPOSIT,
      page: () => responsiveWidget(const ChequeDepositView()),
      binding: ChequeDepositBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_REQUEST,
      page: () => responsiveWidget(const ChequeRequestView()),
      binding: ChequeRequestBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_STATUS,
      page: () => responsiveWidget(const ChequeStatusView()),
      binding: ChequeStatusBinding(),
    ),
    GetPage(
      name: _Paths.CHEQUE_STATUS_HISTORY,
      page: () => responsiveWidget(const ChequeStatusHistoryView()),
      binding: ChequeStatusHistoryBinding(),
    ),
    GetPage(
      name: _Paths.APP_SETTING,
      page: () => responsiveWidget(const AppSettingView()),
      binding: AppSettingBinding(),
    ),
    GetPage(
      name: _Paths.DAIL_TRANSACTION_LIMIT,
      page: () => responsiveWidget(const DailTransactionLimitView()),
      binding: DailTransactionLimitBinding(),
    ),
    GetPage(
      name: _Paths.CHANGE_TRANSACTION_PIN,
      page: () => responsiveWidget(const ChangeTransactionPinView()),
      binding: ChangeTransactionPinBinding(),
    ),
    // GetPage(
    //   name: _Paths.CHANGE_TRANSACTION_PIN_OTP,
    //   page: () => responsiveWidget(const ChangeTransactionPinOtpView()),
    //   binding: ChangeTransactionPinOtpBinding(),
    // ),
    GetPage(
      name: _Paths.QR_SETTING,
      page: () => responsiveWidget(const QrSettingView()),
      binding: QrSettingBinding(),
    ),
    GetPage(
      name: _Paths.NOTIFICATIONS,
      page: () => responsiveWidget(const NotificationsView()),
      binding: NotificationsBinding(),
    ),
    GetPage(
      name: _Paths.CREATE_TRANSACTION_PIN,
      page: () => responsiveWidget(const CreateTransactionPinView()),
      binding: CreateTransactionPinBinding(),
    ),
    GetPage(
      name: _Paths.CREATE_TRANSACTION_PIN_OTP,
      page: () => responsiveWidget(const CreateTransactionPinOtpView()),
      binding: CreateTransactionPinOtpBinding(),
    ),
    GetPage(
      name: _Paths.qrViewScreen,
      page: () => responsiveWidget(const QrViewScreen()),
    ),
    GetPage(
      name: _Paths.qrScanView,
      page: () => responsiveWidget(const QrScanScreen()),
      binding: QrSettingBinding(),
    ),
    GetPage(
      name: _Paths.GENERAL_LEDGER,
      page: () => responsiveWidget(const GeneralLedgerView()),
      binding: GeneralLedgerBinding(),
    ),
    GetPage(
      name: _Paths.PAYMENT_METHOD,
      page: () => responsiveWidget(const PaymentMethodView()),
      binding: PaymentMethodBinding(),
    ),
    GetPage(
      name: _Paths.ADD_MONEY,
      page: () => responsiveWidget(const AddMoneyView()),
      binding: AddMoneyBinding(),
    ),
    GetPage(
      name: _Paths.OTP_ADD_MONEY,
      page: () => responsiveWidget(const AddMoneyOTPView()),
      binding: AddMoneyOTPBinding(),
    ),
    GetPage(
      name: _Paths.currencyListScreen,
      page: () => responsiveWidget(CurrencyListScreen()),
    ),
    GetPage(
      name: _Paths.FAQS_FIRST_SCREEN,
      page: () => responsiveWidget(FaqsFirstScreenView()),
      binding: FaqsFirstBinding(),
    ),
    GetPage(
      name: _Paths.FAQS_SECOND_SCREEN,
      page: () => responsiveWidget(FaqsSecondScreenView()),
      binding: FaqsSecondBinding(),
    ),
    GetPage(
      name: _Paths.FAQS_THIRD_SCREEN,
      page: () => responsiveWidget(FaqsThirdScreenView()),
      binding: FaqsThirdBinding(),
    ),
    GetPage(
      name: _Paths.ADD_NEW_ACCOUNT,
      page: () => responsiveWidget(const AddNewAccountView()),
      binding: AddNewAccountBinding(),
    ),
    GetPage(
      name: _Paths.CHANGE_TRANSACTION_PIN_OTP,
      page: () => responsiveWidget(const ChangeTransactionPinOtpView()),
      binding: ChangeTransactionPinOtpBinding(),
    ),
    GetPage(
      name: _Paths.INTERNAL_TRANSACTION_OPT,
      page: () => responsiveWidget(const InternalTransactionOtpView()),
      binding: InternalTransactionOtpBinding(),
    ),
  ];
}

Widget responsiveWidget(Widget page, {double? value, Color? color}) {
  // return page;
  // dp("Width init", {MediaQuery.sizeOf(Get.context!).width});
  // dp("Height init  ", MediaQuery.sizeOf(Get.context!).height);

  return r.MaxWidthBox(
    maxWidth: 1300,
    background: ColoredBox(
      color: color ?? Colors.white,
    ),
    alignment: Alignment.bottomCenter,
    child: r.ResponsiveScaledBox(
      width: r.ResponsiveValue<double>(Get.context!, conditionalValues: [
        //tested on device widht 184,203,165,170
        // height 361
        r.Condition.between(start: 0, end: 229, value: value ?? 470),

        r.Condition.between(start: 230, end: 320, value: value ?? 440),
        //tested on device widht 360, 450=410
        r.Condition.between(start: 321, end: 480, value: value ?? 410),
        // tested on device width = 540, 617
        r.Condition.between(start: 481, end: 640, value: value ?? 450),
        // 952, 915
        r.Condition.between(start: 641, end: 960, value: value ?? 600),
        //
        r.Condition.between(start: 961, end: 1024, value: value ?? 650),
        // 1030 , 1098, 1277
        r.Condition.between(start: 1025, end: 1280, value: value ?? 700),
        // 1287 ,
        r.Condition.between(start: 1281, end: 1300, value: value ?? 750),
      ]).value,
      child: page,
    ),
  );
}
