52 lines
2.1 KiB
PHP
52 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Guru;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Auth; // Not explicitly used but fine to keep
|
|
use App\Models\GuruMapel;
|
|
use App\Models\TahunAjaran;
|
|
use App\Models\Guru;
|
|
use App\Models\Kelas; // Tambahkan ini jika Anda punya model Kelas
|
|
|
|
class PelajaranController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$userId = auth()->id();
|
|
$guru = Guru::where('user_id', $userId)->firstOrFail();
|
|
$tahunAjaranAktif = TahunAjaran::where('status', 'aktif')->firstOrFail();
|
|
|
|
$kelasId = request()->get('kelas_id'); // ambil filter dari form (opsional)
|
|
|
|
// Ambil semua kelas yang pernah diajar oleh guru untuk tahun ajaran aktif
|
|
// Ini sudah benar, asalkan model GuruMapel punya relasi 'kelas'
|
|
$semuaKelas = GuruMapel::where('guru_id', $guru->id)
|
|
->where('tahun_ajaran_id', $tahunAjaranAktif->id)
|
|
->with('kelas') // Memuat data kelas yang terkait langsung dengan guru_mapel
|
|
->get()
|
|
->pluck('kelas')
|
|
->unique('id')
|
|
->sortBy('nama_kelas');
|
|
|
|
$query = GuruMapel::where('guru_id', $guru->id)
|
|
->where('tahun_ajaran_id', $tahunAjaranAktif->id)
|
|
->with('mapel'); // HANYA memuat relasi 'mapel', HAPUS 'kelasMapel' yang bermasalah
|
|
|
|
// Jika Anda perlu memuat data kelas juga bersama dengan mapel,
|
|
// dan Anda tidak lagi menggunakan 'kelasMapel' sebagai pivot,
|
|
// pastikan relasi 'kelas' juga ada di model GuruMapel
|
|
// $query = GuruMapel::where('guru_id', $guru->id)
|
|
// ->where('tahun_ajaran_id', $tahunAjaranAktif->id)
|
|
// ->with(['mapel', 'kelas']); // Gunakan relasi 'kelas' langsung dari GuruMapel
|
|
|
|
if ($kelasId) {
|
|
$query->where('kelas_id', $kelasId);
|
|
}
|
|
|
|
// Pastikan Anda ingin unique per mapel_id saja, dan bukan per kombinasi mapel-kelas
|
|
$mapelYangDiampu = $query->get()->unique('mapel_id')->values();
|
|
|
|
return view('guru.pelajaran.index', compact('mapelYangDiampu', 'semuaKelas', 'kelasId'));
|
|
}
|
|
} |