107 lines
2.5 KiB
PHP
107 lines
2.5 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
include '../config/connect.php';
|
|
|
|
try {
|
|
|
|
// ===============================
|
|
// VALIDASI INPUT
|
|
// ===============================
|
|
if (!isset($_GET['server']) || !isset($_GET['kategori'])) {
|
|
echo json_encode([
|
|
"error" => true,
|
|
"message" => "Parameter tidak lengkap"
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
$server = trim($_GET['server']);
|
|
$kategori = trim($_GET['kategori']);
|
|
$status = isset($_GET['status']) ? strtolower(trim($_GET['status'])) : 'semua';
|
|
|
|
if ($server === '' || $kategori === '') {
|
|
echo json_encode([
|
|
"error" => true,
|
|
"message" => "Parameter kosong"
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
// ===============================
|
|
// BASE QUERY (WHITELIST STATUS)
|
|
// ===============================
|
|
$sql = "
|
|
SELECT keterangan, SUM(jumlah) as jumlah
|
|
FROM v_analisa_onu_per_server
|
|
WHERE id_data_server = :server
|
|
AND kategori COLLATE utf8mb4_general_ci = :kategori
|
|
AND LOWER(status) IN ('aktif','tidak aktif')
|
|
";
|
|
|
|
$params = [
|
|
':server' => $server,
|
|
':kategori' => $kategori
|
|
];
|
|
|
|
// ===============================
|
|
// FILTER STATUS (JIKA DIPILIH)
|
|
// ===============================
|
|
if ($status === 'aktif' || $status === 'tidak aktif') {
|
|
$sql .= " AND LOWER(status) = :status";
|
|
$params[':status'] = $status;
|
|
}
|
|
|
|
$sql .= "
|
|
GROUP BY keterangan
|
|
ORDER BY jumlah DESC
|
|
";
|
|
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute($params);
|
|
|
|
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// ===============================
|
|
// FORMAT DATA
|
|
// ===============================
|
|
$labels = [];
|
|
$values = [];
|
|
|
|
$total = 0;
|
|
$empty = 0;
|
|
|
|
foreach ($data as $row) {
|
|
|
|
$keterangan = $row['keterangan'] ?? 'UNKNOWN';
|
|
$jumlah = (int) $row['jumlah'];
|
|
|
|
$labels[] = $keterangan;
|
|
$values[] = $jumlah;
|
|
|
|
$total += $jumlah;
|
|
|
|
if (strtoupper(trim($keterangan)) === 'BELUM DIISI') {
|
|
$empty += $jumlah;
|
|
}
|
|
}
|
|
|
|
echo json_encode([
|
|
"error" => false,
|
|
"labels" => $labels,
|
|
"values" => $values,
|
|
"summary" => [
|
|
"total" => $total,
|
|
"empty" => $empty,
|
|
"filled" => $total - $empty
|
|
]
|
|
]);
|
|
|
|
} catch (PDOException $e) {
|
|
|
|
echo json_encode([
|
|
"error" => true,
|
|
"message" => "Database error",
|
|
"detail" => $e->getMessage()
|
|
]);
|
|
}
|