162 lines
4.8 KiB
PHP
162 lines
4.8 KiB
PHP
<?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") {
|
||
|
||
// 🔥 NOTIF KE PELANGGAN
|
||
$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 dibantu videokan atau foto kondisi alat 🙏\n\n";
|
||
$pesan .= "Terima kasih 🙏";
|
||
|
||
// ======================
|
||
// 🔥 NOTIF KE TEKNISI (POWER FAIL)
|
||
// ======================
|
||
$pesanTeknisi = "⚡ *POWER FAIL TERDETEKSI*\n\n";
|
||
$pesanTeknisi .= "👤 Pelanggan: {$nama}\n";
|
||
$pesanTeknisi .= "📡 SN: {$sn}\n\n";
|
||
$pesanTeknisi .= "Status: POWER FAIL\n\n";
|
||
$pesanTeknisi .= "📍 Lokasi:\n{$maps}\n\n";
|
||
$pesanTeknisi .= "ℹ Saat ini sedang konfirmasi ke pelanggan terkait kondisi alat di lokasi.\n";
|
||
$pesanTeknisi .= "📸 Jika sudah ada info, akan dikirim foto / video alat di grup ini.\n\n";
|
||
$pesanTeknisi .= "Mohon standby 🙏";
|
||
|
||
// kirim ke group teknisi
|
||
kirimWA($groupTeknisi, $pesanTeknisi);
|
||
}
|
||
|
||
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>";
|
||
}
|
||
}
|