protected function create($values)
 {
     $data = [];
     foreach ($this->structure as $i => $key) {
         $data[$key] = $values[$i];
     }
     PermissionUser::create($data);
 }
 public function lastUpdated()
 {
     $query = PermissionUser::orderBy('updated_at', 'DESC')->first();
     if ($query) {
         return $query->updated_at->format('Y-m-d H:i:s');
     }
     return date("Y-m-d H:i:s");
 }
 /**
  * @param int $userID
  * @param array $groupIDs
  */
 public function updateUserGroupPermissions($userID, array $groupIDs)
 {
     $permissionUser = $this->createModel()->getPermissionActions($userID)->pluck('permission_action_id', 'permission_id');
     $permissionGroup = $this->createModel()->getPermissionActions($groupIDs, null, 'group')->pluck('permission_action_id', 'permission_id')->unique();
     //We add permissions that the group has but the user doesn't.
     $permissionsToAdd = $permissionGroup->diff($permissionUser);
     if (!$permissionsToAdd->isEmpty()) {
         foreach ($permissionsToAdd as $actionID) {
             $this->addUserPermission($userID, $actionID);
         }
     }
     //We remove permissions the user has that the group doesn't.
     $permissionsToRemove = $permissionUser->diff($permissionGroup);
     if (!$permissionsToRemove->isEmpty()) {
         PermissionUser::deletePermissionUsers($permissionsToRemove->keys()->toArray());
     }
 }