<?php

namespace App\Services;

/**
 * WhatsApp Proxy Service
 * 
 * Used to send WhatsApp messages (like OTPs) via Intaleq proxy bots.
 */
class WhatsAppProxyService
{
    /**
     * قائمة السيرفرات المتاحة
     */
    private array $servers = [
        //"https://botmasa.intaleq.xyz/send", // mayar
        //"https://botmasa2.intaleq.xyz/send", // shad 
        //"https://bootride.intaleq.xyz/send", // ramat bus
        // "https://bot3.intaleq.xyz/send", // shahd
        "https://bot5.intaleq.xyz/send", // bot5 from postman
        //"https://whatsapp.tripz-egypt.com/send" // tripz
    ];

    /**
     * إرسال رسالة واتساب
     * 
     * @param string $to رقم الهاتف
     * @param string $message نص الرسالة
     * @return bool نجاح الإرسال
     */
    public function sendMessage(string $to, string $message): array
    {
        if (empty($this->servers)) {
            return ['success' => false, 'error' => 'No servers available.'];
        }

        // اختيار سيرفر عشوائي من القائمة المتاحة لتوزيع الحمل
        $url = $this->servers[array_rand($this->servers)];

        $payload = [
            "to" => $to,
            "message" => [
                "text" => $message
            ]
        ];

        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
            CURLOPT_HTTPHEADER => [
                "Content-Type: application/json"
            ],
            CURLOPT_TIMEOUT => 15, // مهلة 15 ثانية للطلب
        ]);

        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);

        if ($err) {
            return ['success' => false, 'error' => $err, 'url' => $url];
        }

        $responseData = json_decode($response, true);
        $isSuccess = isset($responseData['success']) && $responseData['success'] === true;

        return [
            'success' => $isSuccess,
            'response' => $responseData,
            'raw_response' => $response,
            'url' => $url,
            'payload' => $payload
        ];
    }
}
