siswa; if (!$siswa || !$siswa->kelas_id) { abort(403, 'Siswa belum memiliki kelas.'); } $mapelId = $request->mapel_id; // Cek apakah mapel tersebut tersedia untuk kelas siswa $validMapel = GuruMapel::where('kelas_id', $siswa->kelas_id) ->where('mapel_id', $mapelId) ->exists(); if (!$validMapel) { abort(403, 'Akses ditolak: Mata pelajaran ini tidak tersedia untuk kelas Anda.'); } // Ambil hanya materi yang tersedia untuk kelas ini dari tabel kelas_materi $materiUtama = Materi::where('mapel_id', $mapelId) ->whereNull('parent_id') ->whereHas('kelas', function ($query) use ($siswa) { $query->where('kelas_id', $siswa->kelas_id); }) ->orderBy('created_at') ->get(); $materiAnak = Materi::where('mapel_id', $mapelId) ->whereNotNull('parent_id') ->whereHas('kelas', function ($query) use ($siswa) { $query->where('kelas_id', $siswa->kelas_id); }) ->orderBy('created_at') ->get(); return view('siswa.materi.index', compact('materiUtama', 'materiAnak')); } public function show($id) { $materi = Materi::findOrFail($id); $user = Auth::user(); $siswa = $user->siswa; if (!$siswa || !$siswa->kelas_id) { abort(403, 'Siswa belum memiliki kelas.'); } // Validasi akses materi berdasarkan kelas_materi $valid = DB::table('kelas_materi') ->where('materi_id', $materi->id) ->where('kelas_id', $siswa->kelas_id) ->exists(); if (!$valid) { abort(403, 'Akses ditolak: Materi ini tidak tersedia untuk kelas Anda.'); } $tugas = Tugas::where('materi_id', $materi->id)->get(); $jawabanTugas = []; foreach ($tugas as $t) { $jawabanTugas[$t->id] = TugasSiswa::where('tugas_id', $t->id) ->where('siswa_id', $siswa->id) ->first(); } return view('siswa.materi.show', compact('materi', 'tugas', 'jawabanTugas')); } }