get(); // return view('expense', compact('expense')); // } public function index(Request $request) { $bulan = now()->month; $tahun = now()->year; // Ambil semua data pengeluaran bulan dan tahun ini $expense = Expense::whereYear('tanggal', $tahun)->whereMonth('tanggal', $bulan)->orderBy('tanggal', 'desc')->get(); $totalPengeluaranTahunIni = Expense::whereYear('tanggal', $tahun)->sum('total_pengeluaran'); $totalPengeluaranBulanIni = Expense::whereYear('tanggal', $tahun)->whereMonth('tanggal', $bulan)->sum('total_pengeluaran'); $bulanLalu = $bulan - 1 <= 0 ? 12 : $bulan - 1; $tahunLalu = $bulan - 1 <= 0 ? $tahun - 1 : $tahun; $totalPengeluaranBulanLalu = Expense::whereYear('tanggal', $tahunLalu)->whereMonth('tanggal', $bulanLalu)->sum('total_pengeluaran'); $jumlahTransaksiBulanIni = Expense::whereYear('tanggal', $tahun)->whereMonth('tanggal', $bulan)->count(); $rataRataPengeluaranBulanIni = $jumlahTransaksiBulanIni > 0 ? $totalPengeluaranBulanIni / $jumlahTransaksiBulanIni : 0; $jumlahTransaksiBulanLalu = Expense::whereYear('tanggal', $tahunLalu)->whereMonth('tanggal', $bulanLalu)->count(); $rataRataPengeluaranBulanLalu = $jumlahTransaksiBulanLalu > 0 ? $totalPengeluaranBulanLalu / $jumlahTransaksiBulanLalu : 0; $isPengeluaranTahunIniNaik = $totalPengeluaranTahunIni > $totalPengeluaranBulanLalu; $isPengeluaranBulanIniNaik = $totalPengeluaranBulanIni > $totalPengeluaranBulanLalu; $isRataRataPengeluaranNaik = $rataRataPengeluaranBulanIni > $rataRataPengeluaranBulanLalu; // Selisih Pengeluaran Tahun Ini - Tahun Lalu $selisihPengeluaranTahunIni = $totalPengeluaranTahunIni - $totalPengeluaranBulanLalu; $isPengeluaranTahunIniNaik = $selisihPengeluaranTahunIni > 0; // Selisih Pengeluaran Bulan Ini - Bulan Lalu $selisihPengeluaranBulanIni = $totalPengeluaranBulanIni - $totalPengeluaranBulanLalu; $isPengeluaranBulanIniNaik = $selisihPengeluaranBulanIni > 0; // Selisih Rata-rata Pengeluaran Bulan Ini - Bulan Lalu $selisihRataRataPengeluaran = $rataRataPengeluaranBulanIni - $rataRataPengeluaranBulanLalu; $isRataRataPengeluaranNaik = $selisihRataRataPengeluaran > 0; return view( 'expense', compact( 'expense', // <--- Tambahkan ini! 'totalPengeluaranTahunIni', 'totalPengeluaranBulanIni', 'totalPengeluaranBulanLalu', 'rataRataPengeluaranBulanIni', 'rataRataPengeluaranBulanLalu', 'bulan', 'tahun', 'isPengeluaranTahunIniNaik', 'isPengeluaranBulanIniNaik', 'isRataRataPengeluaranNaik', 'selisihPengeluaranTahunIni', 'selisihPengeluaranBulanIni', 'selisihRataRataPengeluaran', ), ); } public function store(Request $request) { // Validasi input $request->validate([ 'nama_pengeluaran' => 'required|string|max:255', 'kategori_pengeluaran' => 'required|string', 'deskripsi_pengeluaran' => 'required|string', 'total_pengeluaran' => 'required|numeric', 'waktu' => 'required', 'tanggal' => 'required|date', ]); // Simpan data ke database Expense::create([ 'nama_pengeluaran' => $request->nama_pengeluaran, 'kategori_pengeluaran' => $request->kategori_pengeluaran, 'deskripsi_pengeluaran' => $request->deskripsi_pengeluaran, 'total_pengeluaran' => $request->total_pengeluaran, 'waktu' => Carbon::parse($request->waktu)->format('H:i:s'), 'tanggal' => Carbon::parse($request->tanggal)->format('Y-m-d'), ]); // Redirect kembali dengan pesan sukses return redirect()->back()->with('success', 'Data pengeluaran berhasil ditambahkan!'); } public function update(Request $request, $id) { // Validasi data yang masuk $request->validate([ 'nama_pengeluaran' => 'required|string|max:255', 'kategori_pengeluaran' => 'required|string', 'deskripsi_pengeluaran' => 'required|string', 'total_pengeluaran' => 'required|numeric', 'waktu' => 'required', 'tanggal' => 'required|date', ]); // Temukan data pengeluaran berdasarkan ID $expense = Expense::findOrFail($id); // Perbarui data pengeluaran $expense->update([ 'nama_pengeluaran' => $request->nama_pengeluaran, 'kategori_pengeluaran' => $request->kategori_pengeluaran, 'deskripsi_pengeluaran' => $request->deskripsi_pengeluaran, 'total_pengeluaran' => $request->total_pengeluaran, 'waktu' => $request->waktu, 'tanggal' => $request->tanggal, ]); // Redirect dengan pesan sukses return redirect()->back()->with('success', 'Data pengeluaran berhasil diperbarui.'); } public function destroy($id) { $expense = Expense::findOrFail($id); $expense->delete(); return response()->json(['success' => true]); } }