292 lines
11 KiB
PHP
292 lines
11 KiB
PHP
<?php
|
|
// Aktifkan error reporting
|
|
ini_set('display_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
// Koneksi PDO
|
|
include "../config/connect.php"; // pastikan $pdo sudah ada
|
|
|
|
// Daftar id_data_server
|
|
$idServers = [3, 2, 4, 5, 6, 8, 9, 67, 74, 75, 76];
|
|
|
|
// Buat placeholder dinamis
|
|
$placeholders = implode(',', array_fill(0, count($idServers), '?'));
|
|
|
|
// Query select
|
|
$sql = "SELECT id, nama, email
|
|
FROM pelanggan
|
|
WHERE id_data_server IN ($placeholders)";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute($idServers);
|
|
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if ($results) {
|
|
$no = 1;
|
|
$gmailDomain = '@gmail.com';
|
|
|
|
foreach ($results as $row) {
|
|
$id = $row['id'];
|
|
$nama = $row['nama'];
|
|
$email = trim($row['email']);
|
|
$emailLower = strtolower($email);
|
|
|
|
if (!empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL) && substr($emailLower, -strlen($gmailDomain)) === $gmailDomain) {
|
|
// Email valid dan Gmail
|
|
if ($email === $emailLower) {
|
|
// Semua huruf kecil -> hitam (biarkan)
|
|
$color = "black";
|
|
echo "$no => $id => $nama => <span style='color:$color;'>" . htmlspecialchars($email) . "</span><br>";
|
|
} else {
|
|
// Ada huruf besar -> kuning (UPDATE ke lowercase)
|
|
$color = "orange";
|
|
// $update = $pdo->prepare("UPDATE pelanggan SET email = ? WHERE id = ?");
|
|
// $update->execute([$emailLower, $id]);
|
|
|
|
echo "$no => $id => $nama => <span style='color:$color;'>" . htmlspecialchars($email) . "</span> =UPDATED> $emailLower<br>";
|
|
}
|
|
} else {
|
|
// Email tidak valid -> generate baru dan UPDATE
|
|
$namaClean = strtolower(preg_replace('/[^a-z]/i', '', $nama));
|
|
$randomNumber = rand(1000, 9999);
|
|
$newmail = $namaClean . $randomNumber . $gmailDomain;
|
|
|
|
// $update = $pdo->prepare("UPDATE pelanggan SET email = ? WHERE id = ?");
|
|
// $update->execute([$newmail, $id]);
|
|
|
|
echo "$no => $id => $nama => <span style='color:red;'>" . htmlspecialchars($email) . "</span> =NEW> $newmail<br>";
|
|
}
|
|
|
|
$no++;
|
|
}
|
|
} else {
|
|
echo "Tidak ada data ditemukan.";
|
|
}
|
|
|
|
|
|
|
|
|
|
// try {
|
|
// $bulan = '2025-08';
|
|
// $tanggal = date('Y-m-d');
|
|
// $metode = "API Payment";
|
|
|
|
// $stmt = $pdo->prepare("
|
|
// SELECT v_tagihan.*
|
|
// FROM v_tagihan
|
|
// LEFT JOIN transaksi ON v_tagihan.id = transaksi.id_tagihan
|
|
// WHERE transaksi.id_tagihan IS NULL
|
|
// AND SUBSTRING(v_tagihan.limit_pembayaran, 1, 7) = :bulan
|
|
// AND v_tagihan.status = 'lunas'
|
|
// ");
|
|
// $stmt->bindParam(':bulan', $bulan);
|
|
// $stmt->execute();
|
|
|
|
// $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// if (!$results) {
|
|
// echo "Tidak ada tagihan lunas tanpa transaksi di bulan $bulan.<br>";
|
|
// exit;
|
|
// }
|
|
|
|
// echo "Memproses " . count($results) . " tagihan lunas tanpa transaksi...<br>";
|
|
|
|
// foreach ($results as $index => $tagihan) {
|
|
// $idtag = $tagihan['id'];
|
|
// $cek = $pdo->prepare("SELECT id_tagihan FROM transaksi WHERE id_tagihan = :idtag");
|
|
// $cek->bindParam(':idtag', $idtag, PDO::PARAM_INT);
|
|
// $cek->execute();
|
|
|
|
// if ($cek->fetchColumn() === false) {
|
|
// $statuskas = $tagihan['jenis_layanan'] === 'Hotspot' ? 'Pendapatan Hotspot' : 'Pendapatan PPPOE';
|
|
|
|
// // $insert = $pdo->prepare("
|
|
// // INSERT INTO transaksi (
|
|
// // id_data_server, id_tagihan, id_user_akses, start_time,
|
|
// // keterangan, pemasukan, metode_pembayaran, status
|
|
// // ) VALUES (
|
|
// // :idds, :idtag, :idua, :start_time,
|
|
// // :keterangan, :pemasukan, :metode, :status
|
|
// // )
|
|
// // ");
|
|
// // $insert->bindParam(':idds', $tagihan['id_data_server'], PDO::PARAM_INT);
|
|
// // $insert->bindParam(':idtag', $tagihan['id'], PDO::PARAM_INT);
|
|
// // $insert->bindParam(':idua', $tagihan['id_marketing'], PDO::PARAM_INT);
|
|
// // $insert->bindParam(':start_time', $tanggal);
|
|
// // $insert->bindParam(':keterangan', $tagihan['keterangan']);
|
|
// // $insert->bindParam(':pemasukan', $tagihan['verifikasi_tagihan']);
|
|
// // $insert->bindParam(':metode', $metode);
|
|
// // $insert->bindParam(':status', $statuskas);
|
|
// // $insert->execute();
|
|
|
|
// echo "[SUKSES] Insert transaksi untuk tagihan ID: {$tagihan['id']} - {$tagihan['nama']} - {$tagihan['nama_server']}<br>";
|
|
// } else {
|
|
// echo "[LEWAT] Tagihan ID {$tagihan['id']} sudah ada di transaksi.<br>";
|
|
// }
|
|
// }
|
|
|
|
// } catch (PDOException $e) {
|
|
// echo "[PDO ERROR] " . $e->getMessage() . "<br>";
|
|
// } catch (Exception $e) {
|
|
// echo "[ERROR] " . $e->getMessage() . "<br>";
|
|
// }
|
|
|
|
|
|
// include "../controller/crudRadiusServer.php";
|
|
|
|
// $radius = new CrudRadiusServer();
|
|
// $radius->request('add_user', 'POST', [
|
|
// 'jenis' => 'Hotspot',
|
|
// 'username' => 'TESTVCR',
|
|
// 'password' => 'TESTVCR',
|
|
// 'groupname' => 'paket-6-device-8',
|
|
// 'nasgroupname' => 'server8'
|
|
// ]);
|
|
|
|
|
|
// $radius->request('add_user', 'POST', [
|
|
// 'jenis' => 'DHCP',
|
|
// 'username' => 'b0:a7:b9:5e:d9:1d',
|
|
// 'groupname' => 'paket-upto-50-mbps-8',
|
|
// 'nasgroupname' => 'server8'
|
|
// ]);
|
|
|
|
// $radius = new CrudRadiusServer();
|
|
// $radius->request('delete_user', 'DELETE', [
|
|
// 'username' => 'testadd'
|
|
// ]);
|
|
|
|
// include "/www/wwwroot/bilspro/config/connect.php";
|
|
|
|
// include "../config/connect.php";
|
|
// // Ambil data dari tabel setting_mikrotik
|
|
// $stmt = $pdo->prepare("SELECT id, pppa, id_data_server, nama FROM setting_mikrotik WHERE pppa != ''");
|
|
// $stmt->execute();
|
|
// $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// if ($rows) {
|
|
// foreach ($rows as $row) {
|
|
// $id = $row['id'];
|
|
// $pppa = substr($row['pppa'],0,-1);
|
|
|
|
// $entries = explode('|', $pppa);
|
|
// // Buat array hasil dari $pppa
|
|
// $result = [];
|
|
// foreach ($entries as $entry) {
|
|
// // Pecah setiap entry berdasarkan '_'
|
|
// list($akun, $ip_address) = explode('_', $entry);
|
|
// $result[] = [
|
|
// 'akun' => $akun,
|
|
// 'ip_address' => $ip_address
|
|
// ];
|
|
// }
|
|
// // Ambil data akun dari database
|
|
// $dataakun = [];
|
|
// $stmtPel = $pdo->prepare("SELECT id, akun FROM pelanggan WHERE id_setting_mikrotik = :id");
|
|
// $stmtPel->bindValue(':id', $id, PDO::PARAM_INT); // Pastikan parameter tipe aman
|
|
// $stmtPel->execute();
|
|
// $pelanggan = $stmtPel->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// // Iterasi data pelanggan
|
|
// foreach ($pelanggan as $key) {
|
|
// if (isset($key['akun'], $key['id'])) { // Pastikan kedua kunci ada
|
|
// $dataakun[] = [
|
|
// "akun" => $key['akun'],
|
|
// "id" => $key['id']
|
|
// ];
|
|
// }
|
|
// }
|
|
// // Ambil hanya daftar akun dari $dataakun
|
|
// $akunDataakun = array_column($dataakun, 'akun');
|
|
|
|
// // Cari akun yang ada di $result tetapi tidak ada di $dataakun
|
|
// $akunTidakAdaDiDataakun = array_filter($result, function ($item) use ($akunDataakun) {
|
|
// return !in_array($item['akun'], $akunDataakun);
|
|
// });
|
|
|
|
// // Hasil akhir
|
|
// $hasil = [
|
|
// 'akun_unmanage' => $akunTidakAdaDiDataakun
|
|
// ];
|
|
|
|
// $ppp_unmanage = json_encode($hasil);
|
|
|
|
// $updateStmt = $pdo->prepare("UPDATE setting_mikrotik SET ppp_unmanage = :ppp_unmanage WHERE id = :id");
|
|
// $updateStmt->execute([':ppp_unmanage' => $ppp_unmanage, ':id' => $id]);
|
|
|
|
// // Output hasil
|
|
// // echo "<pre>";
|
|
// // print_r($hasil);
|
|
|
|
|
|
|
|
// // $dataakun = [];
|
|
// // // Ambil semua akun pelanggan dalam satu query
|
|
// // $stmtPel = $pdo->prepare("SELECT id, akun FROM pelanggan WHERE id_setting_mikrotik = :id");
|
|
// // $stmtPel->bindValue(':id', $id);
|
|
// // $stmtPel->execute();
|
|
// // $pelanggan = $stmtPel->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// // foreach ($pelanggan as $key) {
|
|
// // $dataakun[] = array("akun" => $key['akun'], "id" => $key['id']);
|
|
// // }
|
|
|
|
// // $time = date('Y-m-d H:i:s');
|
|
// // $updates = [];
|
|
// // $updateStatusOff = [];
|
|
|
|
// // foreach ($pelanggan as $key) {
|
|
// // $akun = $key['akun'];
|
|
// // $idakun = $key['id'];
|
|
|
|
// // // Cek apakah akun ada dalam pppa
|
|
// // if (strpos($pppa, $akun) !== false) {
|
|
// // // Cari nama awalan dan ambil bagian data setelahnya
|
|
// // $cari00 = stristr($pppa, $akun);
|
|
// // // Ambil data hingga tanda '|'
|
|
// // $cari02 = strtok($cari00, "|");
|
|
// // // Rubah ke array
|
|
// // $data = explode("_", $cari02);
|
|
|
|
// // if (count($data) === 2) {
|
|
// // $ipadd = $data[1];
|
|
|
|
// // // Siapkan data untuk update
|
|
// // $updates[] = [
|
|
// // 'id' => $idakun,
|
|
// // 'status' => 'On',
|
|
// // 'ip_address' => $ipadd,
|
|
// // 'time' => $time,
|
|
// // ];
|
|
// // }
|
|
// // } else {
|
|
// // $updateStatusOff[] = $idakun;
|
|
// // }
|
|
// // }
|
|
// // echo $row['nama'] . " =><br><br>";
|
|
|
|
// // // Update status koneksi yang 'On' sekaligus
|
|
// // if (!empty($updates)) {
|
|
// // $updateQuery = "UPDATE pelanggan SET status_koneksi = CASE id ";
|
|
// // foreach ($updates as $update) {
|
|
// // $updateQuery .= "WHEN {$update['id']} THEN 'On' ";
|
|
// // }
|
|
// // $updateQuery .= "END, ip_address = CASE id ";
|
|
// // foreach ($updates as $update) {
|
|
// // $updateQuery .= "WHEN {$update['id']} THEN '{$update['ip_address']}' ";
|
|
// // }
|
|
// // $updateQuery .= "END, time_update = '{$time}' WHERE id IN (" . implode(',', array_column($updates, 'id')) . ")";
|
|
// // $pdo->exec($updateQuery);
|
|
// // }
|
|
|
|
// // // Update status koneksi yang 'Off'
|
|
// // if (!empty($updateStatusOff)) {
|
|
// // $updateOffQuery = "UPDATE pelanggan SET status_koneksi = 'Off' WHERE id IN ('" . implode("', '", $updateStatusOff) . "')";
|
|
// // $pdo->exec($updateOffQuery);
|
|
// // }
|
|
|
|
// }
|
|
// } else {
|
|
// echo "No data found.<br>";
|
|
// }
|
|
// ?>
|