import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:get/get.dart';
import '../../constant/links.dart';

import '../../print.dart'; // للترجمة .tr

class NotificationService {
  static String get _serverUrl => '${AppLink.server}/ride/firebase/send_fcm.php';

  static Future<void> sendNotification({
    required String target,
    required String title,
    required String body,
    required String category, // إلزامي للتصنيف
    String? tone,
    List<String>? driverList,
    bool isTopic = false,
  }) async {
    try {
      // 1. تجهيز البيانات المخصصة (Data Payload)
      Map<String, dynamic> customData = {};

      customData['category'] = category;

      // إذا كان هناك قائمة سائقين/ركاب، نضعها هنا
      if (driverList != null && driverList.isNotEmpty) {
        // نرسلها كـ JSON String لأن FCM v1 يدعم String Values فقط في الـ data
        customData['driverList'] = jsonEncode(driverList);
      }

      // 2. تجهيز الطلب الرئيسي للسيرفر
      final Map<String, dynamic> requestPayload = {
        'target': target,
        'title': title,
        'body': body,
        'isTopic': isTopic,
        'data':
            customData, // 🔥🔥 التغيير الجوهري: وضعنا البيانات داخل "data" 🔥🔥
      };

      if (tone != null) {
        requestPayload['tone'] = tone;
      }

      final response = await http.post(
        Uri.parse(_serverUrl),
        headers: {
          'Content-Type': 'application/json; charset=UTF-8',
        },
        body: jsonEncode(requestPayload),
      );

      if (response.statusCode == 200) {
        Log.print('✅ Notification sent successfully.');
        // Log.print('Response: ${response.body}');
      } else {
        Log.print(
            '❌ Failed to send notification. Code: ${response.statusCode}');
        Log.print('Error Body: ${response.body}');
      }
    } catch (e) {
      Log.print('❌ Error sending notification: $e');
    }
  }
}
