75 lines
2.9 KiB
PHP
75 lines
2.9 KiB
PHP
<?php
|
|
include "/www/wwwroot/bilspro/config/connect.php";
|
|
include "/www/wwwroot/bilspro/config/whatsapp_api.php";
|
|
|
|
date_default_timezone_set('Asia/Jakarta');
|
|
|
|
// 1. Ambil data server sekaligus
|
|
$stmtSV = $pdo->prepare("SELECT id, status_koneksi_off, interval_koneksi_off FROM data_server WHERE status_koneksi_off = 'Aktif'");
|
|
$stmtSV->execute();
|
|
$serverSettings = $stmtSV->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);
|
|
|
|
if (!$serverSettings) {
|
|
die("Tidak ada server dengan fitur Pesan Off yang aktif.\n");
|
|
}
|
|
|
|
// 2. Ambil data MikroTik
|
|
$stmt = $pdo->prepare("SELECT id, id_data_server, nama FROM setting_mikrotik");
|
|
$stmt->execute();
|
|
$mikrotiks = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if ($mikrotiks) {
|
|
foreach ($mikrotiks as $row) {
|
|
$mikName = $row['nama'];
|
|
$idServer = $row['id_data_server'];
|
|
|
|
// Cek apakah setting server untuk mikrotik ini ada
|
|
if (!isset($serverSettings[$idServer])) continue;
|
|
|
|
$setting = $serverSettings[$idServer];
|
|
$intervalMenit = (int)$setting['interval_koneksi_off'];
|
|
|
|
if ($intervalMenit <= 0) continue;
|
|
|
|
$batasWaktu = date('Y-m-d H:i:s', strtotime("-$intervalMenit minutes"));
|
|
|
|
// 3. Ambil pelanggan yang off sekaligus
|
|
$stmtInt = $pdo->prepare("SELECT id, id_data_server, nomor_whatsapp FROM pelanggan
|
|
WHERE pesan_off = '0'
|
|
AND status = 'aktif'
|
|
AND status_koneksi = 'Off'
|
|
AND id_setting_mikrotik = :id
|
|
AND time_update < :batasWaktu");
|
|
$stmtInt->bindValue(':id', $row['id']);
|
|
$stmtInt->bindValue(':batasWaktu', $batasWaktu);
|
|
$stmtInt->execute();
|
|
$customersOff = $stmtInt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if ($customersOff) {
|
|
$APIwa = new PesanWA();
|
|
$updatedIds = [];
|
|
|
|
foreach ($customersOff as $Val) {
|
|
// Kirim Pesan
|
|
$APIwa->Create_Pesan($Val['id_data_server'], $Val['id'], 'Pesan Koneksi Off');
|
|
$Pesan = $APIwa->Get_Pesan();
|
|
$APIwa->Send_Pesan($Val['id_data_server'], ['sendMessage','Pesan Koneksi Off'], [$Val['nomor_whatsapp']], $Pesan);
|
|
|
|
$updatedIds[] = $Val['id'];
|
|
echo "[$mikName] Pesan Off dikirim ke => " . $Val['nomor_whatsapp'] . "\n";
|
|
}
|
|
|
|
// 4. Update status pesan_off sekaligus (Batch Update)
|
|
if (!empty($updatedIds)) {
|
|
$placeholders = implode(',', array_fill(0, count($updatedIds), '?'));
|
|
$stmtUpdate = $pdo->prepare("UPDATE pelanggan SET pesan_off = '1' WHERE id IN ($placeholders)");
|
|
$stmtUpdate->execute($updatedIds);
|
|
}
|
|
} else {
|
|
echo "[$mikName] Tidak ada pelanggan baru yang memenuhi kriteria Off.\n";
|
|
}
|
|
}
|
|
} else {
|
|
echo "No MikroTik data found.\n";
|
|
}
|
|
?>
|