112 lines
3.7 KiB
PHP
112 lines
3.7 KiB
PHP
<?php
|
|
include '../config/connect.php';
|
|
|
|
// Ambil parameter DataTables
|
|
$draw = isset($_POST['draw']) ? intval($_POST['draw']) : 0;
|
|
$start = isset($_POST['start']) ? intval($_POST['start']) : 0;
|
|
$length = isset($_POST['length']) ? intval($_POST['length']) : 10;
|
|
$search = isset($_POST['search']['value']) ? $_POST['search']['value'] : '';
|
|
$orderColumnIndex = $_POST['order'][0]['column'] ?? 1;
|
|
$orderDir = $_POST['order'][0]['dir'] ?? 'desc';
|
|
|
|
// Mapping kolom sesuai urutan table DataTable
|
|
$columns = [
|
|
0 => 'nama_server',
|
|
1 => 'start_time',
|
|
2 => 'nominal',
|
|
3 => 'user_create',
|
|
4 => 'status',
|
|
5 => 'update_time',
|
|
6 => 'id'
|
|
];
|
|
|
|
$orderColumn = $columns[$orderColumnIndex] ?? 'start_time';
|
|
|
|
// Filter server ID
|
|
$id_data_server = isset($_GET['i']) ? $_GET['i'] : 0; // bisa single atau multiple (1,2,3)
|
|
$jenis = isset($_GET['s']) ? $_GET['s'] : 0;
|
|
|
|
// echo $jenis;
|
|
$where = "WHERE 1=1 AND jenis = '$jenis'";
|
|
if ($id_data_server > 0) {
|
|
if ($id_data_server == 1) {
|
|
$where .= ""; // semua server
|
|
} else {
|
|
// pastikan hanya angka dan koma
|
|
$safe_ids = implode(',', array_map('intval', explode(',', $id_data_server)));
|
|
$where .= " AND id_data_server IN ($safe_ids) ";
|
|
}
|
|
}
|
|
|
|
// Query untuk hitung total
|
|
try {
|
|
$stmt = $pdo->query("SELECT COUNT(*) FROM v_transaksi_withdraw $where");
|
|
$recordsTotal = (int) $stmt->fetchColumn();
|
|
} catch (Exception $e) {
|
|
$recordsTotal = 0;
|
|
}
|
|
|
|
// Query untuk filter pencarian
|
|
$searchQuery = '';
|
|
if (!empty($search)) {
|
|
$searchQuery = " AND (user_create LIKE :search OR status LIKE :search OR nominal LIKE :search) ";
|
|
}
|
|
|
|
// Hitung total setelah filter
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT COUNT(*) FROM v_transaksi_withdraw $where $searchQuery");
|
|
if (!empty($search)) $stmt->bindValue(':search', "%$search%", PDO::PARAM_STR);
|
|
$stmt->execute();
|
|
$recordsFiltered = (int) $stmt->fetchColumn();
|
|
} catch (Exception $e) {
|
|
$recordsFiltered = 0;
|
|
}
|
|
|
|
// Ambil data sesuai filter + order + limit
|
|
$data = [];
|
|
try {
|
|
$sql = "SELECT nama_server, start_time, nominal, user_create, status, update_time, id_data_server, id, bukti_success
|
|
FROM v_transaksi_withdraw
|
|
$where $searchQuery
|
|
ORDER BY $orderColumn $orderDir
|
|
LIMIT :start, :length";
|
|
$stmt = $pdo->prepare($sql);
|
|
if (!empty($search)) $stmt->bindValue(':search', "%$search%", PDO::PARAM_STR);
|
|
$stmt->bindValue(':start', $start, PDO::PARAM_INT);
|
|
$stmt->bindValue(':length', $length, PDO::PARAM_INT);
|
|
$stmt->execute();
|
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC) ?: [];
|
|
|
|
// foreach ($rows as $row) {
|
|
// // Format nominal ke number_format
|
|
// $row['nominal'] = number_format((float)$row['nominal'], 0, ',', '.');
|
|
// // $row['status'] = ($row['status'] == 'pending') ? '<span class="badge bg-primary p-2">' . strtoupper($row['status']) . '</span>' : '<span class="badge bg-success p-2">' . strtoupper($row['status']) . '</span>';
|
|
// $row['id'] = ['id' => '']
|
|
// $data[] = array_values($row); // ubah ke numerik index biar sesuai DataTables
|
|
// }
|
|
foreach ($rows as $row) {
|
|
$data[] = [
|
|
$row['nama_server'],
|
|
$row['start_time'],
|
|
number_format((float)$row['nominal'], 0, ',', '.'),
|
|
$row['user_create'],
|
|
$row['status'],
|
|
$row['update_time'],
|
|
[ // kolom 6 → objek
|
|
"id" => $row['id'],
|
|
"bukti_success" => $row['bukti_success']
|
|
]
|
|
];
|
|
}
|
|
} catch (Exception $e) {
|
|
$data = [];
|
|
}
|
|
|
|
// Response ke DataTables
|
|
echo json_encode([
|
|
"draw" => $draw,
|
|
"recordsTotal" => $recordsTotal,
|
|
"recordsFiltered" => $recordsFiltered,
|
|
"data" => $data
|
|
]);
|