import 'package:siro_rider/constant/currency.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:siro_rider/views/home/my_wallet/payment_history_passenger_page.dart';
import 'dart:ui'; // لاستخدام تأثيرات متقدمة

import '../../../constant/box_name.dart';
import '../../../constant/colors.dart';
import '../../../constant/info.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/toast.dart';
import '../../../controller/home/payment/credit_card_controller.dart';
import '../../../controller/payment/payment_controller.dart';
import '../../../main.dart';
import '../../widgets/elevated_btn.dart';
import '../../widgets/my_scafold.dart';
import 'passenger_wallet_dialoge.dart';

// --- الويدجت الرئيسية بالتصميم الجديد ---
class PassengerWallet extends StatelessWidget {
  const PassengerWallet({super.key});

  @override
  Widget build(BuildContext context) {
    // نفس منطق استدعاء الكنترولرز
    Get.put(PaymentController());
    Get.put(CreditCardController());

    return MyScafolld(
      title: 'My Balance'.tr,
      isleading: true,
      body: [
        // استخدام Stack فقط لعرض الـ Dialog فوق المحتوى عند الحاجة
        Stack(
          children: [
            // استخدام Column لتنظيم المحتوى بشكل أفضل
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 16.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: [
                  const SizedBox(height: 16),

                  // --- 1. بطاقة المحفظة العصرية ---
                  _buildModernWalletCard(),

                  const SizedBox(height: 32),
                  Text("Actions".tr,
                      style: AppStyle.title.copyWith(
                          color: AppColor.writeColor.withOpacity(0.6))),
                  const Divider(height: 24),

                  // --- 2. قائمة الخيارات المنظمة ---
                  _buildActionTile(
                    icon: Icons.add_card_rounded,
                    title: 'Top up Balance'.tr,
                    subtitle: 'Add funds using our secure methods'.tr,
                    onTap: () =>
                        showPaymentBottomSheet(context), // نفس دالتك القديمة
                  ),
                  _buildActionTile(
                    icon: Icons.history_rounded,
                    title: 'Payment History'.tr,
                    subtitle: 'View your past transactions'.tr,
                    onTap: () => Get.to(
                        () => const PaymentHistoryPassengerPage(),
                        transition: Transition.rightToLeftWithFade),
                  ),
                  _buildActionTile(
                    icon: Icons.phone_iphone_rounded,
                    title: 'Set Phone Number'.tr,
                    subtitle: 'Link a phone number for transfers'.tr,
                    onTap: () => _showWalletPhoneDialog(context,
                        Get.find<PaymentController>()), // نفس دالتك القديمة
                  ),
                ],
              ),
            ),

            // --- عرض الـ Dialog بنفس طريقتك القديمة ---
            const PassengerWalletDialog(),
          ],
        ),
      ],
    );
  }

  // --- ويدجت مساعدة لبناء بطاقة المحفظة ---
  Widget _buildModernWalletCard() {
    return GetBuilder<PaymentController>(
      builder: (paymentController) {
        return Container(
          width: double.infinity,
          height: Get.height * 0.25,
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(20),
            gradient: const LinearGradient(
              colors: [
                AppColor.primaryColor,
                Color(0xFF1E3A8A)
              ], // تدرج لوني أنيق
              begin: Alignment.topLeft,
              end: Alignment.bottomRight,
            ),
            boxShadow: [
              BoxShadow(
                color: AppColor.primaryColor.withOpacity(0.3),
                blurRadius: 25,
                offset: const Offset(0, 10),
              ),
            ],
          ),
          child: Stack(
            children: [
              // --- عنصر تزييني (شكل موجة) ---
              Positioned(
                right: -100,
                bottom: -100,
                child: Icon(
                  Icons.waves,
                  size: 250,
                  color: Colors.white.withOpacity(0.05),
                ),
              ),
              Padding(
                padding: const EdgeInsets.all(24.0),
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Text(
                          '${AppInformation.appName} ${'Balance'.tr}',
                          style: AppStyle.headTitle.copyWith(
                            color: Colors.white,
                            fontSize: 20,
                            fontWeight: FontWeight.bold,
                          ),
                        ),
                        Icon(Icons.memory_rounded,
                            color: Colors.white.withOpacity(0.7),
                            size: 30), // أيقونة الشريحة
                      ],
                    ),
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text(
                          "Current Balance".tr,
                          style: AppStyle.subtitle
                              .copyWith(color: Colors.white.withOpacity(0.7)),
                        ),
                        Text(
                          '${box.read(BoxName.passengerWalletTotal) ?? '0.0'} ${CurrencyHelper.currency}',
                          style: AppStyle.headTitle2.copyWith(
                            color: Colors.white,
                            fontSize: 28,
                            fontWeight: FontWeight.w600,
                            letterSpacing: 1.5,
                          ),
                        ),
                      ],
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.end,
                      children: [
                        Text(
                          (box.read(BoxName.name) ?? "User Name").toString(),
                          style: AppStyle.title.copyWith(
                            color: Colors.white.withOpacity(0.8),
                            fontSize: 16,
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              ),
            ],
          ),
        );
      },
    );
  }

  // --- ويدجت مساعدة لبناء عناصر القائمة ---
  Widget _buildActionTile({
    required IconData icon,
    required String title,
    required String subtitle,
    required VoidCallback onTap,
  }) {
    return ListTile(
      onTap: onTap,
      contentPadding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8),
      leading: Container(
        padding: const EdgeInsets.all(10),
        decoration: BoxDecoration(
          color: AppColor.primaryColor.withOpacity(0.1),
          borderRadius: BorderRadius.circular(12),
        ),
        child: Icon(icon, color: AppColor.primaryColor, size: 24),
      ),
      title: Text(title.tr, style: AppStyle.title),
      subtitle: Text(subtitle.tr,
          style: AppStyle.subtitle
              .copyWith(color: AppColor.writeColor.withOpacity(0.6))),
      trailing: Icon(Icons.arrow_forward_ios_rounded,
          size: 16, color: AppColor.writeColor),
    );
  }

  // --- نفس دالة الـ Dialog الخاصة بك ---
  void _showWalletPhoneDialog(
      BuildContext context, PaymentController controller) {
    Get.dialog(
      CupertinoAlertDialog(
        title: Text('Insert Wallet phone number'.tr),
        content: Column(
          children: [
            const SizedBox(height: 10),
            Form(
              key: controller.formKey,
              child: CupertinoTextField(
                controller: controller.walletphoneController,
                placeholder: 'Insert Wallet phone number'.tr,
                keyboardType: TextInputType.phone,
                padding:
                    const EdgeInsets.symmetric(vertical: 12, horizontal: 10),
              ),
            ),
          ],
        ),
        actions: <Widget>[
          CupertinoDialogAction(
            child: Text('Cancel'.tr,
                style: const TextStyle(color: CupertinoColors.destructiveRed)),
            onPressed: () => Get.back(),
          ),
          CupertinoDialogAction(
            child: Text('OK'.tr,
                style: const TextStyle(color: CupertinoColors.activeGreen)),
            onPressed: () {
              Get.back();
              box.write(
                  BoxName.phoneWallet, (controller.walletphoneController.text));
              Toast.show(context, 'Phone Wallet Saved Successfully'.tr,
                  AppColor.greenColor);
            },
          ),
        ],
      ),
      barrierDismissible: false,
    );
  }
}

// الكلاس القديم CardSiroWallet لم نعد بحاجة إليه لأنه تم دمجه وتطويره
