has('search')) { $search = $request->search; $query->where('nama_mapel', 'like', "%$search%") ->orWhere('id_mapel', 'like', "%$search%"); } // FILTER BY KELAS (lewat table mengajars) if ($request->has('filter_kelas') && $request->filter_kelas != '') { $query->whereHas('mengajars', function($q) use ($request) { $q->where('id_kelas', $request->filter_kelas); }); } // SHOW PER PAGE $perPage = $request->get('perPage', 10); $mapels = $query->paginate($perPage)->appends($request->all()); // Ambil semua kelas untuk dropdown filter $kelass = Kelas::orderBy('tingkat')->orderBy('nama_kelas')->get(); return view('admin.mapel.index', compact('mapels', 'kelass')); } public function store(Request $request) { $validated = $request->validate([ 'nama_mapel' => 'required|string|max:100', ], [ 'nama_mapel.required' => 'Nama mata pelajaran wajib diisi', ]); // Auto-generate id_mapel $lastMapel = Mapel::orderBy('id_mapel', 'desc')->first(); if ($lastMapel) { $lastNumber = (int) substr($lastMapel->id_mapel, 2); // Ambil angka setelah "MP" $newNumber = $lastNumber + 1; } else { $newNumber = 1; } $newIdMapel = 'MP' . str_pad($newNumber, 3, '0', STR_PAD_LEFT); // MP001, MP002, dst Mapel::create([ 'id_mapel' => $newIdMapel, 'nama_mapel' => $validated['nama_mapel'], ]); return redirect()->route('admin.mapel.index') ->with('success', 'Data mata pelajaran berhasil ditambahkan!'); } public function update(Request $request, $id_mapel) { $mapel = Mapel::findOrFail($id_mapel); $validated = $request->validate([ 'nama_mapel' => 'required|string|max:100', ], [ 'nama_mapel.required' => 'Nama mata pelajaran wajib diisi', ]); $mapel->update($validated); return redirect()->route('admin.mapel.index') ->with('success', 'Data mata pelajaran berhasil diupdate!'); } public function destroy($id_mapel) { $mapel = Mapel::findOrFail($id_mapel); $mapel->delete(); return redirect()->route('admin.mapel.index') ->with('success', 'Data mata pelajaran berhasil dihapus!'); } }