<?php
require_once __DIR__ . '/../config/database.php';

$db = new Database();
$conn = $db->getConnection();

if (!function_exists('kirimWA')) {
    function kirimWA($target, $pesan) {
        $token = "XjC9oSr4jECWG93JQRWf";

        $data = [
            "target" => $target,
            "message" => $pesan,
        ];

        $curl = curl_init();

        curl_setopt_array($curl, [
            CURLOPT_URL => "https://api.fonnte.com/send",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => http_build_query($data),
            CURLOPT_HTTPHEADER => [
                "Authorization: $token"
            ],
        ]);

        curl_exec($curl);
        curl_close($curl);
    }
}
// 🔥 ID GROUP TEKNISI
$groupTeknisi = "120363427232707228@g.us";

// ambil semua ONU yang punya nomor HP + lokasi pelanggan
$stmt = $conn->query("
    SELECT 
        o.sn, 
        o.status, 
        f.name, 
        f.customer_phone,
        f.latitude,
        f.longitude
    FROM onu_status o
    JOIN ftth_items f ON f.sn_onu = o.sn
    JOIN item_types it ON f.item_type_id = it.id
    WHERE f.customer_phone IS NOT NULL
    AND LOWER(it.name) = 'pelanggan'
");

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($data as $row) {

    $sn = $row['sn'];
    $status = $row['status'];
    $nama = $row['name'];
    $phone = $row['customer_phone'];
    $lat = $row['latitude'];
    $lng = $row['longitude'];

    // 🔥 buat link maps
    $maps = ($lat && $lng) 
        ? "https://www.google.com/maps?q={$lat},{$lng}" 
        : "-";

    // 🔥 cek status terakhir
    $cek = $conn->prepare("
        SELECT last_status FROM notif_onu_log WHERE sn = ?
    ");
    $cek->execute([$sn]);

    $last = $cek->fetch(PDO::FETCH_ASSOC);
    $lastStatus = $last['last_status'] ?? null;

    // ❌ anti spam
    if ($status == $lastStatus) continue;

    // ======================
    // 🔥 FORMAT PESAN
    // ======================

    $pesan = "";

    if ($status == "LASER OUT") {
        $pesan .= "🚨 *GANGGUAN INTERNET*\n\n";
        $pesan .= "Pelanggan: {$nama}\n\n";
        $pesan .= "Terjadi gangguan pada kabel fiber (FO CUT).\n";
        $pesan .= "kami akan informasikan kepada tim teknis untuk segera ke lokasi kakak.\n\n";
        $pesan .= "estimasi perbaikan 4 Jam pengerjaan.\n\n";
        $pesan .= "Mohon ditunggu 🙏";

        // ======================
        // 🔥 NOTIF KE TEKNISI (KHUSUS LOS)
        // ======================
        $pesanTeknisi  = "🚨 *FO CUT TERDETEKSI*\n\n";
        $pesanTeknisi .= "👤 Pelanggan: {$nama}\n";
        $pesanTeknisi .= "📡 SN: {$sn}\n\n";
        $pesanTeknisi .= "Status: LOS\n";
        $pesanTeknisi .= "Estimasi: 4 Jam\n\n";
        $pesanTeknisi .= "📍 Lokasi:\n{$maps}\n\n";
        $pesanTeknisi .= "⚠ Segera ke lokasi";

        // kirim ke group teknisi
        kirimWA($groupTeknisi, $pesanTeknisi);
    }

    elseif ($status == "POWER FAIL") {
        $pesan .= "⚡ *PERANGKAT MATI*\n\n";
        $pesan .= "Pelanggan: {$nama}\n\n";
        $pesan .= "Perangkat ONU terdeteksi mati / tidak mendapat listrik.\n";
        $pesan .= "Silakan cek adaptor atau listrik di lokasi.\n\n";
        $pesan .= "Jika terjadi kendala dilokasi mohon konfirmasinya kakak\n\n";
        $pesan .= "bisa di bantu videokan alat atau foto alat dilokasi kakak🙏\n\n";
        $pesan .= "Terima kasih 🙏";
    }

    elseif ($status == "ONLINE" && $lastStatus != "ONLINE") {
        $pesan .= "✅ *INTERNET NORMAL*\n\n";
        $pesan .= "Pelanggan: {$nama}\n\n";
        $pesan .= "Koneksi internet sudah kembali normal.\n\n";
        $pesan .= "Internet saat ini bisa dicoba kembali\n\n";
        $pesan .= "Terima kasih 🙏";
    }

    // kirim kalau ada pesan
    if ($pesan != "") {

        // 🔥 kirim WA ke pelanggan (TIDAK DIUBAH)
        kirimWA($phone, $pesan);

        // update log
        $update = $conn->prepare("
            INSERT INTO notif_onu_log (sn, last_status, last_sent)
            VALUES (?, ?, NOW())
            ON DUPLICATE KEY UPDATE
                last_status = VALUES(last_status),
                last_sent = NOW()
        ");
        $update->execute([$sn, $status]);

        echo "Kirim ke $phone | $status <br>";
    }
}
