first
This commit is contained in:
42
app/Http/Controllers/AttendanceController.php
Normal file
42
app/Http/Controllers/AttendanceController.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?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'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user