filled('search')) { $search = $request->search; $query->where(function ($q) use ($search) { $q->where('nama', 'like', "%{$search}%") ->orWhere('nip', 'like', "%{$search}%") ->orWhere('jabatan', 'like', "%{$search}%"); }); } if ($request->filled('nip')) { $query->where('nip', 'like', "%{$request->nip}%"); } if ($request->filled('tahun_ajaran_id')) { $query->where('tahun_ajaran_id', $request->tahun_ajaran_id); } $data = $query->paginate(10); $jabatanList = Guru::select('jabatan')->distinct()->pluck('jabatan')->toArray(); $tahunAjaranList = TahunAjaran::orderBy('tahun', 'desc')->get(); return view('admin.guru.index', compact('data', 'jabatanList', 'tahunAjaranList')); } public function create() { $tahunAjaranList = TahunAjaran::orderBy('tahun', 'desc')->get(); return view('admin.guru.create', compact('tahunAjaranList')); } public function store(Request $request) { $request->validate([ 'nip' => 'required|unique:guru', 'nama' => 'required', 'email' => 'required|email|unique:users,email', 'jenis_kelamin' => 'required|in:L,P', 'jabatan' => 'required', 'tahun_ajaran_id' => 'required|exists:tahun_ajaran,id', ]); $user = User::create([ 'name' => $request->nama, 'email' => $request->email, 'password' => Hash::make('passworddefault'), 'role' => 'guru', 'is_active' => true, ]); Guru::create([ 'user_id' => $user->id, 'nip' => $request->nip, 'nama' => $request->nama, 'jenis_kelamin' => $request->jenis_kelamin, 'jabatan' => $request->jabatan, 'tahun_ajaran_id' => $request->tahun_ajaran_id, ]); return redirect()->route('admin.guru.index')->with('success', 'Data guru berhasil ditambahkan.'); } public function edit($id) { $guru = Guru::with(['user', 'tahunAjaran'])->findOrFail($id); $tahunAjaranList = TahunAjaran::orderBy('tahun', 'desc')->get(); return view('admin.guru.edit', compact('guru', 'tahunAjaranList')); } public function destroy($id) { $guru = Guru::findOrFail($id); // Hapus user terkait jika ada if ($guru->user) { $guru->user->delete(); } // Hapus guru $guru->delete(); return redirect()->route('admin.guru.index')->with('success', 'Data guru berhasil dihapus.'); } public function update(Request $request, $id) { $guru = Guru::with('user')->findOrFail($id); $user = $guru->user; $request->validate([ 'nip' => 'required|unique:guru,nip,' . $guru->id, 'nama' => 'required', 'email' => 'required|email|unique:users,email,' . ($user->id ?? 'null'), 'jenis_kelamin' => 'required|in:L,P', 'jabatan' => 'required', 'tahun_ajaran_id' => 'required|exists:tahun_ajaran,id', ]); if ($user) { $user->email = $request->email; $user->save(); } $guru->update([ 'nip' => $request->nip, 'nama' => $request->nama, 'jenis_kelamin' => $request->jenis_kelamin, 'jabatan' => $request->jabatan, 'tahun_ajaran_id' => $request->tahun_ajaran_id, ]); return redirect()->route('admin.guru.index')->with('success', 'Data guru berhasil diupdate.'); } public function export() { return Excel::download(new GuruExport, 'data_guru_' . date('Ymd_His') . '.xlsx'); } public function import(Request $request) { $request->validate([ 'file' => 'required|mimes:xlsx,xls', ]); try { Excel::import(new GuruImport, $request->file('file')); return back()->with('success', 'Import data guru berhasil!'); } catch (\Exception $e) { return back()->with('error', 'Terjadi kesalahan saat mengimpor data: ' . $e->getMessage()); } } }