Files
2025-10-07 21:01:15 +07:00

121 lines
4.6 KiB
PHP

<?php
require __DIR__ . "/../config/connect.php";
require __DIR__ . "/../config/encrypt.php";
$datadecrypt = decrypt_url($_GET['data']);
$dataurl = json_decode($datadecrypt, true);
$SqlSvData = $dataurl[0];
$SqlDataWHIdM = $dataurl[1];
$hotspotAktif = !empty($dataurl[2]) && $dataurl[2] == 1;
// Definisi kolom sesuai thead (No dihitung otomatis)
$columns = ['nama','nik','akun'];
if($hotspotAktif) {
$columns[] = 'user_hotspot';
}
$columns = array_merge($columns, [
'alamat','latitude','nomor_whatsapp','nama_server','nama_mikrotik','nama_paket','status_koneksi','time_start'
]);
// Paging
$limit = intval($_POST['length']);
$offset = intval($_POST['start']);
// Order
$orderIndex = intval($_POST['order'][0]['column']) - 1; // kurangi 1 karena No di kolom pertama
$orderCol = $columns[$orderIndex] ?? 'nama';
$orderDir = $_POST['order'][0]['dir'] ?? 'asc';
// Search
$search = $_POST['search']['value'] ?? '';
$where = "WHERE $SqlSvData status = 'aktif'";
if(!empty($search)) {
$where .= " AND (nama LIKE :search OR nik LIKE :search OR akun LIKE :search OR status_koneksi LIKE :search OR nomor_whatsapp LIKE :search OR nama_paket LIKE :search OR nama_server LIKE :search OR alamat LIKE :search OR time_start LIKE :search OR mac_address LIKE :search)";
}
// Hitung total
$totalStmt = $pdo->query("SELECT COUNT(id) FROM v_pelanggan WHERE $SqlSvData status = 'aktif'");
$recordsTotal = $totalStmt->fetchColumn();
// Query data
$sql = "SELECT id,akun,user_hotspot,nama,alamat,latitude,longitude,nomor_whatsapp,email,nik,
nama_server,nama_paket,time_start,status_koneksi,nama_mikrotik,id_setting_mikrotik,
time_update,ip_address,mac_address,serial_number,uuid
FROM v_pelanggan $where
ORDER BY $orderCol $orderDir
LIMIT :limit OFFSET :offset";
$stmt = $pdo->prepare($sql);
if(!empty($search)) $stmt->bindValue(':search', "%$search%");
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Format data
$no = $offset + 1;
$dataArray = [];
foreach($data as $row) {
$latlong = (substr($row['latitude'],0,1) != '-')
? "<a href='https://google.com/maps/?q={$row['latitude']}' target='_blank'>{$row['latitude']}</a>"
: "<a href='https://google.com/maps/?q={$row['latitude']},{$row['longitude']}' target='_blank'>{$row['latitude']}, {$row['longitude']}</a>";
$wa = "{$row['nomor_whatsapp']} <a href='https://wa.me/{$row['nomor_whatsapp']}' target='_blank' class='btn btn-sm btn-success' style='border-radius:20px;'><i class='fab fa-whatsapp'></i></a><br>{$row['email']}";
$dataId = encrypt_url(json_encode([$row['uuid'],$row['serial_number'],$row['mac_address']]));
$server = $row['nama_server'] . '<br><i class="text-secondary"><small>' . $row['nama_mikrotik'] . '</small></i>';
$buttonmodem = '<a href="javascript:void(0)"
class="btn btn-secondary btn-sm rounded-circle openModal"
data-toggle="modal"
data-target="#exampleModal"
data-id="' . $dataId . '"
style="width:25px; height:25px; display:flex; align-items:center; justify-content:center;">
<i class="fa fa-cog"></i>
</a>
<i class="text-secondary"><small>' . $row['mac_address'] . '</small></i>
<i class="text-secondary"><small>' . $row['serial_number'] . '</small></i>
';
$status = $row['status_koneksi'];
if($status == 'On') {
$status .= " <a href='?".encrypt_url("user_remote|{$row['id']}|{$row['id_setting_mikrotik']}")."' class='btn btn-sm btn-success ml-1' style='border-radius: 20px;'>Remote</a><br>{$row['ip_address']}";
}
$status .= "<br>{$row['time_update']}";
$aksi = "<a href='?".encrypt_url("user_detail|{$row['id']}")."' class='btn btn-sm btn-info m-1'>Detail</a>";
// Build row sesuai urutan thead
$rowData = [
$no++,
$row['nama'],
$row['nik'],
$row['akun']
];
if($hotspotAktif) {
$rowData[] = $row['user_hotspot'];
}
$rowData[] = $row['alamat'];
$rowData[] = $latlong;
$rowData[] = $wa;
$rowData[] = $server;
$rowData[] = $buttonmodem;
$rowData[] = $row['nama_paket'];
$rowData[] = $status;
$rowData[] = $row['time_start'];
$rowData[] = $aksi;
$dataArray[] = $rowData;
}
echo json_encode([
"draw" => intval($_POST['draw']),
"recordsTotal" => $recordsTotal,
"recordsFiltered" => $recordsTotal,
"data" => $dataArray
]);