Files
manjapro_v6/load/data_kpi_teknisi.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()]);
}
?>