user()->hasAnyRole(['provider', 'buyer', 'admin']), 403); $data = $request->validate([ 'recommendation' => ['required', 'string', 'in:provider,buyer,split,insufficient_evidence'], 'reason_code' => ['nullable', 'string', 'in:'.implode(',', array_keys(Dispute::REASON_CODES))], 'reason' => ['nullable', 'string', 'max:2000'], ]); $dispute->votes()->updateOrCreate( ['user_id' => $request->user()->id], $data ); return redirect()->route('disputes.show', $dispute)->with('status', 'Peer vote saved.'); } }