validateRequest($request, $id); $nominee = $this->updateNominee($request, $id); activity() ->performedOn($nominee) ->withProperties([ 'nominee_id' => $nominee->id, 'nominee_name' => $nominee->name, 'election_id' => $nominee->election_id, 'changed_keys' => array_keys($nominee->getChanges()), 'updated_by_admin_id' => $request->user() ? (int) $request->user()->id : null, 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), ]) ->log("update nominee: {$nominee->name}"); return response()->json([ 'status' => 'success', 'message' => 'Nominee updated successfully' ]); } private function validateRequest($request, $id) { $this->validate($request, [ 'name' => [ 'required', Rule::unique('nominee')->ignore($id)->where(function($query){ $query->where('election_id', Util::getCurrentElection()); }) ], 'no_anggota' => [ 'required', Rule::unique('nominee')->ignore($id)->where(function($query){ $query->where('election_id', Util::getCurrentElection()); }) ], 'unit' => 'required', 'position_id' => 'required|exists:nominee,position_id', 'partylist_id' => 'nullable|exists:nominee,partylist_id' ]); } private function updateNominee ($request, $id) { $nominee = Nominee::findOrFail($id); $nominee->name = $request->name; $nominee->unit = $request->unit; $nominee->no_anggota = $request->no_anggota; $nominee->position_id = $request->position_id; $nominee->partylist_id = $request->partylist_id; $nominee->education = $request->education; $nominee->experience = $request->experience; $nominee->umur = $request->umur; $nominee->jawatan_sekarang = $request->jawatan_sekarang; if ($request->hasFile('photo')) { $imageData = file_get_contents($request->file('photo')); $nominee->photo = $imageData; } $nominee->save(); return $nominee; } }