@@ -38,44 +38,41 @@ public PermissionRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogg
38
38
/// <param name="entityIds"></param>
39
39
/// <returns></returns>
40
40
/// <remarks>
41
- /// This method will not support passing in more than 2000 group Ids
41
+ /// This method will not support passing in more than 2000 group IDs when also passing in entity IDs.
42
42
/// </remarks>
43
43
public EntityPermissionCollection GetPermissionsForEntities ( int [ ] groupIds , params int [ ] entityIds )
44
44
{
45
45
var result = new EntityPermissionCollection ( ) ;
46
46
47
- foreach ( var groupOfGroupIds in groupIds . InGroupsOf ( Constants . Sql . MaxParameterCount ) )
47
+ if ( entityIds . Length == 0 )
48
48
{
49
- //copy local
50
- var localIds = groupOfGroupIds . ToArray ( ) ;
51
-
52
- if ( entityIds . Length == 0 )
49
+ foreach ( var group in groupIds . InGroupsOf ( Constants . Sql . MaxParameterCount ) )
53
50
{
54
51
var sql = Sql ( )
55
52
. SelectAll ( )
56
53
. From < UserGroup2NodePermissionDto > ( )
57
- . Where < UserGroup2NodePermissionDto > ( dto => localIds . Contains ( dto . UserGroupId ) ) ;
54
+ . Where < UserGroup2NodePermissionDto > ( dto => group . Contains ( dto . UserGroupId ) ) ;
55
+
58
56
var permissions = AmbientScope . Database . Fetch < UserGroup2NodePermissionDto > ( sql ) ;
59
57
foreach ( var permission in ConvertToPermissionList ( permissions ) )
60
58
{
61
59
result . Add ( permission ) ;
62
60
}
63
61
}
64
- else
62
+ }
63
+ else
64
+ {
65
+ foreach ( var group in entityIds . InGroupsOf ( Constants . Sql . MaxParameterCount - groupIds . Length ) )
65
66
{
66
- //iterate in groups of 2000 since we don't want to exceed the max SQL param count
67
- foreach ( var groupOfEntityIds in entityIds . InGroupsOf ( Constants . Sql . MaxParameterCount ) )
67
+ var sql = Sql ( )
68
+ . SelectAll ( )
69
+ . From < UserGroup2NodePermissionDto > ( )
70
+ . Where < UserGroup2NodePermissionDto > ( dto => groupIds . Contains ( dto . UserGroupId ) && group . Contains ( dto . NodeId ) ) ;
71
+
72
+ var permissions = AmbientScope . Database . Fetch < UserGroup2NodePermissionDto > ( sql ) ;
73
+ foreach ( var permission in ConvertToPermissionList ( permissions ) )
68
74
{
69
- var ids = groupOfEntityIds ;
70
- var sql = Sql ( )
71
- . SelectAll ( )
72
- . From < UserGroup2NodePermissionDto > ( )
73
- . Where < UserGroup2NodePermissionDto > ( dto => localIds . Contains ( dto . UserGroupId ) && ids . Contains ( dto . NodeId ) ) ;
74
- var permissions = AmbientScope . Database . Fetch < UserGroup2NodePermissionDto > ( sql ) ;
75
- foreach ( var permission in ConvertToPermissionList ( permissions ) )
76
- {
77
- result . Add ( permission ) ;
78
- }
75
+ result . Add ( permission ) ;
79
76
}
80
77
}
81
78
}
0 commit comments