89 lines
2.6 KiB
PHP
89 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Siswa;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Models\GuruMapel;
|
|
use App\Models\Materi;
|
|
use App\Models\TugasSiswa;
|
|
use App\Models\Tugas;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class SubjekController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$user = Auth::user();
|
|
$siswa = $user->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'));
|
|
}
|
|
}
|
|
|