import 'package:SEFER/constant/box_name.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/colors.dart';
import 'package:SEFER/constant/style.dart';
import 'package:SEFER/controller/functions/toast.dart';
import 'package:SEFER/controller/payment/payment_controller.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';

import '../../../main.dart';

class PassengerWalletDialoge extends StatelessWidget {
  const PassengerWalletDialoge({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return GetBuilder<PaymentController>(
      builder: (controller) => Positioned(
          top: Get.height * .1,
          right: Get.width * .15,
          left: Get.width * .15,
          bottom: Get.height * .1,
          child: controller.isPromoSheetDialogue
              ? Container(
                  decoration: const BoxDecoration(
                      borderRadius: BorderRadius.all(Radius.circular(12)),
                      color: AppColor.secondaryColor,
                      boxShadow: [
                        BoxShadow(
                            color: AppColor.accentColor,
                            offset: Offset(-1, -1),
                            blurRadius: 0,
                            spreadRadius: 0,
                            blurStyle: BlurStyle.normal),
                        BoxShadow(
                            color: AppColor.accentColor,
                            offset: Offset(3, 3),
                            blurRadius: 1,
                            spreadRadius: 0,
                            blurStyle: BlurStyle.normal)
                      ]),
                  child: Padding(
                    padding: const EdgeInsets.all(6),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        GestureDetector(
                          onTap: () {
                            controller.updateSelectedAmount(10);
                          },
                          child: Row(
                            children: [
                              Radio(
                                value: box.read(BoxName.countryCode) == 'Egypt'
                                    ? 100
                                    : 10,
                                groupValue: controller.selectedAmount,
                                onChanged: (value) {
                                  controller.updateSelectedAmount(value as int);
                                },
                              ),
                              Text(
                                box.read(BoxName.countryCode) == 'Egypt'
                                    ? '100 ${'LE'.tr}'.tr
                                    : '10 ${'JOD'.tr}'.tr,
                                style: AppStyle.title,
                              ),
                            ],
                          ),
                        ),
                        GestureDetector(
                            onTap: () {
                              controller.updateSelectedAmount(20);
                            },
                            child: Row(
                              children: [
                                Radio(
                                  value:
                                      box.read(BoxName.countryCode) == 'Egypt'
                                          ? 200
                                          : 20,
                                  groupValue: controller.selectedAmount,
                                  onChanged: (value) {
                                    controller
                                        .updateSelectedAmount(value as int);
                                  },
                                ),
                                Text(
                                  box.read(BoxName.countryCode) == 'Egypt'
                                      ? '200 ${'LE'.tr} '.tr
                                      : '20 ${'JOD'.tr}'.tr,
                                  style: AppStyle.title,
                                ),
                              ],
                            )),
                        GestureDetector(
                            onTap: () {
                              controller.updateSelectedAmount(40);
                            },
                            child: Row(
                              children: [
                                Radio(
                                  value:
                                      box.read(BoxName.countryCode) == 'Egypt'
                                          ? 400
                                          : 40,
                                  groupValue: controller.selectedAmount,
                                  onChanged: (value) {
                                    controller
                                        .updateSelectedAmount(value as int);
                                  },
                                ),
                                Text(
                                  box.read(BoxName.countryCode) == 'Egypt'
                                      ? '400 ${'LE'.tr} '.tr
                                      : '40 ${'JOD'.tr}'.tr,
                                  style: AppStyle.title,
                                ),
                              ],
                            )),
                        GestureDetector(
                            onTap: () {
                              controller.updateSelectedAmount(100);
                            },
                            child: Row(
                              children: [
                                Radio(
                                  value:
                                      box.read(BoxName.countryCode) == 'Egypt'
                                          ? 1000
                                          : 50,
                                  groupValue: controller.selectedAmount,
                                  onChanged: (value) {
                                    controller
                                        .updateSelectedAmount(value as int);
                                  },
                                ),
                                Text(
                                  box.read(BoxName.countryCode) == 'Egypt'
                                      ? '1000 ${'LE'.tr} '.tr
                                      : '50 ${'JOD'.tr}'.tr,
                                  style: AppStyle.title,
                                ),
                              ],
                            )),
                        const Spacer(),
                        MyElevatedButton(
                          kolor: AppColor.blueColor,
                          title: '${'Pay with Your'.tr} PayPal',
                          onPressed: () {
                            if (controller.selectedAmount != 0) {
                              controller.makePaymentPayPal(context);
                            } else {
                              Toast.show(
                                  context,
                                  'You will choose one of above !'.tr,
                                  AppColor.redColor);
                            }
                          },
                        ),
                        box.read(BoxName.countryCode) == 'Egypt'
                            ? Column(
                                children: [
                                  MyElevatedButton(
                                    title: '💳 Pay with Credit Card'.tr,
                                    onPressed: () {
                                      if (controller.selectedAmount != 0) {
                                        controller.payWithPayMob(
                                          context,
                                          controller.selectedAmount
                                              .toString(), // Convert int to double
                                          box.read(BoxName.countryCode) ==
                                                  'Egypt'
                                              ? 'EGP'
                                              : 'JOD',
                                          () async {
                                            await controller
                                                .addPassengerWallet();
                                            controller
                                                .changePromoSheetDialogue();
                                            await controller
                                                .getPassengerWallet();
                                          },
                                        );
                                      } else {
                                        Toast.show(
                                          context,
                                          '⚠️ You need to choose an amount!'.tr,
                                          AppColor.redColor,
                                        );
                                      }
                                    },
                                  ),
                                  // Add some spacing between buttons
                                  MyElevatedButton(
                                    kolor: AppColor.yellowColor,
                                    title: '💰 Pay with Wallet'.tr,
                                    onPressed: () {
                                      if (controller.selectedAmount != 0) {
                                        controller.payWithPayMobWallet(
                                          context,
                                          controller.selectedAmount
                                              .toString(), // Convert int to double
                                          box.read(BoxName.countryCode) ==
                                                  'Egypt'
                                              ? 'EGP'
                                              : 'JOD',
                                          () async {
                                            await controller
                                                .addPassengerWallet();
                                            controller
                                                .changePromoSheetDialogue();
                                            await controller
                                                .getPassengerWallet();
                                          },
                                        );
                                      } else {
                                        Toast.show(
                                          context,
                                          '⚠️ You need to choose an amount!'.tr,
                                          AppColor.redColor,
                                        );
                                      }
                                    },
                                  ),
                                ],
                              )
                            : MyElevatedButton(
                                title: 'Pay with Credit Card'.tr,
                                onPressed: () {
                                  if (controller.selectedAmount != 0) {
                                    controller.makePaymentStripe(
                                        controller.selectedAmount!
                                            .toDouble(), // Convert int to double
                                        box.read(BoxName.countryCode) != 'Egypt'
                                            ? 'usd'
                                            : 'jod', () {
                                      controller.addPassengerWallet();
                                      controller.changePromoSheetDialogue();
                                      controller.getPassengerWallet();
                                    });
                                  } else {
                                    Toast.show(
                                        context,
                                        'You will choose one of above !'.tr,
                                        AppColor.redColor);
                                  }
                                }),
                        MyElevatedButton(
                          title: 'Cancel'.tr,
                          kolor: AppColor.redColor,
                          onPressed: () {
                            controller.changePromoSheetDialogue();
                          },
                        ),
                      ],
                    ),
                  ))
              : const SizedBox()),
    );
  }
}
