import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:local_auth/local_auth.dart';
import 'package:webview_flutter/webview_flutter.dart';

import '../../../constant/box_name.dart';
import '../../../constant/links.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/crud.dart';
import '../../../main.dart';

// --- ملاحظات هامة ---
// 1. تأكد من إضافة الرابط الجديد إلى ملف AppLink الخاص بك:
//    static const String payWithEcashDriver = "$server/payment/payWithEcashDriver.php";
//
// 2. تأكد من أنك تخزن 'driverId' في الـ box الخاص بك، مثلاً:
//    box.read(BoxName.driverID)

/// دالة جديدة لبدء عملية الدفع للسائق عبر ecash
Future<void> payWithEcashDriver(BuildContext context, String amount) async {
  try {
    // يمكنك استخدام نفس طريقة التحقق بالبصمة إذا أردت
    bool isAvailable = await LocalAuthentication().isDeviceSupported();
    if (isAvailable) {
      bool didAuthenticate = await LocalAuthentication().authenticate(
        localizedReason: 'Use Touch ID or Face ID to confirm payment'.tr,
      );

      if (didAuthenticate) {
        // استدعاء الـ Endpoint الجديد على السيرفر الخاص بك
        var res = await CRUD().postWallet(
          link: AppLink.payWithEcashDriver,
          payload: {
            // أرسل البيانات التي يحتاجها السيرفر
            "amount": amount,
            // "driverId": box.read(BoxName.driverID), // تأكد من وجود هذا المتغير
            "driverId": box.read(BoxName.driverID), // تأكد من وجود هذا المتغير
          },
        );

        // التأكد من أن السيرفر أعاد رابط الدفع بنجاح
        if (res != null &&
            res['status'] == 'success' &&
            res['message'] != null) {
          final String paymentUrl = res['message'];
          // الانتقال إلى شاشة الدفع الجديدة الخاصة بـ ecash للسائق
          Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) =>
                  EcashDriverPaymentScreen(paymentUrl: paymentUrl),
            ),
          );
        } else {
          // عرض رسالة خطأ في حال فشل السيرفر في إنشاء الرابط
          Get.defaultDialog(
            title: 'Error'.tr,
            content: Text(
              'Failed to initiate payment. Please try again.'.tr,
              style: AppStyle.title,
            ),
          );
        }
      }
    }
  } catch (e) {
    Get.defaultDialog(
      title: 'Error'.tr,
      content: Text(
        'An error occurred during the payment process.'.tr,
        style: AppStyle.title,
      ),
    );
  }
}

/// شاشة جديدة ومبسطة خاصة بدفع السائقين عبر ecash
class EcashDriverPaymentScreen extends StatefulWidget {
  final String paymentUrl;

  const EcashDriverPaymentScreen({required this.paymentUrl, Key? key})
      : super(key: key);

  @override
  State<EcashDriverPaymentScreen> createState() =>
      _EcashDriverPaymentScreenState();
}

class _EcashDriverPaymentScreenState extends State<EcashDriverPaymentScreen> {
  late final WebViewController _controller;

  @override
  void initState() {
    super.initState();
    _controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setNavigationDelegate(NavigationDelegate(
        onPageFinished: (url) {
          print('Ecash Driver WebView URL Finished: $url');

          // هنا نتحقق فقط من أن المستخدم عاد إلى صفحة النجاح
          // لا حاجة لاستدعاء أي API هنا، فالـ Webhook يقوم بكل العمل
          if (url.contains("success.php")) {
            showProcessingDialog();
          }
        },
      ))
      ..loadRequest(Uri.parse(widget.paymentUrl));
  }

  // دالة لعرض رسالة "العملية قيد المعالجة"
  void showProcessingDialog() {
    showDialog(
      barrierDismissible: false,
      context: Get.context!,
      builder: (BuildContext context) {
        return AlertDialog(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(12.0),
          ),
          title: Row(
            children: [
              Icon(Icons.check_circle, color: Colors.green),
              const SizedBox(width: 8),
              Text(
                "Payment Successful".tr,
                style: TextStyle(
                  color: Colors.green,
                  fontWeight: FontWeight.bold,
                ),
              ),
            ],
          ),
          content: Text(
            "Your payment is being processed and your wallet will be updated shortly."
                .tr,
            style: const TextStyle(fontSize: 16),
          ),
          actions: [
            TextButton(
              onPressed: () {
                // أغلق مربع الحوار، ثم أغلق شاشة الدفع
                Navigator.pop(context); // Close the dialog
                Navigator.pop(context); // Close the payment screen
              },
              style: TextButton.styleFrom(
                backgroundColor: Colors.green,
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(8.0),
                ),
              ),
              child: Text(
                "OK".tr,
                style: const TextStyle(color: Colors.white),
              ),
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Complete Payment'.tr)),
      body: WebViewWidget(controller: _controller),
    );
  }
}
