- $q = $query->whereExists(function ($permissionQuery) use (&$tableDetails) {
- // TODO - Update for user permission
- /** @var Builder $permissionQuery */
- $permissionQuery->select(['role_id'])->from('joint_permissions')
- ->whereColumn('joint_permissions.entity_id', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn'])
- ->whereColumn('joint_permissions.entity_type', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn'])
- ->whereIn('joint_permissions.role_id', $this->getCurrentUserRoleIds())
- ->where(function (QueryBuilder $query) {
- $this->addJointHasPermissionCheck($query, $this->currentUser()->id);
- });
+ $q = $query->where(function ($query) use ($tableDetails) {
+ $query->whereExists(function ($permissionQuery) use ($tableDetails) {
+ /** @var Builder $permissionQuery */
+ $permissionQuery->select(['role_id'])->from('joint_permissions')
+ ->whereColumn('joint_permissions.entity_id', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn'])
+ ->whereColumn('joint_permissions.entity_type', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn'])
+ ->whereIn('joint_permissions.role_id', $this->getCurrentUserRoleIds())
+ ->where(function (QueryBuilder $query) {
+ $this->addJointHasPermissionCheck($query, $this->currentUser()->id);
+ });
+ })->orWhereExists(function ($permissionQuery) use ($tableDetails) {
+ /** @var Builder $permissionQuery */
+ $permissionQuery->select(['user_id'])->from('joint_user_permissions')
+ ->whereColumn('joint_user_permissions.entity_id', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn'])
+ ->whereColumn('joint_user_permissions.entity_type', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn'])
+ ->where('joint_user_permissions.user_id', '=', $this->currentUser()->id)
+ ->where('joint_user_permissions.has_permission', '=', true);
+ });
+ })->whereNotExists(function ($query) use ($tableDetails) {
+ $query->select(['user_id'])->from('joint_user_permissions')
+ ->whereColumn('joint_user_permissions.entity_id', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn'])
+ ->whereColumn('joint_user_permissions.entity_type', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn'])
+ ->where('joint_user_permissions.user_id', '=', $this->currentUser()->id)
+ ->where('joint_user_permissions.has_permission', '=', false);