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"; } ?>