Files
cabutan-bertuah-koipb/app/Http/Controllers/AttendanceController.php
2026-06-24 18:30:00 +08:00

43 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Member;
use Illuminate\Http\Request;
use Illuminate\View\View;
class AttendanceController extends Controller
{
/** Senarai kehadiran (hadir / belum hadir) dengan carian & penapis */
public function index(Request $request): View
{
$status = $request->query('status', 'hadir'); // hadir | belum | semua
$jabatan = $request->query('jabatan');
$q = $request->query('q');
$members = Member::query()
->with('attendance.recordedBy')
->when($status === 'hadir', fn ($query) => $query->hadir())
->when($status === 'belum', fn ($query) => $query->belumHadir())
->when($jabatan, fn ($query) => $query->where('jabatan', $jabatan))
->when($q, fn ($query) => $query->search($q))
->orderBy('nama')
->paginate(30)
->withQueryString();
$jabatanList = Member::query()
->whereNotNull('jabatan')
->distinct()
->orderBy('jabatan')
->pluck('jabatan');
$counts = [
'hadir' => Member::hadir()->count(),
'belum' => Member::belumHadir()->count(),
'semua' => Member::count(),
];
return view('attendance.index', compact('members', 'jabatanList', 'counts', 'status', 'jabatan', 'q'));
}
}