paginate(10); return view('admin.GuruMapel.index', compact('data')); } public function create() { $guru = Guru::all(); $mapel = Mapel::all(); $kelas = Kelas::all(); return view('admin.GuruMapel.create', compact('guru', 'mapel', 'kelas')); } public function store(Request $request) { $request->validate([ 'guru_id' => 'required', 'mapel_id' => 'required', 'kelas_id' => 'required', 'hari' => 'required|string|max:20', 'jam_mulai' => 'required|date_format:H:i', 'jam_selesai' => 'required|date_format:H:i|after:jam_mulai', ]); $jamMulai = Carbon::createFromFormat('H:i', $request->jam_mulai); $jamSelesai = Carbon::createFromFormat('H:i', $request->jam_selesai); $jadwalBentrok = GuruMapel::where('hari', $request->hari) ->where(function ($query) use ($request) { $query->where('guru_id', $request->guru_id) ->orWhere('kelas_id', $request->kelas_id); }) ->get(); foreach ($jadwalBentrok as $jadwal) { $mulai = Carbon::parse($jadwal->jam_mulai); $selesai = Carbon::parse($jadwal->jam_selesai); if ($jamMulai->lt($selesai) && $jamSelesai->gt($mulai)) { return redirect()->back()->withInput()->withErrors([ 'jadwal' => 'Jadwal bentrok dengan jadwal guru atau kelas yang sudah ada pada hari dan jam tersebut.' ]); } } $tahunAjaranAktif = TahunAjaran::where('status', 'aktif')->first(); GuruMapel::create([ 'guru_id' => $request->guru_id, 'mapel_id' => $request->mapel_id, 'kelas_id' => $request->kelas_id, 'hari' => $request->hari, 'jam_mulai' => $request->jam_mulai, 'jam_selesai' => $request->jam_selesai, 'tahun_ajaran_id' => $tahunAjaranAktif?->id, ]); // ✅ Notifikasi berhasil return redirect()->route('admin.guru-mapel.index')->with('success', 'Data berhasil ditambahkan.'); } public function edit($id) { $data = GuruMapel::findOrFail($id); $guru = Guru::all(); $mapel = Mapel::all(); $kelas = Kelas::all(); return view('admin.GuruMapel.edit', compact('data', 'guru', 'mapel', 'kelas')); } public function update(Request $request, $id) { try { if (strlen($request->jam_mulai) > 5) { $request->merge(['jam_mulai' => substr($request->jam_mulai, 0, 5)]); } if (strlen($request->jam_selesai) > 5) { $request->merge(['jam_selesai' => substr($request->jam_selesai, 0, 5)]); } $request->validate([ 'guru_id' => 'required', 'mapel_id' => 'required', 'kelas_id' => 'required', 'hari' => 'required|string|max:20', 'jam_mulai' => 'required|date_format:H:i', 'jam_selesai' => 'required|date_format:H:i|after:jam_mulai', ]); $jamMulai = Carbon::createFromFormat('H:i', $request->jam_mulai); $jamSelesai = Carbon::createFromFormat('H:i', $request->jam_selesai); $jadwalBentrok = GuruMapel::where('hari', $request->hari) ->where(function ($query) use ($request) { $query->where('guru_id', $request->guru_id) ->orWhere('kelas_id', $request->kelas_id); }) ->where('id', '!=', $id) ->get(); foreach ($jadwalBentrok as $jadwal) { $mulai = Carbon::parse($jadwal->jam_mulai); $selesai = Carbon::parse($jadwal->jam_selesai); if ($jamMulai->lt($selesai) && $jamSelesai->gt($mulai)) { return redirect()->back()->withInput()->withErrors([ 'jadwal' => 'Jadwal bentrok dengan jadwal guru atau kelas yang sudah ada pada hari dan jam tersebut.' ]); } } $item = GuruMapel::findOrFail($id); $item->update($request->all()); // ✅ Notifikasi berhasil return redirect('/admin/guru-mapel')->with('success', 'Data berhasil diperbarui.'); } catch (\Exception $e) { // ❌ Notifikasi gagal return redirect()->back()->withInput()->withErrors(['error' => $e->getMessage()]); } } public function destroy($id) { $item = GuruMapel::findOrFail($id); $item->delete(); // ✅ Notifikasi berhasil return redirect('/admin/guru-mapel')->with('success', 'Data berhasil dihapus.'); } }