has('search')) { $search = $request->search; $query->where('keterangan', 'LIKE', "%$search%") ->orWhere('jumlah_pengeluaran', 'LIKE', "%$search%") ->orWhere('tanggal_pengeluaran', 'LIKE', "%$search%"); } // Mengambil semua data pengeluaran $pengeluaran = $query->orderBy('tanggal_pengeluaran', 'desc')->get(); return view('admin.expense', compact('pengeluaran')); } /** * Menampilkan form untuk menambahkan pengeluaran baru. */ public function create() { return view('admin.createexpense'); } /** * Menyimpan data pengeluaran baru ke database. */ public function store(Request $request) { $request->validate([ 'keterangan' => 'required|string|max:255', 'jumlah_pengeluaran' => 'required|numeric|min:0', 'tanggal_pengeluaran'=> 'required|date', ]); Expense::create($request->only(['keterangan', 'jumlah_pengeluaran', 'tanggal_pengeluaran'])); // Update data keuangan $this->updateFinance(); return redirect()->route('admin.expense')->with('success', 'Pengeluaran berhasil ditambahkan.'); } /** * Menampilkan form untuk mengedit pengeluaran. */ public function edit($id_pengeluaran) { $pengeluaran = Expense::findOrFail($id_pengeluaran); return view('admin.editexpense', compact('pengeluaran')); } /** * Memperbarui data pengeluaran di database. */ public function update(Request $request, $id_pengeluaran) { $request->validate([ 'keterangan' => 'required|string|max:255', 'jumlah_pengeluaran' => 'required|numeric|min:0', 'tanggal_pengeluaran'=> 'required|date', ]); $pengeluaran = Expense::findOrFail($id_pengeluaran); $pengeluaran->update($request->only(['keterangan', 'jumlah_pengeluaran', 'tanggal_pengeluaran'])); // Update data keuangan $this->updateFinance(); return redirect()->route('admin.expense')->with('success', 'Pengeluaran berhasil diperbarui.'); } /** * Menghapus data pengeluaran dari database. */ public function destroy($id_pengeluaran) { $pengeluaran = Expense::findOrFail($id_pengeluaran); $pengeluaran->delete(); // Update data keuangan $this->updateFinance(); return redirect()->route('admin.expense')->with('success', 'Pengeluaran berhasil dihapus.'); } /** * Fungsi untuk memperbarui data keuangan di tabel Finance. */ private function updateFinance() { $totalPemasukan = Transaksi::sum('jumlah_pembayaran'); $totalPengeluaran = Expense::sum('jumlah_pengeluaran'); $totalKeuntungan = $totalPemasukan - $totalPengeluaran; Finance::create([ 'tanggal' => now()->format('Y-m-d'), 'pemasukan' => $totalPemasukan, 'pengeluaran' => $totalPengeluaran, 'keuntungan' => $totalKeuntungan, 'keterangan' => 'Update otomatis dari data pengeluaran' ]); } }