distinct() ->orderBy('tahun', 'asc') ->pluck('tahun') ->toArray(); // Ambil tahun dari request atau default ke tahun sekarang $tahunTerpilih = $request->input('tahun', now()->year); // Ambil data pemasukan dan pengeluaran per bulan berdasarkan tahun terpilih $transactions = Finance::selectRaw('DATE_FORMAT(tanggal, "%Y-%m") as month, SUM(pemasukan) as pemasukan, SUM(pengeluaran) as pengeluaran') ->when($tahunTerpilih !== 'all', function ($query) use ($tahunTerpilih) { $query->whereYear('tanggal', $tahunTerpilih); }) ->groupBy('month') ->orderBy('month') ->get(); // Memproses data untuk grafik $labels = $transactions->pluck('month')->toArray(); $pemasukan = $transactions->pluck('pemasukan')->toArray(); $pengeluaran = $transactions->pluck('pengeluaran')->toArray(); $keuntungan = array_map(function ($p, $q) { return $p - $q; }, $pemasukan, $pengeluaran); // Ambil data status kamar (tersedia, terisi, maintenance) $data_kamar = [ 'Terisi' => Room::where('status', 'terisi')->count(), 'Kosong' => Room::where('status', 'tersedia')->count(), 'Rusak' => Room::where('status', 'maintenance')->count(), ]; // Kirim semua data ke view return view('pemilik.dashboard', compact( 'totalUsers', 'totalRooms', 'totalBookings', 'totalPemasukan', 'totalPengeluaran', 'totalKeuntungan', 'labels', 'pemasukan', 'pengeluaran', 'keuntungan', 'tahunList', 'tahunTerpilih', 'data_kamar' )); } }