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 * .2,
          right: Get.width * .15,
          left: Get.width * .15,
          bottom: Get.height * .2,
          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: 10,
                                groupValue: controller.selectedAmount,
                                onChanged: (value) {
                                  controller.updateSelectedAmount(value as int);
                                },
                              ),
                              Text(
                                '10\$ and get 3% discount'.tr,
                                style: AppStyle.title,
                              ),
                            ],
                          ),
                        ),
                        GestureDetector(
                            onTap: () {
                              controller.updateSelectedAmount(20);
                            },
                            child: Row(
                              children: [
                                Radio(
                                  value: 20,
                                  groupValue: controller.selectedAmount,
                                  onChanged: (value) {
                                    controller
                                        .updateSelectedAmount(value as int);
                                  },
                                ),
                                Text(
                                  '20\$ and get 4% discount'.tr,
                                  style: AppStyle.title,
                                ),
                              ],
                            )),
                        GestureDetector(
                            onTap: () {
                              controller.updateSelectedAmount(40);
                            },
                            child: Row(
                              children: [
                                Radio(
                                  value: 40,
                                  groupValue: controller.selectedAmount,
                                  onChanged: (value) {
                                    controller
                                        .updateSelectedAmount(value as int);
                                  },
                                ),
                                Text(
                                  '40\$ and get 6% discount'.tr,
                                  style: AppStyle.title,
                                ),
                              ],
                            )),
                        GestureDetector(
                            onTap: () {
                              controller.updateSelectedAmount(100);
                            },
                            child: Row(
                              children: [
                                Radio(
                                  value: 100,
                                  groupValue: controller.selectedAmount,
                                  onChanged: (value) {
                                    controller
                                        .updateSelectedAmount(value as int);
                                  },
                                ),
                                Text(
                                  '100\$ and get 9% discount'.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);
                            }
                          },
                        ),
                        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) == 'Jordan'.tr
                                        ? 'USD'
                                        : 'EGP', () {
                                  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()),
    );
  }
}
