MIF_E31230887/app/Http/Controllers/LaporanController.php

93 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\BukuTamu;
use App\Models\Peminjaman;
use Illuminate\Http\Request;
class LaporanController extends Controller
{
public function kehadiran(Request $request)
{
$query = BukuTamu::with('user')->orderBy('tanggal_kunjungan', 'desc');
// Filter Bulan & Tahun
if ($request->filled('bulan')) {
$query->whereMonth('tanggal_kunjungan', $request->input('bulan'));
}
if ($request->filled('tahun')) {
$query->whereYear('tanggal_kunjungan', $request->input('tahun'));
}
$bukuTamu = $query->get();
// Slice data berdasarkan rentang baris (Limit Cetak)
if ($request->filled('limit_start') || $request->filled('limit_end')) {
$start = $request->filled('limit_start') ? (int)$request->input('limit_start') : 1;
$offset = max(0, $start - 1);
if ($request->filled('limit_end')) {
$end = (int)$request->input('limit_end');
$length = max(0, $end - $offset);
$bukuTamu = $bukuTamu->slice($offset, $length);
} else {
$bukuTamu = $bukuTamu->slice($offset);
}
}
return view('laporan.kehadiran', compact('bukuTamu'));
}
public function peminjaman(Request $request)
{
$query = Peminjaman::with(['anggota', 'user', 'buku.kategori'])->orderBy('tanggal_pinjam', 'desc');
// 1. Filter Bulan & Tahun
if ($request->filled('bulan')) {
$query->whereMonth('tanggal_pinjam', $request->input('bulan'));
}
if ($request->filled('tahun')) {
$query->whereYear('tanggal_pinjam', $request->input('tahun'));
}
// 2. Filter Kategori Buku (Berdasarkan DDC / Nomor Panggil)
if ($request->filled('id_kategori')) {
$classDigit = $request->input('id_kategori'); // '0', '1', ..., '9'
$query->whereHas('buku', function ($q) use ($classDigit) {
$q->where('nomor_panggil', 'like', "{$classDigit}%");
});
}
$peminjaman = $query->get();
// Slice data berdasarkan rentang baris (Limit Cetak)
if ($request->filled('limit_start') || $request->filled('limit_end')) {
$start = $request->filled('limit_start') ? (int)$request->input('limit_start') : 1;
$offset = max(0, $start - 1);
if ($request->filled('limit_end')) {
$end = (int)$request->input('limit_end');
$length = max(0, $end - $offset);
$peminjaman = $peminjaman->slice($offset, $length);
} else {
$peminjaman = $peminjaman->slice($offset);
}
}
// Kategori berdasarkan DDC & Lokasi Rak sesuai permintaan user
$categories = [
'0' => '000-099 : Karya Umum (Rak 01-05)',
'1' => '100-199 : Filsafat & Psikologi (Rak 06-14)',
'2' => '200-299 : Agama (Rak 15-32)',
'3' => '300-399 : Ilmu Sosial (Rak 33-44)',
'4' => '400-499 : Bahasa (Rak 45)',
'5' => '500-599 : Ilmu Murni / Sains (Rak 46-48)',
'6' => '600-699 : Ilmu Terapan (Rak 49-68)',
'7' => '700-799 : Kesenian & Olahraga (Rak 71-74)',
'8' => '800-899 : Sastra (Rak 77-79)',
'9' => '900-999 : Geografi & Sejarah (Rak 69-70, Rak 80-84)'
];
return view('laporan.peminjaman', compact('peminjaman', 'categories'));
}
}