NIM_E31220400/app/Http/Controllers/LandingPageController.php

97 lines
3.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\PengurusMasjid;
use Illuminate\Http\Request;
use App\Models\Pemasukan;
use App\Models\Pengeluaran;
class LandingPageController extends Controller
{
public function index()
{
// Ambil data
$pengurus = PengurusMasjid::first();
$rekening = '1234567890 - BSI a.n. Masjid Al-Hikmah';
// Ambil pemasukan yang sudah diterima dan semua pengeluaran
$pemasukans = Pemasukan::all();
$pengeluarans = Pengeluaran::all();
// Gabungkan dan urutkan berdasarkan tanggal terbaru
$data_kas = $pemasukans->concat($pengeluarans)->sortByDesc('tanggal')->values();
// Hitung total pemasukan
$total_pemasukan = $pemasukans->sum(function ($item) {
return $item->kategori === 'barang'
? $item->quantity * $item->harga
: $item->jumlah;
});
// Hitung total pengeluaran
$total_pengeluaran = $pengeluarans->sum(function ($item) {
return $item->kategori === 'barang'
? $item->quantity * $item->harga
: $item->jumlah;
});
// Hitung saldo akhir
$saldo_akhir = $total_pemasukan - $total_pengeluaran;
// Kirim data ke view
return view('landing', compact(
'pengurus',
'rekening',
'data_kas',
'total_pemasukan',
'total_pengeluaran',
'saldo_akhir'
));
}
public function storeSumbangan(Request $request)
{
$request->validate([
'tanggal' => 'required|date',
'nama' => 'required|string|max:255',
'email' => 'required|email|max:255',
'kategori' => 'required|in:uang,barang',
'nominal' => 'nullable|required_if:kategori,uang|numeric',
'quantity' => 'nullable|required_if:kategori,barang|numeric',
'harga' => 'nullable|required_if:kategori,barang|numeric',
'subtotal' => 'nullable|required_if:kategori,barang|numeric',
'keterangan' => 'nullable|string',
'bukti' => 'required|image|mimes:jpeg,png,jpg|max:2048',
]);
$data = [
'tanggal' => $request->tanggal,
'nama' => $request->nama,
'email' => $request->email,
'kategori' => $request->kategori,
'keterangan' => $request->keterangan,
'jumlah' => $request->kategori === 'uang' ? $request->nominal : $request->subtotal,
'quantity' => $request->kategori === 'barang' ? $request->quantity : null,
'harga' => $request->kategori === 'barang' ? $request->harga : null,
'status' => 'menunggu',
];
if ($request->hasFile('bukti')) {
$data['bukti'] = $request->file('bukti')->store('bukti_sumbangan', 'public');
}
Pemasukan::create($data);
return redirect()->to(url()->previous() . '#formSumbangan')
->with('success', 'Terima kasih! Sumbangan Anda telah berhasil dikirim. Kami akan menghubungi Anda setelah proses verifikasi selesai.');
}
}