NIM_E31220400/app/Http/Controllers/LaporanController.php

98 lines
3.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Models\Pemasukan;
use App\Models\Pengeluaran;
use PDF; // <-- Pastikan ini yang Anda gunakan
class LaporanController extends Controller
{
public function review(Request $request)
{
// Mendapatkan data pemasukan dan pengeluaran berdasarkan tahun (jika ada filter tahun)
$tahun = $request->input('tahun');
$list_tahun = DB::table('pemasukan') // atau 'pengeluaran'
->select(DB::raw('YEAR(tanggal) as tahun'))
->distinct()
->orderBy('tahun', 'desc')
->pluck('tahun');
$pemasukan = Pemasukan::when($tahun, function ($query) use ($tahun) {
return $query->whereYear('tanggal', $tahun);
})->get();
$pengeluaran = Pengeluaran::when($tahun, function ($query) use ($tahun) {
return $query->whereYear('tanggal', $tahun);
})->get();
// Gabungkan data pemasukan dan pengeluaran
$gabungan = collect($pemasukan)->map(function($item) {
$item->jenis = 'masuk';
return $item;
})->merge(
collect($pengeluaran)->map(function($item) {
$item->jenis = 'keluar';
return $item;
})
)->sortByDesc('tanggal');
return view('laporan.review', compact('pemasukan', 'pengeluaran', 'list_tahun', 'gabungan'));
}
public function semua(Request $request)
{
$tahun = $request->input('tahun');
$pemasukan = Pemasukan::query();
$pengeluaran = Pengeluaran::query();
if ($tahun) {
$pemasukan->whereYear('tanggal', $tahun);
$pengeluaran->whereYear('tanggal', $tahun);
}
$list_tahun = Pemasukan::selectRaw('YEAR(tanggal) as tahun')->distinct()
->union(
Pengeluaran::selectRaw('YEAR(tanggal) as tahun')->distinct()
)
->orderBy('tahun', 'desc')->pluck('tahun')->unique();
return view('laporan.semua', [
'pemasukan' => $pemasukan->get(),
'pengeluaran' => $pengeluaran->get(),
'list_tahun' => $list_tahun,
'filter' => $request->all()
]);
}
public function exportPdf(Request $request)
{
$tahun = $request->input('tahun');
$pemasukan = Pemasukan::when($tahun, function ($query) use ($tahun) {
return $query->whereYear('tanggal', $tahun);
})->get();
$pengeluaran = Pengeluaran::when($tahun, function ($query) use ($tahun) {
return $query->whereYear('tanggal', $tahun);
})->get();
// Gabungkan semua transaksi
$gabungan = collect($pemasukan)->map(function($item) {
$item->jenis = 'Masuk';
return $item;
})->merge(
collect($pengeluaran)->map(function($item) {
$item->jenis = 'Keluar';
return $item;
})
)->sortBy('tanggal'); // urutkan tanggal naik
$pdf = PDF::loadView('laporan.pdf', compact('gabungan'))->setPaper('a4', 'landscape');
return $pdf->download('laporan_transaksi.pdf');
}
}