import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/** Data contoh Budi kuartal pertama 2026 — dipakai Bagian 3 dan 4. */
public final class DemoData {

    private DemoData() {
        // Kelas utilitas: seluruh anggota static, tidak perlu instance.
    }

    /** Mendaftarkan enam kategori standar ke satu BukuKas. */
    public static void daftarkanKategori(BukuKas kas) {
        kas.daftarkanKategori(new Kategori("Gaji", JenisTransaksi.PEMASUKAN, null));
        kas.daftarkanKategori(new Kategori("Freelance", JenisTransaksi.PEMASUKAN, null));
        kas.daftarkanKategori(new Kategori("Sewa", JenisTransaksi.PENGELUARAN,
                new BigDecimal("2500000.00")));
        kas.daftarkanKategori(new Kategori("Makanan", JenisTransaksi.PENGELUARAN,
                new BigDecimal("1500000.00")));
        kas.daftarkanKategori(new Kategori("Transportasi", JenisTransaksi.PENGELUARAN,
                new BigDecimal("600000.00")));
        kas.daftarkanKategori(new Kategori("Hiburan", JenisTransaksi.PENGELUARAN,
                new BigDecimal("500000.00")));
    }

    /** Sembilan belas transaksi Januari sampai Maret 2026, urut menurut tanggal. */
    public static List<Transaksi> contohTransaksi() {
        return List.of(
                new Transaksi(LocalDate.of(2026, 1, 5), "Gaji bulanan Januari",
                        JenisTransaksi.PEMASUKAN, "Gaji", new BigDecimal("8500000.00")),
                new Transaksi(LocalDate.of(2026, 1, 7), "Sewa tempat tinggal Januari",
                        JenisTransaksi.PENGELUARAN, "Sewa", new BigDecimal("2500000.00")),
                new Transaksi(LocalDate.of(2026, 1, 10), "Belanja bahan makanan",
                        JenisTransaksi.PENGELUARAN, "Makanan", new BigDecimal("450000.00")),
                new Transaksi(LocalDate.of(2026, 1, 18), "Makan di luar bersama Siti",
                        JenisTransaksi.PENGELUARAN, "Makanan", new BigDecimal("380000.00")),
                new Transaksi(LocalDate.of(2026, 1, 22), "Isi bensin",
                        JenisTransaksi.PENGELUARAN, "Transportasi", new BigDecimal("350000.00")),
                new Transaksi(LocalDate.of(2026, 1, 28), "Langganan streaming",
                        JenisTransaksi.PENGELUARAN, "Hiburan", new BigDecimal("250000.00")),
                new Transaksi(LocalDate.of(2026, 2, 5), "Gaji bulanan Februari",
                        JenisTransaksi.PEMASUKAN, "Gaji", new BigDecimal("8500000.00")),
                new Transaksi(LocalDate.of(2026, 2, 7), "Sewa tempat tinggal Februari",
                        JenisTransaksi.PENGELUARAN, "Sewa", new BigDecimal("2500000.00")),
                new Transaksi(LocalDate.of(2026, 2, 12), "Belanja bahan makanan",
                        JenisTransaksi.PENGELUARAN, "Makanan", new BigDecimal("770000.00")),
                new Transaksi(LocalDate.of(2026, 2, 14), "Proyek desain lepas",
                        JenisTransaksi.PEMASUKAN, "Freelance", new BigDecimal("1200000.00")),
                new Transaksi(LocalDate.of(2026, 2, 18), "Makan di luar bersama Siti",
                        JenisTransaksi.PENGELUARAN, "Makanan", new BigDecimal("520000.00")),
                new Transaksi(LocalDate.of(2026, 2, 19), "Isi bensin",
                        JenisTransaksi.PENGELUARAN, "Transportasi", new BigDecimal("280000.00")),
                new Transaksi(LocalDate.of(2026, 2, 25), "Tiket konser musik",
                        JenisTransaksi.PENGELUARAN, "Hiburan", new BigDecimal("620000.00")),
                new Transaksi(LocalDate.of(2026, 3, 5), "Gaji bulanan Maret",
                        JenisTransaksi.PEMASUKAN, "Gaji", new BigDecimal("8500000.00")),
                new Transaksi(LocalDate.of(2026, 3, 6), "Sewa tempat tinggal Maret",
                        JenisTransaksi.PENGELUARAN, "Sewa", new BigDecimal("2500000.00")),
                new Transaksi(LocalDate.of(2026, 3, 11), "Belanja bahan makanan",
                        JenisTransaksi.PENGELUARAN, "Makanan", new BigDecimal("610000.00")),
                new Transaksi(LocalDate.of(2026, 3, 14), "Makan siang di luar",
                        JenisTransaksi.PENGELUARAN, "Makanan", new BigDecimal("240000.00")),
                new Transaksi(LocalDate.of(2026, 3, 20), "Isi bensin",
                        JenisTransaksi.PENGELUARAN, "Transportasi", new BigDecimal("310000.00")),
                new Transaksi(LocalDate.of(2026, 3, 27), "Tiket bioskop",
                        JenisTransaksi.PENGELUARAN, "Hiburan", new BigDecimal("180000.00")));
    }
}
