search) { $query->where('name', 'like', '%' . $request->search . '%'); } return Inertia::render('admin/departments/index', [ 'departments' => $query->latest()->get(), 'filters' => $request->only(['search']), ]); } public function create() { return Inertia::render('admin/departments/create'); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255|unique:departments,name', 'description' => 'nullable|string', ], [ 'name.required' => 'Nama departemen wajib diisi.', 'name.max' => 'Nama departemen maksimal 255 karakter.', 'name.unique' => 'Nama departemen sudah terdaftar.', ]); Department::create($validated); return redirect()->to('/admin/departments') ->with('success', 'Departemen berhasil ditambahkan.'); } public function edit(Department $department) { return Inertia::render('admin/departments/edit', [ 'department' => $department ]); } public function update(Request $request, Department $department) { $validated = $request->validate([ 'name' => 'required|string|max:255|unique:departments,name,' . $department->id, 'description' => 'nullable|string', ], [ 'name.required' => 'Nama departemen wajib diisi.', 'name.max' => 'Nama departemen maksimal 255 karakter.', 'name.unique' => 'Nama departemen sudah terdaftar.', ]); $department->update($validated); return redirect()->to('/admin/departments') ->with('success', 'Departemen berhasil diperbarui.'); } public function destroy(Department $department) { // Cek sisa karyawan if ($department->employees()->count() > 0) { return back()->with('error', 'Gagal hapus! Departemen ini masih memiliki karyawan.'); } $department->delete(); return back()->with('success', 'Departemen berhasil dihapus.'); } }