internal void SetVisibility(GroupVisibility visibility, List<Player> viewers) { switch (visibility) { case GroupVisibility.Nobody: SetFaceUp(false); break; case GroupVisibility.Everybody: SetFaceUp(true); Reveal(); break; case GroupVisibility.Undefined: if (FaceUp) Reveal(); break; case GroupVisibility.Custom: SetFaceUp(viewers.Contains(Player.LocalPlayer)); RevealTo(viewers); break; default: // could be GroupVisibilty.Owner Debug.Fail("[Card.SetVisibility] Invalid visibility!"); return; } }
private static async Task <Group> CreateGroupAsync(string accessToken, HttpClient httpClient, string displayName, string description, string classification, string mailNickname, string owner, GroupVisibility visibility) { Group group = new Group(); // get the owner if no owner was specified var ownerId = string.Empty; if (string.IsNullOrEmpty(owner)) { var user = await GraphHelper.GetAsync <User>(httpClient, "v1.0/me?$select=Id", accessToken); ownerId = user.Id; } else { var user = await GraphHelper.GetAsync <User>(httpClient, $"v1.0/users/{owner}?$select=Id", accessToken); if (user != null) { ownerId = user.Id; } else { // find the user in the organization var collection = await GraphHelper.GetAsync <GraphCollection <User> >(httpClient, "v1.0/myorganization/users?$filter=mail eq '{owner}'&$select=Id", accessToken); if (collection != null) { if (collection.Items.Any()) { ownerId = collection.Items.First().Id; } } } } group.DisplayName = displayName; group.Description = description; group.Classification = classification; group.MailEnabled = true; group.MailNickname = mailNickname ?? await CreateAliasAsync(httpClient, accessToken); group.GroupTypes = new List <string>() { "Unified" }; group.SecurityEnabled = false; group.Owners = new List <string>() { $"https://graph.microsoft.com/v1.0/users/{ownerId}" }; group.Members = new List <string>() { $"https://graph.microsoft.com/v1.0/users/{ownerId}" }; group.Visibility = visibility == GroupVisibility.NotSpecified ? GroupVisibility.Private : visibility; return(await GraphHelper.PostAsync <Group>(httpClient, "v1.0/groups", group, accessToken)); }
public static async Task <Team> NewTeamAsync(string accessToken, HttpClient httpClient, string groupId, string displayName, string description, string classification, string mailNickname, string owner, GroupVisibility visibility, TeamCreationInformation teamCI) { Group group = null; Team returnTeam = null; // Create group if (string.IsNullOrEmpty(groupId)) { group = await CreateGroupAsync(accessToken, httpClient, displayName, description, classification, mailNickname, owner, visibility); } else { group = await GraphHelper.GetAsync <Group>(httpClient, $"v1.0/groups/{groupId}", accessToken); if (group == null) { throw new PSArgumentException($"Cannot find group with id {groupId}"); } teamCI.Visibility = group.Visibility; teamCI.Description = group.Description; } if (group != null) { Team team = teamCI.ToTeam(); var teamSettings = await GraphHelper.PutAsync(httpClient, $"v1.0/groups/{group.Id}/team", team, accessToken); if (teamSettings != null) { returnTeam = await TeamsUtility.GetTeamAsync(accessToken, httpClient, group.Id); } } return(returnTeam); }
public static async Task <Team> NewTeamAsync(string accessToken, HttpClient httpClient, string groupId, string displayName, string description, string classification, string mailNickname, string owner, GroupVisibility visibility, TeamCreationInformation teamCI) { Group group = null; Team returnTeam = null; // Create group if (string.IsNullOrEmpty(groupId)) { group = await CreateGroupAsync(accessToken, httpClient, displayName, description, classification, mailNickname, owner, visibility); bool wait = true; int iterations = 0; while (wait) { iterations++; try { var createdGroup = await GraphHelper.GetAsync <Group>(httpClient, $"v1.0/groups/{group.Id}", accessToken); if (!string.IsNullOrEmpty(createdGroup.DisplayName)) { wait = false; } } catch (Exception) { // In case of exception wait for 5 secs await Task.Delay(TimeSpan.FromSeconds(5)); } // Don't wait more than 1 minute if (iterations > 12) { wait = false; } } } else { group = await GraphHelper.GetAsync <Group>(httpClient, $"v1.0/groups/{groupId}", accessToken); if (group == null) { throw new PSArgumentException($"Cannot find group with id {groupId}"); } teamCI.Visibility = group.Visibility; teamCI.Description = group.Description; } if (group != null) { Team team = teamCI.ToTeam(); var retry = true; var iteration = 0; while (retry) { try { var teamSettings = await GraphHelper.PutAsync(httpClient, $"v1.0/groups/{group.Id}/team", team, accessToken); if (teamSettings != null) { returnTeam = await TeamsUtility.GetTeamAsync(accessToken, httpClient, group.Id); } retry = false; } catch (Exception) { await Task.Delay(5000); iteration++; } if (iteration > 10) // don't try more than 10 times { retry = false; } } } return(returnTeam); }
public GrpTmp(Play.Group g, GroupVisibility vis, List <Play.Player> v) { Group = g; Visibility = vis; Viewers = v; }
private static async Task <Group> CreateGroupAsync(string accessToken, HttpClient httpClient, string displayName, string description, string classification, string mailNickname, string owner, GroupVisibility visibility, TeamsTemplateType templateType = TeamsTemplateType.None) { Group group = new Group(); // get the owner if no owner was specified var ownerId = string.Empty; if (string.IsNullOrEmpty(owner)) { var user = await GraphHelper.GetAsync <User>(httpClient, "v1.0/me?$select=Id", accessToken); ownerId = user.Id; } else { var user = await GraphHelper.GetAsync <User>(httpClient, $"v1.0/users/{owner}?$select=Id", accessToken); if (user != null) { ownerId = user.Id; } else { // find the user in the organization var collection = await GraphHelper.GetAsync <RestResultCollection <User> >(httpClient, "v1.0/myorganization/users?$filter=mail eq '{owner}'&$select=Id", accessToken); if (collection != null) { if (collection.Items.Any()) { ownerId = collection.Items.First().Id; } } } } group.DisplayName = displayName; group.Description = description; group.Classification = classification; group.MailEnabled = true; group.MailNickname = mailNickname ?? await CreateAliasAsync(httpClient, accessToken); group.GroupTypes = new List <string>() { "Unified" }; group.SecurityEnabled = false; group.Owners = new List <string>() { $"https://{PnPConnection.Current.GraphEndPoint}/v1.0/users/{ownerId}" }; group.Members = new List <string>() { $"https://{PnPConnection.Current.GraphEndPoint}/v1.0/users/{ownerId}" }; group.Visibility = visibility == GroupVisibility.NotSpecified ? GroupVisibility.Private : visibility; switch (templateType) { case TeamsTemplateType.EDU_Class: { group.Visibility = GroupVisibility.HiddenMembership; group.CreationOptions = new List <string> { "ExchangeProvisioningFlags:461", "classAssignments" }; group.EducationObjectType = "Section"; break; } case TeamsTemplateType.EDU_PLC: { group.CreationOptions = new List <string> { "PLC" }; break; } default: { group.CreationOptions = new List <string> { "ExchangeProvisioningFlags:3552" }; break; } } try { return(await GraphHelper.PostAsync <Group>(httpClient, "v1.0/groups", group, accessToken)); } catch (GraphException ex) { if (ex.Error.Message.Contains("extension_fe2174665583431c953114ff7268b7b3_Education_ObjectType")) { throw new PSInvalidOperationException("Invalid EDU license type"); } else { throw; } } }