filled('search')) { $search = $request->search; $query->where('name', 'like', "%{$search}%") ->orWhere('code', 'like', "%{$search}%"); } // 3. Eksekusi query dengan pagination dan pertahankan parameter URL $departments = $query->latest()->paginate(10)->withQueryString(); // 4. Total rekor untuk ditampilkan di UI $totalRecords = $departments->total(); return view('pages.admin.departments.index', compact('departments', 'totalRecords')); } public function create() { return view('pages.admin.departments.create'); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255|unique:departments,name', 'code' => 'nullable|string|max:50|unique:departments,code', ]); Department::create($validated); return redirect()->route('admin.departments.index') ->with('success', 'Departemen baru berhasil ditambahkan.'); } public function show(Department $department) { // Hanya melempar object $department ke view tanpa load relasi positions return view('pages.admin.departments.show', compact('department')); } public function edit(Department $department) { return view('pages.admin.departments.edit', compact('department')); } public function update(Request $request, Department $department) { $validated = $request->validate([ 'name' => 'required|string|max:255|unique:departments,name,' . $department->id, 'code' => 'nullable|string|max:50|unique:departments,code,' . $department->id, ]); $department->update($validated); return redirect()->route('admin.departments.index') ->with('success', 'Data Departemen berhasil diperbarui.'); } public function exportPdf(Request $request) { // 1. Ambil data sesuai filter/search saat ini $search = $request->search; $departments = Department::when($search, function($q) use ($search) { $q->where('name', 'like', "%{$search}%"); })->get(); // 2. Tangkap Metadata Siapa & Kapan $metadata = [ 'downloaded_by' => auth()->user()->first_name . ' ' . auth()->user()->last_name, // Mengambil nama admin yang login 'download_time' => now()->translatedFormat('l, d F Y - H:i:s'), // Format waktu Indonesia 'total_data' => $departments->count() ]; // 3. Render View ke PDF $pdf = Pdf::loadView('pages.admin.departments.export-pdf', compact('departments', 'metadata')); return $pdf->download('Data_Departemen_'.date('YmdHis').'.pdf'); } public function destroy(Department $department) { // Opsional: Cek apakah ada posisi terkait sebelum menghapus if ($department->positions()->count() > 0) { return back()->with('error', 'Gagal menghapus: Departemen ini masih memiliki Posisi/Jabatan aktif.'); } $department->delete(); return redirect()->route('admin.departments.index') ->with('success', 'Departemen berhasil dihapus.'); } }