MIF_E31230356/app/Http/Controllers/Guru/SiswaController.php

54 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers\Guru;
use App\Http\Controllers\Controller;
use App\Models\Siswa;
use App\Models\Kelas;
use App\Models\Mengajar;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SiswaController extends Controller
{
public function index(Request $request)
{
$guru = Auth::guard('guru')->user();
// Ambil hanya id_kelas yang diajar guru ini
$kelasIds = Mengajar::where('id_guru', $guru->id_guru)
->pluck('id_kelas')
->unique();
$query = Siswa::with('kelas')
->whereIn('id_kelas', $kelasIds);
// SEARCH
if ($request->filled('search')) {
$search = $request->search;
$query->where(function ($q) use ($search) {
$q->where('nama', 'like', "%$search%")
->orWhere('nisn', 'like', "%$search%");
});
}
// FILTER BY KELAS (hanya kelas yang diajar guru ini)
if ($request->filled('filter_kelas')) {
// Pastikan filter kelas yang dipilih memang kelas yang diajar guru ini
if ($kelasIds->contains($request->filter_kelas)) {
$query->where('id_kelas', $request->filter_kelas);
}
}
$perPage = $request->get('perPage', 10);
$siswas = $query->paginate($perPage)->appends($request->all());
// Dropdown filter hanya tampilkan kelas yang diajar guru ini
$kelass = Kelas::whereIn('id_kelas', $kelasIds)
->orderBy('tingkat')
->orderBy('nama_kelas')
->get();
return view('guru.siswa.index', compact('siswas', 'kelass'));
}
}