89 lines
3.2 KiB
PHP
89 lines
3.2 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
|
|
include "../config/connect.php";
|
|
|
|
try {
|
|
// Ambil tahun dari query string, jika tidak ada gunakan tahun saat ini
|
|
$tahun = isset($_GET['year']) && is_numeric($_GET['year']) ? (int)$_GET['year'] : (int)date('Y');
|
|
$sqldata = isset($_GET['i']) ? trim($_GET['i']) : '';
|
|
$sqlid = isset($_GET['d']) ? trim($_GET['d']) : '';
|
|
|
|
// Menentukan filter tambahan berdasarkan input
|
|
$sqlkar = ($sqlid === 'all' || $sqlid === '') ? '' : "AND id_penyelesai_tiket = :id_penyelesai";
|
|
|
|
// Menyiapkan query SQL
|
|
$query = "
|
|
SELECT
|
|
SUM(jumlah_tiket) AS jumlah_tiket,
|
|
CASE WHEN COUNT(waktu) > 0 THEN SUM(rata_rata_sebelum) / COUNT(waktu) / 60 ELSE 0 END AS rata_rata_sebelum,
|
|
CASE WHEN COUNT(waktu) > 0 THEN SUM(rata_rata_sesudah) / COUNT(waktu) / 60 ELSE 0 END AS rata_rata_sesudah,
|
|
SUM(tiket_jalur) AS tiket_jalur,
|
|
SUM(tiket_lain) AS tiket_lain,
|
|
SUM(bobot) AS bobot,
|
|
waktu
|
|
FROM
|
|
v_akumulasi_kinerja_by_tiket
|
|
WHERE
|
|
SUBSTRING(waktu, 1, 4) = :tahun
|
|
$sqldata
|
|
$sqlkar
|
|
GROUP BY
|
|
waktu
|
|
";
|
|
|
|
// Persiapan dan eksekusi query
|
|
$stmt = $pdo->prepare($query);
|
|
$stmt->bindParam(':tahun', $tahun, PDO::PARAM_INT);
|
|
if (!empty($sqlkar)) {
|
|
$stmt->bindParam(':id_penyelesai', $sqlid, PDO::PARAM_STR);
|
|
}
|
|
$stmt->execute();
|
|
$jumbulan = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Inisialisasi array untuk menyimpan data bulanan
|
|
$jumTiket = array_fill(0, 12, 0);
|
|
$rata2sebelum = array_fill(0, 12, 0);
|
|
$rata2sesudah = array_fill(0, 12, 0);
|
|
$tiketJalur = array_fill(0, 12, 0);
|
|
$tiketLain = array_fill(0, 12, 0);
|
|
$bobot = array_fill(0, 12, 0);
|
|
$bulan = [];
|
|
|
|
// Mengisi data ke dalam array berdasarkan bulan
|
|
foreach ($jumbulan as $row) {
|
|
$monthIndex = (int)date('n', strtotime($row['waktu'])) - 1; // Bulan ke indeks array (0-11)
|
|
$jumTiket[$monthIndex] = (int)$row['jumlah_tiket'];
|
|
$rata2sebelum[$monthIndex] = '-'.(float)$row['rata_rata_sebelum'];
|
|
$rata2sesudah[$monthIndex] = '-'.(float)$row['rata_rata_sesudah'];
|
|
$tiketJalur[$monthIndex] = (int)$row['tiket_jalur'];
|
|
$tiketLain[$monthIndex] = (int)$row['tiket_lain'];
|
|
$bobot[$monthIndex] = (int)$row['bobot'];
|
|
}
|
|
|
|
// Buat array bulan untuk label
|
|
for ($i = 0; $i < 12; $i++) {
|
|
$bulan[] = sprintf('%s-%02d', $tahun, $i + 1); // format Y-m
|
|
}
|
|
|
|
// Mengemas data menjadi array untuk JSON
|
|
$data = [
|
|
'bulan' => $bulan, // data bulan yang ditampilkan di label
|
|
'jumlah' => $jumTiket,
|
|
'createToProses' => $rata2sebelum,
|
|
'prosesToClose' => $rata2sesudah,
|
|
'tiketJalur' => $tiketJalur,
|
|
'tiketLain' => $tiketLain,
|
|
'bobot' => $bobot
|
|
];
|
|
|
|
// Mengirimkan data sebagai JSON
|
|
echo json_encode($data);
|
|
|
|
} catch (Exception $e) {
|
|
// Jika terjadi kesalahan, kirim pesan error sebagai JSON
|
|
http_response_code(500); // Kirim kode status HTTP 500
|
|
echo json_encode(['error' => 'Terjadi kesalahan pada server.', 'details' => $e->getMessage()]);
|
|
}
|
|
?>
|