private DataAccessGroupInfoCollection LoadDataAccessGroupInfo()
        {
            using (AuthorityManagement service = new AuthorityManagement())
            {
                var dataGroups = service.ListDataAccessAuthorityGroupDetails();

                // Include those that are not data access groups but have access to all partitions
                var accessToAllPartitionGroups = CollectionUtils.Select(service.ListAllAuthorityGroupDetails(),
                                                                        g => HasToken(g.AuthorityTokens, ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions));

                var combinedGroups = new List <AuthorityGroupDetail>();
                combinedGroups.AddRange(dataGroups);
                foreach (var g in accessToAllPartitionGroups)
                {
                    if (combinedGroups.Find(item => item.AuthorityGroupRef.Equals(g.AuthorityGroupRef, true)) == null)
                    {
                        combinedGroups.Add(g);
                    }
                }

                //convert to DataAccessGroupInfo for sorting
                var list = new DataAccessGroupInfoCollection(CollectionUtils.Map <AuthorityGroupDetail, DataAccessGroupInfo>(combinedGroups,
                                                                                                                             (group) =>
                {
                    var authorityRecordRef        = group.AuthorityGroupRef.ToString(false, false);
                    var fullServerPartitionAccess = HasToken(group.AuthorityTokens, ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions);
                    var allStudiesAccess          = HasToken(group.AuthorityTokens, ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllStudies);
                    return(new DataAccessGroupInfo(authorityRecordRef, group.Name)
                    {
                        Description = group.Description,
                        HasAccessToCurrentPartition = fullServerPartitionAccess || (Partition != null && Partition.Key != null && Partition.IsAuthorityGroupAllowed(authorityRecordRef)),
                        CanAccessAllPartitions = fullServerPartitionAccess,
                        CanAccessAllStudies = allStudiesAccess
                    });
                }));

                list.Sort(new DatagroupComparer());

                return(list);
            }
        }
        private DataAccessGroupInfoCollection LoadDataAccessGroupInfo()
        {
            using (AuthorityManagement service = new AuthorityManagement())
            {
                var dataGroups = service.ListDataAccessAuthorityGroupDetails();

                // Include those that are not data access groups but have access to all partitions
                var accessToAllPartitionGroups = CollectionUtils.Select(service.ListAllAuthorityGroupDetails(),
                            g => HasToken(g.AuthorityTokens, ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions));

                var combinedGroups = new List<AuthorityGroupDetail>();
                combinedGroups.AddRange(dataGroups);
                foreach(var g in accessToAllPartitionGroups){
                    if (combinedGroups.Find(item=>item.AuthorityGroupRef.Equals(g.AuthorityGroupRef, true))==null)
                    {
                        combinedGroups.Add(g);
                    }
                }

                //convert to DataAccessGroupInfo for sorting
                var list = new DataAccessGroupInfoCollection(CollectionUtils.Map<AuthorityGroupDetail, DataAccessGroupInfo>(combinedGroups,
                    (group) =>
                    {

                        var authorityRecordRef = group.AuthorityGroupRef.ToString(false, false);
                        var fullServerPartitionAccess = HasToken(group.AuthorityTokens, ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions);
                        var allStudiesAccess = HasToken(group.AuthorityTokens, ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllStudies);
                        return new DataAccessGroupInfo(authorityRecordRef, group.Name)
                        {
                            Description = group.Description,
                            HasAccessToCurrentPartition = fullServerPartitionAccess || (Partition != null && Partition.Key != null && Partition.IsAuthorityGroupAllowed(authorityRecordRef)),
                            CanAccessAllPartitions = fullServerPartitionAccess,
                            CanAccessAllStudies = allStudiesAccess
                        };
                    }));

                list.Sort(new DatagroupComparer());

                return list;
            }
        }