private async Task<PrincipalsViewModel> GetUsers(string nameToSearch, IGraphServiceUsersCollectionRequest request = null)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            var filteredUsers = await graphClient.Users.Request()
                    .Select("DisplayName,UserPrincipalName,Mail")
                    .Filter($"startswith(DisplayName,'{nameToSearch}') or startswith(UserPrincipalName,'{nameToSearch}') or startswith(Mail,'{nameToSearch}')")
                    .GetAsync();

            var t = await MapUsers(filteredUsers);
            result.Principals.AddRange(t.Principals);

            if (filteredUsers.NextPageRequest != null)
            {
                var additionalUsers = await GetUsers(nameToSearch, filteredUsers.NextPageRequest);

                if (additionalUsers.Principals.Count > 0)
                {
                    result.Principals.AddRange(additionalUsers.Principals);
                }
            }

            return result;
        }
Пример #2
0
        private async Task <PrincipalsViewModel> GetUsers(string nameToSearch, IGraphServiceUsersCollectionRequest request = null)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            var filteredUsers = await graphClient.Users.Request()
                                .Select("DisplayName,UserPrincipalName,Mail")
                                .Filter($"startswith(DisplayName,'{nameToSearch}') or startswith(UserPrincipalName,'{nameToSearch}') or startswith(Mail,'{nameToSearch}')")
                                .GetAsync();

            var t = await MapUsers(filteredUsers);

            result.Principals.AddRange(t.Principals);

            if (filteredUsers.NextPageRequest != null)
            {
                var additionalUsers = await GetUsers(nameToSearch, filteredUsers.NextPageRequest);

                if (additionalUsers.Principals.Count > 0)
                {
                    result.Principals.AddRange(additionalUsers.Principals);
                }
            }

            return(result);
        }
Пример #3
0
        public async Task <PrincipalsViewModel> GetPeoplePickerSearchData(string nameToSearch, bool searchGroups = true, List <Guid> validationSkus = null, int maxResultCount = 6)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            try
            {
                var filteredUsers = await GetUsers(nameToSearch);

                result.Principals.AddRange(filteredUsers.Principals);

                if (searchGroups)
                {
                    var filteredGroups = await GetGroups(nameToSearch);

                    result.Principals.AddRange(filteredGroups.Principals);
                }

                if (result.Principals.Count > maxResultCount)
                {
                    result.Principals = result.Principals.Take(maxResultCount).ToList();
                }
            }
            catch (Exception e)
            {
                // TODO: Handle exceptions with specific JSON response
                throw e;
            }

            return(result);
        }
Пример #4
0
        private async Task <PrincipalsViewModel> GetGroups(string nameToSearch, IGraphServiceGroupsCollectionRequest request = null)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            var filteredGroups = await graphClient.Groups.Request()
                                 .Select("DisplayName,Description")
                                 .Filter("groupTypes/any(grp: grp ne 'Unified')") //DynamicMembership
                                 .GetAsync();

            var t = await MapGroups(filteredGroups);

            result.Principals.AddRange(t.Principals);

            if (filteredGroups.NextPageRequest != null)
            {
                var additionalGroups = await GetGroups(nameToSearch, filteredGroups.NextPageRequest);

                if (additionalGroups.Principals.Count > 0)
                {
                    result.Principals.AddRange(additionalGroups.Principals);
                }
            }

            return(result);
        }
        public async Task<PrincipalsViewModel> GetPeoplePickerSearchData(string nameToSearch, bool searchGroups = true, List<Guid> validationSkus = null, int maxResultCount = 6)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();
            try
            {
                var filteredUsers = await GetUsers(nameToSearch);
                result.Principals.AddRange(filteredUsers.Principals);

                if (searchGroups)
                {
                    var filteredGroups = await GetGroups(nameToSearch);
                    result.Principals.AddRange(filteredGroups.Principals);
                }

                if (result.Principals.Count > maxResultCount)
                {
                    result.Principals = result.Principals.Take(maxResultCount).ToList();
                }
            }
            catch (Exception e)
            {
                // TODO: Handle exceptions with specific JSON response
                throw e;
            }

            return result;
        }
Пример #6
0
        private async Task <PrincipalsViewModel> MapUsers(IGraphServiceUsersCollectionPage source)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            if (source != null)
            {
                foreach (var u in source.Where(us => !String.IsNullOrEmpty(us.Mail)))
                {
                    result.Principals.Add(await MapUser(u));
                }
            }

            return(result);
        }
Пример #7
0
        private async Task <PrincipalsViewModel> MapGroups(IGraphServiceGroupsCollectionPage source)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            if (source != null)
            {
                foreach (var g in source)
                {
                    result.Principals.Add(await MapGroup(g));
                }
            }

            return(result);
        }
        private async Task<PrincipalsViewModel> MapUsers(IGraphServiceUsersCollectionPage source)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            if (source != null)
            {
                foreach (var u in source.Where(us => !String.IsNullOrEmpty(us.Mail)))
                {
                    result.Principals.Add(await MapUser(u));
                }
            }

            return result;
        }
Пример #9
0
        private async Task <PrincipalsViewModel> MapUsers(IGraphServiceUsersCollectionPage source)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            if (source != null)
            {
                foreach (var u in source)
                {
                    u.Mail = (string.IsNullOrEmpty(u.Mail)) ? u.UserPrincipalName : u.Mail;
                    result.Principals.Add(await MapUser(u));
                }
            }

            return(result);
        }
        private async Task<PrincipalsViewModel> MapGroups(IGraphServiceGroupsCollectionPage source)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            if (source != null)
            {
                foreach (var g in source)
                {
                    result.Principals.Add(await MapGroup(g));
                }
            }

            return result;
        }
        private async Task<PrincipalsViewModel> GetGroups(string nameToSearch, IGraphServiceGroupsCollectionRequest request = null)
        {
            PrincipalsViewModel result = new PrincipalsViewModel();

            var filteredGroups = await graphClient.Groups.Request()
                    .Select("DisplayName,Description")
                    .Filter("groupTypes/any(grp: grp ne 'Unified')") //DynamicMembership 
                    .GetAsync();

            var t = await MapGroups(filteredGroups);
            result.Principals.AddRange(t.Principals);

            if (filteredGroups.NextPageRequest != null)
            {
                var additionalGroups = await GetGroups(nameToSearch, filteredGroups.NextPageRequest);

                if (additionalGroups.Principals.Count > 0)
                {
                    result.Principals.AddRange(additionalGroups.Principals);
                }
            }

            return result;
        }