query('tab', 'pending'); $perPage = $request->query('per_page', 10); $search = $request->query('search'); // Menangkap kata kunci pencarian // Inisialisasi Query dasar $query = Warga::query(); // 1. Filter berdasarkan Tab (Antrean / Riwayat) if ($tab == 'riwayat') { $query->with('verifikator') ->whereIn('status_verifikasi', ['setuju', 'tolak']) ->latest('updated_at'); } else { $query->where('status_verifikasi', 'pending') ->latest(); } // 2. Logika Pencarian (Search) if (!empty($search)) { $query->where(function ($q) use ($search) { $q->where('nama', 'LIKE', "%{$search}%") ->orWhere('nik', 'LIKE', "%{$search}%"); }); } // 3. Eksekusi Paginate $wargas = $query->paginate($perPage); // Appends berguna agar saat pindah halaman/tab, parameter tidak hilang $wargas->appends([ 'tab' => $tab, 'per_page' => $perPage, 'search' => $search ]); return view('verifikator.index', compact('wargas', 'tab', 'perPage', 'search')); } /** * Menampilkan detail dokumen dan kriteria warga */ public function verifikasiShow($id) { $warga = Warga::with(['details.kriteria', 'details.subKriteria', 'verifikator'])->findOrFail($id); return view('verifikator.show', compact('warga')); } /** * Menyimpan keputusan verifikator SATUAN (Setuju/Tolak) */ public function verifikasiProses(Request $request, $id) { $request->validate([ 'status' => 'required|in:setuju,tolak', 'catatan' => 'nullable|string|max:500', ]); $warga = Warga::findOrFail($id); $warga->update([ 'status_verifikasi' => $request->status, 'catatan' => $request->catatan, 'verified_by' => Auth::id(), // Menyimpan ID verifikator ]); $pesan = $request->status == 'setuju' ? 'Data berhasil disetujui!' : 'Data telah ditolak.'; return redirect()->route('verifikasi.index', ['tab' => 'pending'])->with('success', $pesan); } /** * Menyimpan keputusan verifikator MASSAL (Setuju/Tolak) */ public function verifikasiMassal(Request $request) { $request->validate([ 'warga_ids' => 'required|array|min:1', 'action' => 'required|in:setuju,tolak', ], [ 'warga_ids.required' => 'Pilih minimal satu data warga untuk diverifikasi massal.', ]); // Update banyak data sekaligus Warga::whereIn('id', $request->warga_ids)->update([ 'status_verifikasi' => $request->action, 'catatan' => 'Diverifikasi secara massal oleh sistem.', 'verified_by' => Auth::id(), 'updated_at' => now(), ]); $jumlah = count($request->warga_ids); $pesan = $request->action == 'setuju' ? "$jumlah data berhasil disetujui massal!" : "$jumlah data ditolak massal."; return redirect()->route('verifikasi.index', ['tab' => 'pending'])->with('success', $pesan); } }