/** * Display all a user's rounds. * * @param int $userId * @param Request $request * @return Response */ public function rounds($userId, Request $request) { $sort = $request->input('sort', 'date'); $direction = $request->input('direction', 'desc'); $user = $this->user->getUser($userId); $rounds = $this->round->getSortableRounds($sort, $direction, $userId); return view('users.rounds', compact('user', 'rounds', 'sort', 'direction')); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $userId = $request->user()->id; $roundId = $request->route('rounds'); if (!$this->round->checkRoundBelongsToUser($userId, $roundId)) { abort(403); } return $next($request); }
/** * Show the application dashboard to the user. * * @param Request $request * @return Response */ public function index(Request $request) { $user = $request->user(); $rounds = $this->round->getRoundsByUser($user->id); $latestRounds = $rounds->take(-5)->reverse(); $trends = $this->user->getUserTrends($rounds); $feed = $this->user->getUserLatestFeed($user->id, 5); $chartData = []; foreach ($rounds as $round) { $chartData[] = ['date' => $round->date->format('Y-m-d'), 'strokes' => $round->totalStrokes(), 'putts' => $round->totalPutts()]; } return view('home', ['rounds' => $rounds, 'latestRounds' => $latestRounds, 'chartData' => $chartData, 'trends' => $trends, 'user' => $user, 'feed' => $feed]); }
/** * Update a round. * * @param $roundId * @param UpdateRoundRequest $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function update($roundId, UpdateRoundRequest $request) { $user = $request->user(); $round = $this->round->update($user->id, $roundId, $request); $request->session()->flash('success', 'Your round has been updated.'); return redirect(route('rounds.show', $round->id)); }
/** * Compare two users. * @param Request $request * @return Response */ public function index(Request $request) { $user1Id = $request->input('user'); $user2Id = $request->input('to'); // todo: make sure both valid users, and they are different $user1 = $this->user->getUser($user1Id); $user2 = $this->user->getUser($user2Id); $user1Stats = $this->user->getUserStats($user1Id); $user2Stats = $this->user->getUserStats($user2Id); $user1BestRounds = $this->round->getBestRoundsByUser($user1Id, 5); $user2BestRounds = $this->round->getBestRoundsByUser($user2Id, 5); $users = compact('user1', 'user2'); $stats = ['user1' => $user1Stats, 'user2' => $user2Stats]; $bestRounds = ['user1' => $user1BestRounds, 'user2' => $user2BestRounds]; return view('compare.index', compact('stats', 'users', 'bestRounds')); }
protected function checkRoundBelongsToUser() { $userId = $this->user()->id; $roundId = $this->route('rounds'); return $this->round->checkRoundBelongsToUser($userId, $roundId); }