when($request->search, fn ($q, $v) => $q->where('nama', 'like', "%$v%")->orWhere('kod', 'like', "%$v%")) ->when($request->peringkat, fn ($q, $v) => $q->where('peringkat', $v)) ->latest()->paginate(10)->withQueryString(); return view('admin.jabatan.index', compact('jabatan')); } public function create() { return view('admin.jabatan.form', ['jabatan' => new Jabatan()]); } public function store(Request $request) { Jabatan::create($this->validated($request)); return redirect()->route('jabatan.index')->with('success', 'Jabatan berjaya ditambah.'); } public function edit(Jabatan $jabatan) { return view('admin.jabatan.form', compact('jabatan')); } public function update(Request $request, Jabatan $jabatan) { $jabatan->update($this->validated($request, $jabatan->id)); return redirect()->route('jabatan.index')->with('success', 'Jabatan berjaya dikemaskini.'); } public function destroy(Jabatan $jabatan) { $jabatan->delete(); return back()->with('success', 'Jabatan dipadam secara soft delete.'); } private function validated(Request $request, ?int $id = null): array { return $request->validate([ 'nama' => ['required', 'max:255'], 'peringkat' => ['required', 'in:Jabatan,Bahagian,Seksyen,Unit,Sub Unit'], 'kod' => ['nullable', 'max:50', 'unique:jabatan,kod,'.$id], 'penerangan' => ['nullable'], 'status' => ['nullable', 'boolean'], ]) + ['status' => $request->boolean('status')]; } }