diff --git a/app/Http/Controllers/Guru/KelasController.php b/app/Http/Controllers/Guru/KelasController.php index a68308f..02e7186 100644 --- a/app/Http/Controllers/Guru/KelasController.php +++ b/app/Http/Controllers/Guru/KelasController.php @@ -4,26 +4,38 @@ use App\Http\Controllers\Controller; use App\Models\Kelas; +use App\Models\Mengajar; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class KelasController extends Controller { public function index(Request $request) { - $query = Kelas::query(); + $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 = Kelas::whereIn('id_kelas', $kelasIds); // SEARCH - if ($request->has('search')) { + if ($request->filled('search')) { $search = $request->search; - $query->where('nama_kelas', 'like', "%$search%") - ->orWhere('id_kelas', 'like', "%$search%"); + $query->where(function ($q) use ($search) { + $q->where('nama_kelas', 'like', "%$search%") + ->orWhere('tingkat', 'like', "%$search%"); + }); } - // SHOW PER PAGE $perPage = $request->get('perPage', 10); - - $kelass = $query->paginate($perPage)->appends($request->all()); + $kelass = $query->orderBy('tingkat') + ->orderBy('nama_kelas') + ->paginate($perPage) + ->appends($request->all()); return view('guru.kelas.index', compact('kelass')); } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/Guru/SiswaController.php b/app/Http/Controllers/Guru/SiswaController.php index c99439a..4a5a6a0 100644 --- a/app/Http/Controllers/Guru/SiswaController.php +++ b/app/Http/Controllers/Guru/SiswaController.php @@ -5,34 +5,50 @@ 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) { - $query = Siswa::with('kelas'); + $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->has('search')) { + if ($request->filled('search')) { $search = $request->search; - $query->where('nama', 'like', "%$search%") + $query->where(function ($q) use ($search) { + $q->where('nama', 'like', "%$search%") ->orWhere('nisn', 'like', "%$search%"); + }); } - // FILTER BY KELAS - if ($request->has('filter_kelas') && $request->filter_kelas != '') { - $query->where('id_kelas', $request->filter_kelas); + // 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); + } } - // SHOW PER PAGE $perPage = $request->get('perPage', 10); + $siswas = $query->paginate($perPage)->appends($request->all()); - $siswas = $query->paginate($perPage)->appends($request->all()); - - // Ambil semua kelas untuk dropdown filter - $kelass = Kelas::orderBy('tingkat')->orderBy('nama_kelas')->get(); + // 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')); } -} +} \ No newline at end of file