query("SELECT DISTINCT kelurahan, kecamatan FROM wilayah ORDER BY kelurahan")->fetchAll(); jsonResponse(['success' => true, 'data' => $rows]); } if ($type === 'kecamatan') { $rows = $db->query("SELECT DISTINCT kecamatan FROM wilayah ORDER BY kecamatan")->fetchAll(); jsonResponse(['success' => true, 'data' => array_column($rows, 'kecamatan')]); } } $sql = "SELECT * FROM wilayah WHERE 1=1"; $params = []; if ($kelurahan) { $sql .= " AND kelurahan = ?"; $params[] = $kelurahan; } if ($kecamatan) { $sql .= " AND kecamatan = ?"; $params[] = $kecamatan; } $sql .= " ORDER BY kelurahan, rt, rw"; $stmt = $db->prepare($sql); $stmt->execute($params); jsonResponse(['success' => true, 'data' => $stmt->fetchAll()]); break; // ── POST tambah wilayah ─────────────────────────────── case 'POST': $in = getInput(); if (empty($in['kelurahan']) || empty($in['kecamatan'])) { jsonResponse(['success' => false, 'error' => 'Kelurahan dan kecamatan wajib diisi'], 400); } $db->prepare("INSERT INTO wilayah (kelurahan, kecamatan, kota, rt, rw) VALUES (?,?,?,?,?)") ->execute([ trim($in['kelurahan']), trim($in['kecamatan']), trim($in['kota'] ?? 'Pontianak'), $in['rt'] ?? null, $in['rw'] ?? null, ]); jsonResponse(['success' => true, 'id' => $db->lastInsertId(), 'message' => 'Wilayah ditambahkan']); break; default: jsonResponse(['success' => false, 'error' => 'Method tidak diizinkan'], 405); }