From 9bc74c4b18ecb51c60faa3fd6cfa7f3e0d20d0cf Mon Sep 17 00:00:00 2001 From: "Antti K. Koskela" Date: Sun, 16 Oct 2022 22:08:34 +0300 Subject: [PATCH] Implements advanced queries to Get-PnPTeamsTeam --- documentation/Get-PnPTeamsTeam.md | 9 ++++++++- src/Commands/Utilities/TeamsUtility.cs | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/documentation/Get-PnPTeamsTeam.md b/documentation/Get-PnPTeamsTeam.md index 467b08b71..647026214 100644 --- a/documentation/Get-PnPTeamsTeam.md +++ b/documentation/Get-PnPTeamsTeam.md @@ -25,7 +25,7 @@ Get-PnPTeamsTeam [-Identity ] [-Filter ] [> GetGroupsWithTeamAsync(PnPConnection connection, string accessToken, string filter = null) { + Dictionary additionalHeaders = null; + string requestUrl; + if (String.IsNullOrEmpty(filter)) { filter = "resourceProvisioningOptions/Any(x:x eq 'Team')"; + + requestUrl = $"v1.0/groups?$filter={filter}&$select=Id,DisplayName,MailNickName,Description,Visibility&$top={PageSize}"; + } else { filter = $"({filter}) and resourceProvisioningOptions/Any(x:x eq 'Team')"; + + // This query requires ConsistencyLevel header to be set, since "Filter" could have some advanced queries supplied by the user. + additionalHeaders = new Dictionary(); + additionalHeaders.Add("ConsistencyLevel", "eventual"); + + // $count=true needs to be here for reasons + // see this for some additional details: https://learn.microsoft.com/en-us/graph/aad-advanced-queries?tabs=http#group-properties + requestUrl = $"v1.0/groups?$filter={filter}&$select=Id,DisplayName,MailNickName,Description,Visibility&$top={PageSize}&$count=true"; } - var collection = await GraphHelper.GetResultCollectionAsync(connection, $"v1.0/groups?$filter={filter}&$select=Id,DisplayName,MailNickName,Description,Visibility&$top={PageSize}", accessToken); + + var collection = await GraphHelper.GetResultCollectionAsync(connection, requestUrl, accessToken, additionalHeaders: additionalHeaders); return collection.ToList(); }