where('id', $id) ->firstOrFail(); if ((int) $voter->kehadiran !== 1) { return response()->json([ 'status' => 'failed', 'message' => 'Pengesahan pendaftaran fizikal hanya untuk pengundi Fizikal.', ], 422); } if ($voter->fizikal_registration_verified_at !== null) { activity() ->performedOn($voter) ->withProperties([ 'election_id' => $electionId, 'voter_id' => $voter->id, 'voter_name' => $voter->name, 'already_verified' => true, 'verified_at' => (string) $voter->fizikal_registration_verified_at, 'verified_by_admin_id' => $request->user() ? (int) $request->user()->id : null, 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), ]) ->log("verify fizikal registration: {$voter->name}"); return response()->json([ 'status' => 'success', 'message' => 'Pendaftaran telah disahkan sebelum ini.', 'voter' => $voter, ]); } $voter->fizikal_registration_verified_at = now(); $voter->save(); activity() ->performedOn($voter) ->withProperties([ 'election_id' => $electionId, 'voter_id' => $voter->id, 'voter_name' => $voter->name, 'already_verified' => false, 'verified_at' => (string) $voter->fizikal_registration_verified_at, 'verified_by_admin_id' => $request->user() ? (int) $request->user()->id : null, 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), ]) ->log("verify fizikal registration: {$voter->name}"); return response()->json([ 'status' => 'success', 'message' => 'Pendaftaran fizikal telah disahkan.', 'voter' => $voter->fresh(), ]); } }