firstOrFail(); return response()->json([ 'user' => $voter, ]); } // SAHKAN PENYATA BERDASARKAN NO ANGGOTA public function sahkan(Request $request, $no_anggota) { $request->validate([ 'persetujuan' => 'required|in:Bersetuju,Tidak Bersetuju', 'no_kp' => 'nullable', 'nokp' => 'nullable', ]); $voter = Voter::where('no_anggota', $no_anggota)->first(); if (!$voter) { return response()->json([ 'message' => 'Voter tidak dijumpai' ], 404); } if ($voter->status_penyata === 'DISAHKAN') { return response()->json([ 'message' => 'Penyata ini telah DISAHKAN sebelum ini' ], 409); // Conflict } $noKp = $request->input('no_kp', $request->input('nokp')); $voter->update([ 'persetujuan' => $request->persetujuan, 'status_penyata' => $request->persetujuan === 'Bersetuju' ? 'DISAHKAN' : 'PERLU_SEMAK', 'no_kp' => $noKp, 'tarikh_sah' => now() ]); return response()->json([ 'success' => true, 'status' => $voter->status_penyata, 'user' => $voter->fresh(), ]); } public function pdf($no_anggota) { $penyata = Voter::where('no_anggota', $no_anggota)->first(); $pdf = Pdf::loadView('pdf.penyata-anggota', [ 'p' => $penyata ])->setPaper('A4', 'portrait'); return $pdf->download("Penyata_$no_anggota.pdf"); } }