Files
manjapro_v6/controller/get_client_payment.php
T
2025-09-21 21:40:17 +07:00

106 lines
3.2 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';
$status = isset($_GET['s']) ? $_GET['s'] : 'SUCCESS';
// Mapping kolom sesuai urutan table DataTable
$columns = [
0 => 'order_id',
1 => 'keterangan',
2 => 'nama',
3 => 'jumlah',
4 => 'saldo',
5 => 'biaya',
6 => 'status',
7 => 'jenis',
8 => 'input_time',
9 => 'update_time',
];
$orderColumn = $columns[$orderColumnIndex] ?? 'update_time';
// Filter server ID
$id_data_server = isset($_GET['i']) ? $_GET['i'] : 0; // bisa single atau multiple (1,2,3)
$where = "WHERE 1=1 ";
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) AND status = '$status'";
}
}
// Query untuk hitung total
try {
$stmt = $pdo->query("SELECT COUNT(*) FROM client_payment $where");
$recordsTotal = (int) $stmt->fetchColumn();
} catch (Exception $e) {
$recordsTotal = 0;
}
// Query untuk filter pencarian
$searchQuery = '';
if (!empty($search)) {
$searchQuery = " AND (update_time LIKE :search OR keterangan) ";
}
// Hitung total setelah filter
try {
$stmt = $pdo->prepare("SELECT COUNT(*) FROM client_payment $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 order_id, keterangan, nama, jumlah, saldo, biaya, status, jenis, input_time, update_time
FROM client_payment
$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) {
$data[] = [
"#PGPDN" . $row['order_id'],
$row['keterangan'],
$row['nama'],
number_format((float)$row['jumlah'], 0, ',', '.'),
number_format((float)$row['saldo'], 0, ',', '.'),
number_format((float)$row['biaya'], 0, ',', '.'),
$row['status'],
$row['jenis'],
$row['input_time'],
$row['update_time'],
];
}
} catch (Exception $e) {
$data = [];
}
// Response ke DataTables
echo json_encode([
"draw" => $draw,
"recordsTotal" => $recordsTotal,
"recordsFiltered" => $recordsFiltered,
"data" => $data
]);