public function index(\App\Gameweek $gameweek = null, \App\Month $month = null)
 {
     $user = null;
     $users = \App\User::ranked()->orderBy('rank')->get();
     $lastFixture = \App\Fixture::over()->orderBy('kickoff', 'desc')->first();
     $activeTabs = ['active', '', ''];
     if (!$month or !$month->hasStarted()) {
         $month = $lastFixture->gameweek->month;
     } else {
         $activeTabs = ['', 'active', ''];
     }
     if (!$gameweek or !$gameweek->hasCompletedFixture()) {
         $gameweek = $lastFixture->gameweek;
     } else {
         $activeTabs = ['', '', 'active'];
     }
     if (\Auth::check()) {
         $user = \Auth::user();
     }
     $months = \App\Month::orderBy('id', 'desc')->get()->filter(function ($month) {
         return $month->hasStarted();
     });
     $gameweeks = \App\Gameweek::orderBy('id', 'desc')->get()->filter(function ($gw) {
         return $gw->hasCompletedFixture();
     });
     $gameweekUsers = $gameweek->predictors()->orderBy('gameweek_user.rank', 'asc')->get();
     $monthUsers = $month->users()->orderBy('month_user.rank', 'asc')->get();
     $nameOfPage = 'standings';
     return view('pages.standings', compact('gameweeks', 'months', 'users', 'gameweekUsers', 'monthUsers', 'month', 'gameweek', 'user', 'activeTabs', 'nameOfPage'));
 }
 public function show(\App\User $user, \App\Gameweek $gameweekInFocus = null)
 {
     //Get the last "over" fixture
     $lastFixture = \App\Fixture::over()->orderBy('kickoff', 'desc')->first();
     if (!$gameweekInFocus or !$gameweekInFocus->hasCompletedFixture()) {
         //Get the corresponding gameweek and eager load its fixtures
         $gameweekInFocus = $lastFixture->gameweek()->with(['fixtures' => function ($query) {
             $query->over();
         }])->first();
     } else {
         $gameweekInFocus->load(['fixtures' => function ($query) {
             $query->over();
         }]);
     }
     $gameweeks = \App\Gameweek::orderBy('id', 'desc')->get()->filter(function ($gw) {
         return $gw->hasCompletedFixture();
     });
     $badges = $user->badges()->orderBy('badge_user.gameweek_id', 'asc')->get();
     return view('users.show', compact('user', 'gameweekInFocus', 'gameweeks', 'lastFixture', 'badges'));
 }