import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:uco_mobile_poc/app/modules/add_money/views/shared/currency_list_screen.dart';
import 'package:uco_mobile_poc/app/modules/add_money/views/shared/payment_method_view.dart';


import '../../../core/constants/app_assets.dart';
import '../../../core/constants/form_field_constants.dart';
import '../../../core/constants/translation_keys.dart';
import '../../../custom_widgets/Fields/input_field.dart';
import '../../../custom_widgets/custom_app_bar.dart';
import '../../../custom_widgets/custom_button.dart';
import '../../../res/app_colors.dart';
import '../../../res/app_theme.dart';
import '../controllers/add_money_controller.dart';

class AddMoneyView extends GetView<AddMoneyController> {
  const AddMoneyView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    //
    String className = runtimeType.toString().split('.').last;

    return Scaffold(
      appBar: DashBoardAppBar(
        title: "Add Money",
        onBackButtonPressed: () {
          Get.back();
        },
      ),
      persistentFooterButtons: [
        Padding(
          padding: const EdgeInsets.only(left: 20, right: 30, bottom: 10),
          child: CustomButton(
            onPressed: () {
              controller.navigateToNextScreen();
            },
            buttonText: TranslationKeys.makeTranslation(TranslationKeys.textContinue),
            buttonColor: AppColors.colorButton,
            buttonPadding: const EdgeInsets.only(top: 12, bottom: 12),
          ),
        )
      ],
      body: Padding(
        padding: const EdgeInsets.only(left: 20, right: 20, top: 20),
        child: SingleChildScrollView(
          child: Obx(() {
            return Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                const Text("You send exactly"),
                const SizedBox(height: 8),
                controller.amountFeild = InputField(
                  refKey: FormFieldConstants.instance().getFormKey("${className}amountFeild"),
                  controller: FormFieldConstants.instance().getController("${className}amountFeild"),
                  hintText: "Enter amount",
                  radius: 10,
                  inputFontSize: 20.0,
                  inputColor: AppColors.black,
                  inputFontWeight: FontWeight.w600,
                  keyboardType: const TextInputType.numberWithOptions(decimal: true),
                  inputFormatters: InputType.maxValueFilter(InputType.INT_MAX_VALUE_, true, 2),
                  isTopMarginRequired: false,
                  showLabel: false,
                  textInputAction: TextInputAction.done,
                  onChanged: (value) {
                    Future.delayed(const Duration(milliseconds: 500), () => controller.getConversionAmount());
                  },
                  onSubmitted: (value) {
                    controller.getConversionAmount();
                  },
                  suffixIcon: GestureDetector(
                    onTap: () {
                      controller.selectFromAccountCurrency();
                    },
                    child: Container(
                      color: AppColors.transparent,
                      child: Row(
                        mainAxisSize: MainAxisSize.min,
                        children: [
                          Image.asset(controller.getFlagWithCurrencyCode(controller.selectedFromAccountCurrency.value.pcrCurrcode), width: 22),
                          const SizedBox(width: 6),
                          Text(
                            controller.selectedFromAccountCurrency.value.dmpProdshort,
                            style: context.textTheme.bodyMedium!.copyWith(fontSize: 16, color: AppColors.colorPrimary, fontWeight: FontWeight.w600),
                          ),
                          const SizedBox(width: 6),
                          Image.asset(AppAssets.drop_down_ic, width: 10, height: 10),
                          const SizedBox(width: 15),
                        ],
                      ),
                    ),
                  ),
                ),
                const SizedBox(height: 17),
                Text(
                  "Paying with",
                  style: context.textTheme.bodyMedium!.copyWith(fontSize: 14, fontWeight: FontWeight.w400, color: AppColors.colorTitle),
                ),
                const SizedBox(height: 8),
                InkWell(
                  onTap: () {
                    Get.to(() => const PaymentMethodView())!.then(
                      (value) {
                        controller.getConversionAmount();
                      },
                    );
                  },
                  child: Container(
                    decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(15),
                      color: AppColors.colorGrey200,
                    ),
                    padding: const EdgeInsets.only(left: 13, top: 17, bottom: 17, right: 15),
                    child: Row(
                      children: [
                        Text(
                          controller.paymnetController.paymentMethod.value.title.isNotEmpty ? TranslationKeys.makeTranslation(controller.paymnetController.paymentMethod.value.title) : "Select a payment method",
                          style: context.textTheme.bodyMedium!.copyWith(fontSize: 15, fontWeight: FontWeight.w500, color: AppColors.F0F0D),
                        ),
                        const Spacer(),
                        Card(
                          elevation: 0.0,
                          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(50), side: BorderSide(color: AppColors.CFCFCF)),
                          child: Padding(
                            padding: const EdgeInsets.only(
                              left: 15,
                              right: 15,
                              top: 5,
                              bottom: 5,
                            ),
                            child: Center(
                              child: Text(
                                "Select",
                                style: context.textTheme.bodyLarge!.copyWith(fontSize: 11, fontWeight: FontWeight.w500),
                              ),
                            ),
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
                const SizedBox(height: 17),
                Text(
                  "Recipient Get",
                  style: context.textTheme.bodyMedium!.copyWith(fontSize: 14, fontWeight: FontWeight.w400, color: AppColors.colorTitle),
                ),
                const SizedBox(height: 8),
                Container(
                  height: 60,
                  decoration: BoxDecoration(
                    shape: BoxShape.rectangle,
                    borderRadius: const BorderRadius.all(Radius.circular(10)),
                    border: Border.all(color: AppColors.colorGrey500, width: 1.5),
                  ),
                  child: Row(
                    // mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Expanded(
                        flex: 4,
                        child: TextField(
                          style: AppThemeData.inputStyle.copyWith(height: 1, fontSize: 20.0, fontWeight: FontWeight.w600, color: AppColors.black),
                          controller: controller.recipientController,
                          decoration: const InputDecoration(border: InputBorder.none),
                          enabled: false,
                        ),
                      ),
                      GestureDetector(
                        onTap: () {
                          Get.to(() => CurrencyListScreen())!.then(
                            (value) {
                              controller.getConversionAmount();
                            },
                          );
                        },
                        child: Container(
                          color: Colors.transparent,
                          child: Row(
                            children: [
                              Image.asset(
                                controller.getFlagWithCurrencyCode(controller.selectRecepientAccount.value.pcrCurrcode),
                                width: 22,
                                errorBuilder: (context, error, stackTrace) => const SizedBox(),
                              ),
                              const SizedBox(width: 6),
                              Text(controller.selectRecepientAccount.value.pcrCurrshort, style: context.textTheme.bodyMedium!.copyWith(fontSize: 16, color: AppColors.colorPrimary, fontWeight: FontWeight.w500)),
                              const SizedBox(width: 6),
                              Image.asset(AppAssets.drop_down_ic, width: 10, height: 10),
                              const SizedBox(width: 15),
                            ],
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
                const SizedBox(height: 15),
                ...(controller.checkForNull())
                    ? []
                    : [
                        detailsTile(controller.evaluatedCurrencyModel.value.serviceCharges.toString(), "Our fee"),

                        detailsTile(controller.evaluatedCurrencyModel.value.sgtGntramtfc!.toString(), "Total amount we’ll convert"),

                        //{"title": "344.598", "subtitle": ""},
                        detailsTile(
                          controller.evaluatedCurrencyModel.value.targetPerEratrateact.toString(),
                          "Guaranteed exchange rate (2h)",
                          subTitleStyle: Get.context?.textTheme.bodyMedium!.copyWith(fontSize: 14, fontWeight: FontWeight.w400, color: AppColors.colorPrimary, decoration: TextDecoration.underline),
                        ),
                        const SizedBox(height: 35),
                        Text(
                          "Usually arrives in seconds. Because this is your first transfer, things may take a little longer.",
                          style: context.textTheme.bodyMedium!.copyWith(
                            fontSize: 15,
                            fontWeight: FontWeight.w400,
                          ),
                        ),
                        const SizedBox(height: 20),
                      ],
              ],
            );
          }),
        ),
      ),
    );
  }

  Widget detailsTile(String title, String subTitle, {TextStyle? subTitleStyle}) {
    return Padding(
      padding: const EdgeInsets.only(top: 20),
      child: Row(
        children: [
          Container(
            width: 13,
            height: 13,
            decoration: BoxDecoration(color: AppColors.colorTitle, borderRadius: BorderRadius.circular(20)),
          ),
          const SizedBox(width: 6),
          Text(
            title,
            style: Get.context?.textTheme.bodyMedium!.copyWith(
              fontSize: 14,
              fontWeight: FontWeight.w700,
            ),
          ),
          const Spacer(),
          Text(
            subTitle,
            style: subTitleStyle ??
                Get.context?.textTheme.bodyMedium!.copyWith(
                  fontSize: 14,
                  fontWeight: FontWeight.w400,
                ),
          ),
        ],
      ),
    );
  }
}

showCurrencyBtm() {
  Get.bottomSheet(
    Container(
      decoration: BoxDecoration(color: Colors.white, border: Border.all(color: AppColors.colorGrey800, width: 1), borderRadius: const BorderRadius.only(topLeft: Radius.circular(30), topRight: Radius.circular(30))),
      margin: const EdgeInsets.only(left: 20, right: 20),
      child: const Text("data"),
    ),
    backgroundColor: Colors.transparent,
    isScrollControlled: true,
    shape: const RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10))),
  );
}
