/** * Cast the user's vote. * @param int $id * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function castVote($id, Request $request) { // Get the poll $poll = Poll::find($id); if (!$poll) { return redirect(route('polls.index')); } // Check if already voted if ($poll->voted($this->user)) { Flash::warning('You have already voted for this poll.'); return redirect(route('polls.view', $id)); } // Cast vote $option = PollOption::find($request->get('vote')); if (!$option) { return redirect(route('polls.view', $id)); } $option->votes()->create(['user_id' => $this->user->id]); Flash::success('Vote cast'); return redirect(route('polls.view', $id)); }