<?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()]);
}
?>
