145 lines
4.2 KiB
Plaintext
145 lines
4.2 KiB
Plaintext
<?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>";
|
|
}
|
|
}
|