firstOrFail(); } // SAHKAN PENYATA BERDASARKAN NO ANGGOTA public function sahkan(Request $request, $no_anggota) { $request->validate([ 'persetujuan' => 'required|in:Bersetuju,Tidak Bersetuju', 'no_kp' => '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 } $voter->update([ 'persetujuan' => $request->persetujuan, 'status_penyata' => $request->persetujuan === 'Bersetuju' ? 'DISAHKAN' : 'PERLU_SEMAK', 'no_kp' => $request->nokp, 'tarikh_sah' => now() ]); return response()->json([ 'success' => true, 'status' => $voter->status_penyata ]); } 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"); } }