<?php
/**
 * Ecotrack (Navex) API Helper
 * استخدم هذا الملف في أي صفحة تحتاج إرسال طلب لـ Ecotrack
 */

define('ECOTRACK_BASE_URL', 'https://ecotrack.dz/api/v1');

/**
 * إرسال طلب جديد إلى Ecotrack
 * 
 * @param string $token     — API Token من إعدادات شركة التوصيل
 * @param array  $order     — صف الطلب من قاعدة البيانات
 * @param string $commune   — اسم البلدية
 * @param string $wilaya_name — اسم الولاية (اختياري)
 * @return array ['success', 'tracking_code', 'message', 'raw']
 */
function ecotrack_create_parcel(string $token, array $order, string $commune = '', string $wilaya_name = ''): array
{
    // تحديد نوع التوصيل: 1=منزل، 2=مكتب
    $type_livraison = ($order['delivery_type'] === 'office') ? 2 : 1;

    $payload = [
        'Tracking'      => 'NEO-' . $order['id'],
        'TypeLivraison' => $type_livraison,
        'TypeColis'     => 0,       // 0=عادي
        'Confrimee'     => 0,       // 0=غير مؤكد (COD)
        'Client'        => $order['customer_name'],
        'MobileA'       => $order['phone'],
        'MobileB'       => $order['phone2'] ?? '',
        'Adresse'       => $order['address'] ?: ($wilaya_name ?: 'غير محدد'),
        'IDWilaya'      => str_pad((string)($order['wilaya_id'] ?? '01'), 2, '0', STR_PAD_LEFT),
        'Commune'       => $commune ?: ($order['municipality'] ?? ''),
        'Total'         => (string)($order['total'] ?? 0),
        'Note'          => '',
        'TProduit'      => $order['product_name'] ?? 'منتج',
        'id_Externe'    => (string)$order['id'],
        'Source'        => 'NeoLink',
    ];

    $ch = curl_init(ECOTRACK_BASE_URL . '/parcels/');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => json_encode($payload),
        CURLOPT_HTTPHEADER     => [
            'Content-Type: application/json',
            'Accept: application/json',
            'Authorization: Token ' . $token,
        ],
        CURLOPT_TIMEOUT        => 20,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
    ]);

    $response  = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curl_err  = curl_error($ch);
    curl_close($ch);

    // فشل اتصال
    if ($curl_err) {
        return [
            'success'       => false,
            'tracking_code' => null,
            'message'       => 'خطأ في الاتصال: ' . $curl_err,
            'raw'           => null,
        ];
    }

    $result = json_decode($response, true);

    // نجاح: 200 أو 201
    if (in_array($http_code, [200, 201])) {
        return [
            'success'       => true,
            'tracking_code' => $result['tracking'] ?? $result['Tracking'] ?? ('NEO-' . $order['id']),
            'message'       => 'تم إرسال الطلب بنجاح',
            'raw'           => $response,
        ];
    }

    // فشل من Ecotrack
    $error_msg = 'خطأ ' . $http_code;
    if (!empty($result)) {
        // Ecotrack يرجع الأخطاء كـ array أو string
        $error_msg .= ': ' . (is_array($result) ? json_encode($result, JSON_UNESCAPED_UNICODE) : $result);
    }

    return [
        'success'       => false,
        'tracking_code' => null,
        'message'       => $error_msg,
        'raw'           => $response,
    ];
}


/**
 * جلب بيانات طلب موجود من Ecotrack
 * 
 * @param string $token
 * @param string $tracking_code — رمز التتبع المحفوظ
 */
function ecotrack_get_parcel(string $token, string $tracking_code): array
{
    $ch = curl_init(ECOTRACK_BASE_URL . '/parcels/' . urlencode($tracking_code) . '/');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => [
            'Accept: application/json',
            'Authorization: Token ' . $token,
        ],
        CURLOPT_TIMEOUT        => 15,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
    ]);

    $response  = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    return [
        'success' => $http_code === 200,
        'data'    => json_decode($response, true),
        'raw'     => $response,
    ];
}


/**
 * اختبار صحة الـ Token
 * 
 * @param string $token
 * @return bool
 */
function ecotrack_test_token(string $token): bool
{
    $ch = curl_init(ECOTRACK_BASE_URL . '/parcels/?limit=1');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => [
            'Accept: application/json',
            'Authorization: Token ' . $token,
        ],
        CURLOPT_TIMEOUT        => 10,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
    ]);

    $http_code = curl_getinfo(curl_exec($ch) ? $ch : $ch, CURLINFO_HTTP_CODE);
    curl_exec($ch); // نفذ مرة للحصول على الكود
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    return in_array($http_code, [200, 201]);
}