import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:sefer_admin1/constant/box_name.dart';
import 'package:sefer_admin1/constant/links.dart';
import 'package:sefer_admin1/controller/firebase/firbase_messge.dart';
import 'package:sefer_admin1/controller/functions/crud.dart';
import 'package:sefer_admin1/main.dart';
import 'package:sefer_admin1/views/widgets/elevated_btn.dart';
import 'package:sefer_admin1/views/widgets/my_textField.dart';

import '../constant/style.dart';
import '../print.dart';
import 'firebase/notification_service.dart';

class NotificationController extends GetxController {
  final formKey = GlobalKey<FormState>();
  final title = TextEditingController();
  final body = TextEditingController();
  List<String> tokensDriver = [];
  List<String> tokensPassengers = [];

  // getTokensDrivers() async {
  //   await FirebaseMessagesController().loadAllPagesAndSendNotifications();
  // }

  // getTokensPassengers() async {
  //   await FirebaseMessagesController()
  //       .loadAllPagesAndSendNotificationsPassengers();
  // }

  Future<dynamic> sendNotificationDrivers() {
    return Get.defaultDialog(
        title: 'send notification'.tr,
        titleStyle: AppStyle.title,
        content: Form(
          key: formKey,
          child: Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: MyTextForm(
                    controller: title,
                    label: 'title notification'.tr,
                    hint: 'title notification'.tr,
                    type: TextInputType.name),
              ),
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: MyTextForm(
                    controller: body,
                    label: 'body notification'.tr,
                    hint: 'body notification'.tr,
                    type: TextInputType.name),
              ),
            ],
          ),
        ),
        confirm: MyElevatedButton(
            title: 'send'.tr,
            onPressed: () async {
              //  tokensDriver = box.read(BoxName.tokensDrivers)['message'];
              // Log.print('tokensDriver: ${tokensDriver}');
              // if (formKey.currentState!.validate()) {
              // box.read(BoxName.tokensDrivers)['message'].length;
              // for (var i = 0;
              //     i < box.read(BoxName.tokensDrivers)['message'].length;
              //     i++) {
              //   // for (var i = 0; i < 2; i++) {
              //   // print(i);
              //   var res = await CRUD()
              //       .post(link: AppLink.addNotificationCaptain, payload: {
              //     "driverID": box
              //         .read(BoxName.tokensDrivers)['message'][i]['id']
              //         .toString(),
              //     "title": title.text,
              //     "body": body.text,
              //     "isPin": 'unPin',
              //   });
              //   Log.print(
              //       'res: ${res}for ${box.read(BoxName.tokensDrivers)['message'][i]['id']}');
              //   // Log.print('tokensDriver[i]: ${tokensDriver[i]}');
              //   Future.delayed(const Duration(microseconds: 50));
              NotificationService.sendNotification(
                target: 'drivers', // الإرسال لجميع المشتركين في "service"
                title: title.text,
                body: body.text,
                isTopic: true,
                category: 'fromAdmin', // فئة توضح نوع الإشعار
              );
              // FirebaseMessagesController().sendNotificationToAnyWithoutData(
              //     title.text,
              //     body.text,
              //     box
              //         .read(BoxName.tokensDrivers)['message'][i]['token']
              //         .toString(),
              //     'tone2.wav');
              // }
              Get.back();
              // }
            }),
        cancel: MyElevatedButton(
            title: 'cancel',
            onPressed: () {
              Get.back();
            }));
  }

  Future<dynamic> sendNotificationPassengers() {
    return Get.defaultDialog(
        title: 'send notification'.tr,
        titleStyle: AppStyle.title,
        content: Form(
          key: formKey,
          child: Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: MyTextForm(
                    controller: title,
                    label: 'title notification'.tr,
                    hint: 'title notification'.tr,
                    type: TextInputType.name),
              ),
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: MyTextForm(
                    controller: body,
                    label: 'body notification'.tr,
                    hint: 'body notification'.tr,
                    type: TextInputType.name),
              ),
            ],
          ),
        ),
        confirm: MyElevatedButton(
            title: 'send'.tr,
            onPressed: () async {
              // tokensPassengers = box.read(BoxName.tokensPassengers);
//               var tokensPassengersData =
//                   box.read(BoxName.tokensPassengers)['data'];

// // Debug print to check structure of the 'data' field
//               print('Tokens Passengers Data: $tokensPassengersData');

//               if (tokensPassengersData is List) {
//                 for (var i = 0; i < tokensPassengersData.length; i++) {
//                   if (formKey.currentState!.validate()) {
//                     var res = await CRUD()
//                         .post(link: AppLink.addNotificationPassenger, payload: {
//                       "passenger_id":
//                           tokensPassengersData[i]['passengerID'].toString(),
//                       "title": title.text,
//                       "body": body.text,
//                     });
//                     Log.print('res: ${res}');
//                     FirebaseMessagesController()
//                         .sendNotificationToAnyWithoutData(
//                       title.text,
//                       body.text,
//                       tokensPassengersData[i]['token']
//                           .toString(), // Access token correctly
//                       'order.wav',
//                     );
//                   }
//                 }
              NotificationService.sendNotification(
                target: 'passengers', // الإرسال لجميع المشتركين في "service"
                title: title.text,
                body: body.text,
                isTopic: true,
                category: 'fromAdmin', // فئة توضح نوع الإشعار
              );
              Get.back();
//               } else {
//                 // Handle the case where 'data' is not a list
//                 print('Data is not a list: $tokensPassengersData');
//               }
            }),
        cancel: MyElevatedButton(
            title: 'cancel',
            onPressed: () {
              Get.back();
            }));
  }
}
// يلا دلوقتي! تطبيق سفر جاهز عشان تبدأ تستقبل الطلبات
// 	•	افتح التطبيق دلوقتي، واستعد إنك تستقبل طلبات أكتر. كل ما تكون فاتح، فرصتك في الطلبات بتزيد!
// 	2.	خليك فاتح واستقبل طلبات أكتر مع تطبيق سفر
// 	•	وجودك متصل في التطبيق هيخليك تستقبل طلبات أكتر. افتح التطبيق دلوقتي وما تفوتش الفرصة!
// 	3.	فرصتك لزيادة دخلك مع تطبيق سفر تبدأ من دلوقتي!
// 	•	مجرد إنك تفتح التطبيق مش هيأثر عليك، بالعكس، هيزود فرصتك في طلبات أكتر. افتح التطبيق واشترك دلوقتي!

//sms
// link sefer driver is https://shorturl.at/IHJcm1.
// //	ميزات الأمان بعد 500 رحلة:
// 	•	“بعد 500 رحلة مع سفر، تحصل على مميزات أمان إضافية لضمان راحتك.”
// 	•	“نوفر لك ميزات أمان متقدمة بعد 500 رحلة لتجربة قيادة أكثر أمانًا.”
// 	•	“مع 500 رحلة، تحصل على دعم أمني متقدم لتوفير أفضل تجربة قيادة.”
// 	2.	ميزات الصيانة:
// 	•	“احصل على خدمات صيانة مجانية بعد عدد معين من الرحلات مع سفر.”
// 	•	“استمتع بخدمات صيانة حصرية عند الوصول إلى عدد محدد من الرحلات.”
// 	•	“مع سفر، نقدم لك عروض صيانة مميزة لتحافظ على سيارتك في أفضل حال.”
// 	3.	ميزات فتح حسابات البنوك:
// 	•	“مع سفر، يمكنك فتح حساب بنكي بسهولة واستفادة من عروض مميزة.”
// 	•	“افتح حساب بنكي مع تطبيق سفر واستفد من خدمات مالية حصرية.”
// 	•	“نساعدك على فتح حساب بنكي بأفضل العروض بالتعاون مع البنوك المحلية.”
// 	4.	ميزات ورود السيارات ومعارض السيارات الخاصة بنا:
// 	•	“استمتع بعروض مميزة لشراء السيارات من معارض سفر الحصرية.”
// 	•	“اختر سيارتك المثالية من معارض سفر بأسعار تنافسية وخدمات مميزة.”
// 	•	“نقدم لك أفضل عروض السيارات من معارضنا لتسهيل امتلاك سيارتك الجديدة.”
// 	5.	ميزات أوفر كار:
// 	•	“أوفر كار من سفر توفر لك سيارات اقتصادية لزيادة دخلك بكفاءة.”
// 	•	“مع أوفر كار، يمكنك العمل بسيارات اقتصادية وتحقيق أرباح أكبر.”
// 	•	“تطبيق سفر يقدم لك أوفر كار، الخيار الاقتصادي المثالي لزيادة دخلك.”
// 	6.	مستوى الدخل المحدود والطلبات الاقتصادية:
// 	•	“لأصحاب الدخل المحدود، وفرنا طلبات اقتصادية تضمن لك زيادة دخلك.”
// 	•	“الطلبات الاقتصادية من سفر تساعدك على زيادة دخلك بسهولة وفعالية.”
// 	•	“استفد من طلبات اقتصادية تناسب أصحاب الدخل المحدود لزيادة أرباحك.”
// 	7.	طلبات الليل:
// 	•	“مع طلبات الليل من سفر، زود دخلك واستفد من فرص إضافية في المساء.”
// 	•	“لا تفوت فرصة طلبات الليل مع سفر، زود دخلك في أي وقت.”
// 	•	“طلبات الليل من سفر توفر لك فرصًا إضافية لتحقيق دخل أعلى.”
// 	8.	طلبات الكمفورت الأكثر راحة والسيارات المكيفة:
// 	•	“قدّم خدمة مريحة مع طلبات الكمفورت من سفر والسيارات المكيفة.”
// 	•	“طلبات الكمفورت توفر تجربة راقية للركاب بسيارات مكيفة ومريحة.”
// 	•	“مع سفر، سيارات الكمفورت المكيفة تضمن راحة الركاب وزيادة الطلبات.”
// 	9.	طلبات السبيد:
// 	•	“استقبل طلبات السبيد مع سفر لتقديم رحلات أسرع وزيادة دخلك.”
// 	•	“طلبات السبيد توفر لك فرصة إكمال المزيد من الرحلات في وقت أقل.”
// 	•	“مع طلبات السبيد من سفر، تقدم خدمة سريعة وفعالة لزيادة الأرباح.”
// 	10.	الطلبات الثابتة والمعتدلة السعر والنسبة الثابتة 8%:
// 	•	“مع نسبة ثابتة 8%، تحصل على أفضل عروض الأسعار مع سفر.”
// 	•	“استمتع بنسبة ثابتة 8%، أقل نسبة بين المنافسين لزيادة دخلك.”
// 	•	“طلبات سفر الثابتة تضمن لك دخلاً مستقراً بنسبة أقل من 8%.”
