/**
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function create()
 {
     return view('admin.sentinel.users.edit', ['user' => $this->userProvider->createModel(), 'groups' => \Sentinel::getGroupProvider()->findAll(), 'userGroups' => [], 'action' => 'create']);
 }
 /**
  * Updating a user and his person table + group table info.
  *
  * @param int $id
  * @param array $data
  *
  * @return void
  */
 public function updateUser($id, array $data)
 {
     if (!empty($id) && !empty($data)) {
         $this->createModel()->newQuery()->where('id', $id)->update(array('name' => $data['name'], 'email' => $data['email']));
         unset($data['name'], $data['email']);
         $personID = \Spirit::getPersonProvider()->getPersonByUserId($id)->select(['id as user_id'])->value('user_id');
         if (!is_null($personID)) {
             if (!isset($data['groups'])) {
                 $data['groups'] = [];
             }
             $groupsHaveChanged = \Sentinel::getGroupProvider()->updateUserGroups($id, $data['groups']);
             if ($groupsHaveChanged === true) {
                 \Sentinel::getPermissionProvider()->updateUserGroupPermissions($id, $data['groups']);
             }
             unset($data['groups']);
             \Spirit::getPersonProvider()->updatePerson($personID, $data);
         } else {
             throw new \UnexpectedValueException('User ' . $id . ' not found for update');
         }
     } else {
         throw new \UnexpectedValueException('Invalid data for user update');
     }
 }
 public function __construct()
 {
     $this->groupProvider = \Sentinel::getGroupProvider();
     $this->userGroupProvider = \Sentinel::getUserGroupProvider();
     Flash::setMessagedEntity('group');
 }
 public function index()
 {
     $userCount = \Sentinel::getUserProvider()->getAllUsersCount();
     $groupCount = \Sentinel::getGroupProvider()->getAllGroupsCount();
     return view('admin.dashboard', compact('userCount', 'groupCount'));
 }