diff --git a/app/Http/Controllers/Admin/GuruController.php b/app/Http/Controllers/Admin/GuruController.php index e55fcf3..f54f282 100644 --- a/app/Http/Controllers/Admin/GuruController.php +++ b/app/Http/Controllers/Admin/GuruController.php @@ -62,15 +62,20 @@ public function store(Request $request) 'password' => Hash::make($request->password), ]); - // Tiap mapel berpasangan dengan kelas di index yang sama foreach ($request->id_mapel as $i => $idMapel) { - $idKelas = $request->id_kelas[$i] ?? $request->id_kelas[0]; - Mengajar::create([ - 'id_guru' => $guru->id_guru, + $idKelas = $request->id_kelas[$i] ?? $request->id_kelas[0]; + + Mengajar::updateOrCreate( + [ 'id_mapel' => $idMapel, 'id_kelas' => $idKelas, - ]); - } + 'id_guru' => null, + ], + [ + 'id_guru' => $guru->id_guru, + ] + ); + } return redirect()->route('admin.guru.index') ->with('success', 'Data guru berhasil ditambahkan.'); @@ -117,11 +122,17 @@ public function update(Request $request, string $id) foreach ($request->id_mapel as $i => $idMapel) { $idKelas = $request->id_kelas[$i] ?? $request->id_kelas[0]; - Mengajar::create([ - 'id_guru' => $guru->id_guru, - 'id_mapel' => $idMapel, - 'id_kelas' => $idKelas, - ]); + + Mengajar::updateOrCreate( + [ + 'id_mapel' => $idMapel, + 'id_kelas' => $idKelas, + 'id_guru' => null, + ], + [ + 'id_guru' => $guru->id_guru, + ] + ); } return redirect()->route('admin.guru.index') diff --git a/app/Http/Controllers/Admin/MapelController.php b/app/Http/Controllers/Admin/MapelController.php index f455171..a3e9509 100644 --- a/app/Http/Controllers/Admin/MapelController.php +++ b/app/Http/Controllers/Admin/MapelController.php @@ -44,31 +44,46 @@ public function index(Request $request) public function store(Request $request) - { +{ + $request->validate([ + 'nama_mapel' => 'required|max:100', + 'kelas' => 'required|array', + ]); - $request->validate([ - 'nama_mapel' => 'required|max:100', - 'kelas' => 'required|array' - ]); + // Cek duplikat nama mapel di tiap kelas yang dipilih + foreach ($request->kelas as $idKelas) { + $sudahAda = Mengajar::whereHas('mapel', function ($q) use ($request) { + $q->where('nama_mapel', $request->nama_mapel); + }) + ->where('id_kelas', $idKelas) + ->exists(); - $mapel = Mapel::create([ - 'nama_mapel' => $request->nama_mapel - ]); - - foreach ($request->kelas as $kelas) { - - Mengajar::create([ - 'id_mapel' => $mapel->id_mapel, - 'id_kelas' => $kelas, - 'id_guru' => null - ]); + if ($sudahAda) { + $namaKelas = \App\Models\Kelas::find($idKelas); + return redirect()->back() + ->withInput() + ->with('error_from', 'tambah') + ->withErrors([ + 'nama_mapel' => 'Mapel "' . $request->nama_mapel . '" sudah ada di kelas ' . optional($namaKelas)->nama_kelas . '!' + ]); } - - return redirect()->route('admin.mapel.index') - ->with('success', 'Data mata pelajaran berhasil ditambahkan!'); } + $mapel = Mapel::create([ + 'nama_mapel' => $request->nama_mapel, + ]); + foreach ($request->kelas as $kelas) { + Mengajar::create([ + 'id_mapel' => $mapel->id_mapel, + 'id_kelas' => $kelas, + 'id_guru' => null, + ]); + } + + return redirect()->route('admin.mapel.index') + ->with('success', 'Data mata pelajaran berhasil ditambahkan!'); +} public function update(Request $request, $id) { diff --git a/resources/views/admin/mapel/index.blade.php b/resources/views/admin/mapel/index.blade.php index 2182d93..7569612 100644 --- a/resources/views/admin/mapel/index.blade.php +++ b/resources/views/admin/mapel/index.blade.php @@ -235,14 +235,14 @@