<?php

namespace App\Charts;

use ArielMejiaDev\LarapexCharts\LarapexChart;

class MonthlyDBDChart
{
    protected $chart;
    protected $dataByYear;
    protected $year;

    public function __construct($dataByYear, $year)
    {
        $this->chart = new LarapexChart;
        $this->dataByYear = $dataByYear;
        $this->year = $year;
    }

    public function build(): \ArielMejiaDev\LarapexCharts\LineChart
    {
        $monthlyData = []; // Inisialisasi array kosong untuk data bulanan

        // Jika ada data untuk tahun tertentu
        if ($this->dataByYear->isNotEmpty()) {
            // Loop melalui setiap data untuk mengumpulkan jumlah kasus per bulan
            foreach ($this->dataByYear as $data) {
                // Jika belum ada data untuk bulan tersebut, tambahkan ke array
                if (!isset($monthlyData[$data->bulan])) {
                    $monthlyData[$data->bulan] = $data->jumlah_kasus;
                } else {
                    // Jika sudah ada data untuk bulan tersebut, tambahkan jumlah kasus ke data yang sudah ada
                    $monthlyData[$data->bulan] += $data->jumlah_kasus;
                }
            }
        }

        // Pisahkan label bulan dan data jumlah kasus dari array asosiatif
        $labels = array_keys($monthlyData);
        $jumlahKasus = array_values($monthlyData);

        // Bangun chart dengan data yang dikumpulkan
        return $this->chart->lineChart()
            ->addData('Jumlah Kasus', $jumlahKasus)
            ->setXAxis($labels)
            ->setHeight(220);
    }
}
