/**
  * Get collection of users from cache by specified role or default to
  * alternate repository lookup.
  *
  * @param  string|null $role
  * @return \Illuminate\Support\Collection
  */
 public function getAllByRole($role = null)
 {
     $key = array_search($role, User::getRoles());
     $ids = $this->retrieve($key . ':ids');
     if ($ids) {
         $users = $this->retrieveMany($ids);
         $users = $this->resolveMissingUsers($users);
         $users = collect(array_values($users));
         return $users;
     }
     $users = $this->repository->getAllByRole($role);
     if ($users->count()) {
         $ids = $users->pluck('id')->all();
         $collection = $users->keyBy('id')->all();
         $this->store($key . ':ids', $ids);
         $this->storeMany($collection);
     }
     return $users;
 }
 /**
  * Returns an index of all contestants.
  *
  * @return \Illuminate\Http\Response
  */
 public function contestantsIndex()
 {
     $contestants = $this->repository->getAllByRole();
     return view('users.contestants_index', compact('contestants'));
 }