<?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');
}

}