validate([ 'nama' => 'required', 'alamat' => 'required', ]); // Ambil nilai dari request $nama = $request->input('nama'); $alamat = $request->input('alamat'); // Cek apakah ada kombinasi nama dan alamat yang sudah ada $duplikatNamaAlamat = Sekolah::where('nama', $nama) ->where('alamat', $alamat) ->exists(); // Cek apakah ada nama yang duplikat $duplikatNama = Sekolah::where('nama', $nama)->exists(); // Cek apakah ada alamat yang duplikat $duplikatAlamat = Sekolah::where('alamat', $alamat)->exists(); if ($duplikatNamaAlamat) { toastr()->error('Sekolah dengan nama dan alamat tersebut sudah ada.'); return redirect()->back(); } if ($duplikatNama) { toastr()->error('Sekolah dengan nama tersebut sudah ada.'); return redirect()->back(); } if ($duplikatAlamat) { toastr()->error('Sekolah dengan alamat tersebut sudah ada.'); return redirect()->back(); } $sekolah = new Sekolah(); $sekolah->nama = $request->input('nama'); $sekolah->alamat = $request->input('alamat'); if ($sekolah->save()) { toastr()->success('Data sekolah berhasil ditambahkan.'); } else { toastr()->error('Gagal menambahkan data sekolah.'); } return redirect()->route('sekolah'); } public function updatesekolah(Request $request, $id) { $request->validate([ 'nama' => 'required', 'alamat' => 'required', ]); // Ambil data sekolah berdasarkan ID $sekolah = Sekolah::findOrFail($id); // Ambil nilai dari request $nama = $request->input('nama'); $alamat = $request->input('alamat'); // Cek apakah ada nama yang duplikat (karena nama unique di database) $duplikatNama = Sekolah::where('nama', $nama) ->where('id', '!=', $id) ->exists(); if ($duplikatNama) { toastr()->error('Sekolah dengan nama tersebut sudah ada.'); return redirect()->back(); } // Cek apakah ada alamat yang duplikat $duplikatAlamat = Sekolah::where('alamat', $alamat) ->where('id', '!=', $id) ->exists(); if ($duplikatAlamat) { toastr()->error('Sekolah dengan alamat tersebut sudah ada.'); return redirect()->back(); } // Update data sekolah $sekolah->nama = $nama; $sekolah->alamat = $alamat; $sekolah->save(); toastr()->success('Data sekolah berhasil diupdate.'); return redirect()->route('sekolah')->with('reload', true); } public function hapussekolah($id) { $sekolah = Sekolah::findOrFail($id); $sekolah->delete(); toastr()->success('Data sekolah berhasil dihapus.'); return redirect()->route('sekolah'); } public function downloadsekolah() { // Ambil data sekolah dari database $sekolahs = Sekolah::all(); $pdf = Pdf::loadView('admin.sekolahpdf', compact('sekolahs')); // Download file PDF return $pdf->download('data_sekolah.pdf'); } public function kelas() { $kelas = Kelas::all(); $sekolahs = Sekolah::all(); return view('admin.kelas', compact('kelas', 'sekolahs')); } public function getkelas($id) { $kelas = Kelas::where('sekolah_id', $id)->get(); // Balikkan dalam bentuk JSON return response()->json(['kelas' => $kelas]); } public function tambahkelas(Request $request) { $request->validate([ 'nama_kelas' => 'required', 'sekolah_id' => 'required|exists:sekolahs,id', ]); // Ambil nilai dari request $nama = $request->input('nama_kelas'); // Cek apakah ada nama yang duplikat $duplikatNama = Kelas::where('nama_kelas', $nama) ->where('sekolah_id', $request->input('sekolah_id')) ->exists(); if ($duplikatNama) { toastr()->error('Kelas dengan nama tersebut sudah ada.'); return redirect()->back(); } $kelas = new Kelas(); $kelas->nama_kelas = $request->input('nama_kelas'); $kelas->sekolah_id = $request->input('sekolah_id'); if ($kelas->save()) { toastr()->success('Data kelas berhasil ditambahkan.'); } else { toastr()->error('Gagal menambahkan data kelas.'); } return redirect()->route('kelas'); } public function updatekelas(Request $request, $id) { $request->validate([ 'nama_kelas' => 'required', 'sekolah_id' => 'required|exists:sekolahs,id', ]); // Ambil data kelas berdasarkan ID $kelas = Kelas::findOrFail($id); // Ambil nilai dari request $nama = $request->input('nama_kelas'); // Cek apakah ada nama yang duplikat, kecuali untuk kelas yang sedang diupdate $duplikatNama = Kelas::where('nama_kelas', $nama) ->where('sekolah_id', $request->input('sekolah_id')) ->where('id', '!=', $id) // Menghindari duplikasi pada kelas yang sedang diupdate ->exists(); if ($duplikatNama) { toastr()->error('Kelas dengan nama tersebut sudah ada.'); return redirect()->back(); } // Update data kelas $kelas->nama_kelas = $nama; $kelas->sekolah_id = $request->input('sekolah_id'); if ($kelas->save()) { toastr()->success('Data kelas berhasil diupdate.'); } else { toastr()->error('Gagal memperbarui data kelas.'); } return redirect()->route('kelas')->with('reload', true); } public function hapuskelas($id) { $kelas = Kelas::findOrFail($id); $kelas->delete(); toastr()->success('Data kelas berhasil dihapus.'); return redirect()->route('kelas'); } public function downloadkelas() { // Ambil data sekolah dari database $kelas = Kelas::all(); $pdf = Pdf::loadView('admin.kelaspdf', compact('kelas')); // Download file PDF return $pdf->download('data_kelas.pdf'); } public function siswa() { $users = User::where('usertype', 'user')->get(); $sekolahs = Sekolah::all(); // Untuk dropdown sekolah $kelas = Kelas::all(); // Untuk dropdown kelas $tahun_ajarans = TahunAjaran::where('is_active', 1)->get(); // Ambil tahun ajaran yang aktif $siswas = Siswa::with('user', 'sekolah', 'kelas', 'tahunAjaran')->get(); // Tambahkan relasi 'tahunAjaran' return view('admin.siswa', compact('siswas', 'users', 'sekolahs', 'kelas', 'tahun_ajarans')); } public function tambahsiswa(Request $request) { $request->validate([ 'user_id' => 'required|exists:users,id', 'sekolah_id' => 'required|exists:sekolahs,id', 'kelas_id' => 'required|exists:kelas,id', 'tahun_ajaran_id' => 'required|exists:tahun_ajarans,id', ]); $userId = $request->input('user_id'); $sekolahId = $request->input('sekolah_id'); $kelasId = $request->input('kelas_id'); $tahunAjaranId = $request->input('tahun_ajaran_id'); // Cek apakah siswa ini sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama $duplikat = Siswa::where('user_id', $userId) ->where('sekolah_id', $sekolahId) ->where('kelas_id', $kelasId) ->where('tahun_ajaran_id', $tahunAjaranId) ->exists(); if ($duplikat) { toastr()->error('Siswa tersebut sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama.'); return redirect()->back(); } // Simpan data siswa $siswa = new Siswa(); $siswa->user_id = $userId; $siswa->sekolah_id = $sekolahId; $siswa->kelas_id = $kelasId; $siswa->tahun_ajaran_id = $tahunAjaranId; if ($siswa->save()) { toastr()->success('Data siswa berhasil ditambahkan.'); } else { toastr()->error('Gagal menambahkan data siswa.'); } return redirect()->route('siswa')->with('reload', true); } public function updatesiswa(Request $request, $id) { // Validasi input $request->validate([ 'user_id' => 'required|exists:users,id', 'sekolah_id' => 'required|exists:sekolahs,id', 'kelas_id' => 'required|exists:kelas,id', 'tahun_ajaran_id' => 'required|exists:tahun_ajarans,id', ]); // Cari data siswa berdasarkan ID $siswa = Siswa::findOrFail($id); $userId = $request->input('user_id'); $sekolahId = $request->input('sekolah_id'); $kelasId = $request->input('kelas_id'); $tahunAjaranId = $request->input('tahun_ajaran_id'); // Cek apakah siswa ini sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama, kecuali untuk siswa yang sedang di-update $duplikat = Siswa::where('user_id', $userId) ->where('sekolah_id', $sekolahId) ->where('kelas_id', $kelasId) ->where('tahun_ajaran_id', $tahunAjaranId) ->where('id', '!=', $id) // Hindari memeriksa siswa yang sedang di-update ->exists(); if ($duplikat) { toastr()->error('Siswa tersebut sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama.'); return redirect()->back(); } // Update data siswa $siswa->user_id = $userId; $siswa->sekolah_id = $sekolahId; $siswa->kelas_id = $kelasId; $siswa->tahun_ajaran_id = $tahunAjaranId; if ($siswa->save()) { toastr()->success('Data siswa berhasil di-update.'); } else { toastr()->error('Gagal meng-update data siswa.'); } return redirect()->route('siswa'); } public function hapussiswa($id) { $siswa = Siswa::findOrFail($id); $siswa->delete(); toastr()->success('Data siswa berhasil dihapus.'); return redirect()->route('siswa'); } public function downloadsiswa() { // Ambil data siswa dengan relasi lengkap untuk PDF $siswas = Siswa::with('user', 'sekolah', 'kelas', 'tahunAjaran')->get(); $pdf = Pdf::loadView('admin.siswapdf', compact('siswas')); // Download file PDF return $pdf->download('data_siswa.pdf'); } }