<?php

namespace App\Http\Controllers;

use App\Models\Buku;
use App\Models\Peminjaman;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Barryvdh\DomPDF\Facade\Pdf;

class LaporanBukuController extends Controller
{
    /**
     * DASHBOARD LAPORAN BUKU
     */
    public function index()
    {
        // Buku paling sering dipinjam (berdasarkan transaksi)
        $palingSeringDipinjam = Peminjaman::select(
                'buku_id',
                DB::raw('COUNT(*) as total_transaksi'),
                DB::raw('SUM(jumlah) as total_dipinjam')
            )
            ->groupBy('buku_id')
            ->with('buku')
            ->orderByDesc('total_transaksi')
            ->take(10)
            ->get();

        // Buku paling banyak dipinjam (berdasarkan jumlah buku)
        $palingBanyakDipinjam = Peminjaman::select(
                'buku_id',
                DB::raw('SUM(jumlah) as total_dipinjam')
            )
            ->groupBy('buku_id')
            ->with('buku')
            ->orderByDesc('total_dipinjam')
            ->take(10)
            ->get();

        // Statistik umum
        $statistik = [
            'total_buku' => Buku::count(),
            'total_peminjaman' => Peminjaman::count(),
            'total_buku_dipinjam' => Peminjaman::sum('jumlah'),
            'sedang_dipinjam' => Peminjaman::where('status', 'dipinjam')->count(),
            'sudah_dikembalikan' => Peminjaman::where('status', 'dikembalikan')->count(),
        ];

        return view('laporan.buku.index', compact(
            'palingSeringDipinjam',
            'palingBanyakDipinjam',
            'statistik'
        ));
    }

    /**
     * LAPORAN DETAIL SEMUA BUKU + TOTAL PEMINJAMAN
     */
    public function detail()
    {
        $laporan = Buku::leftJoin('peminjaman', 'buku.id', '=', 'peminjaman.buku_id')
            ->select(
                'buku.*',
                DB::raw('COUNT(peminjaman.id) as total_transaksi'),
                DB::raw('COALESCE(SUM(peminjaman.jumlah),0) as total_dipinjam')
            )
            ->groupBy('buku.id')
            ->orderByDesc('total_dipinjam')
            ->get();

        return view('laporan.buku.detail', compact('laporan'));
    }

    /**
     * CETAK LAPORAN BUKU PDF
     */
    public function cetakPdf()
    {
        $laporan = Buku::leftJoin('peminjaman', 'buku.id', '=', 'peminjaman.buku_id')
            ->select(
                'buku.*',
                DB::raw('COUNT(peminjaman.id) as total_transaksi'),
                DB::raw('COALESCE(SUM(peminjaman.jumlah),0) as total_dipinjam')
            )
            ->groupBy('buku.id')
            ->orderByDesc('total_dipinjam')
            ->get();

        $pdf = Pdf::loadView('laporan.buku.pdf', compact('laporan'))
            ->setPaper('A4', 'landscape');

        return $pdf->download('Laporan-Buku-Perpustakaan.pdf');
    }
}
