protected override void ExecuteCmdlet() { var teamCI = new TeamCreationInformation() { AllowAddRemoveApps = AllowAddRemoveApps, AllowChannelMentions = AllowChannelMentions, AllowCreateUpdateChannels = AllowCreateUpdateChannels, AllowCreateUpdateRemoveConnectors = AllowCreateUpdateRemoveConnectors, AllowCreateUpdateRemoveTabs = AllowCreateUpdateRemoveTabs, AllowCustomMemes = AllowCustomMemes, AllowDeleteChannels = AllowDeleteChannels, AllowGiphy = AllowGiphy, AllowGuestCreateUpdateChannels = AllowGuestCreateUpdateChannels, AllowGuestDeleteChannels = AllowGuestDeleteChannels, AllowOwnerDeleteMessages = AllowOwnerDeleteMessages, AllowStickersAndMemes = AllowStickersAndMemes, AllowTeamMentions = AllowTeamMentions, AllowUserDeleteMessages = AllowUserDeleteMessages, AllowUserEditMessages = AllowUserEditMessages, Classification = Classification, Description = Description, DisplayName = DisplayName, GiphyContentRating = GiphyContentRating, GroupId = GroupId, ShowInTeamsSearchAndSuggestions = ShowInTeamsSearchAndSuggestions, Visibility = (GroupVisibility)Enum.Parse(typeof(GroupVisibility), Visibility.ToString()), AllowCreatePrivateChannels = AllowCreatePrivateChannels, }; WriteObject(TeamsUtility.NewTeamAsync(AccessToken, HttpClient, GroupId, DisplayName, Description, Classification, MailNickName, Owner, (GroupVisibility)Enum.Parse(typeof(GroupVisibility), Visibility.ToString()), teamCI, Template, ResourceBehaviorOptions).GetAwaiter().GetResult()); }
protected override void ExecuteCmdlet() { var groupId = Identity.GetGroupId(HttpClient, AccessToken); if (groupId != null) { try { var team = TeamsUtility.GetTeamAsync(AccessToken, HttpClient, groupId).GetAwaiter().GetResult(); var updateGroup = false; var group = new Group(); if (team != null) { if (ParameterSpecified(nameof(DisplayName)) && team.DisplayName != DisplayName) { updateGroup = true; group.DisplayName = DisplayName; } else { team.DisplayName = null; } if (ParameterSpecified(nameof(Description)) && team.Description != Description) { updateGroup = true; group.Description = Description; } else { team.Description = null; } if (ParameterSpecified(nameof(Visibility)) && (GroupVisibility)Enum.Parse(typeof(GroupVisibility), Visibility.ToString()) != team.Visibility) { group.Visibility = (GroupVisibility)Enum.Parse(typeof(GroupVisibility), Visibility.ToString()); updateGroup = true; } team.IsArchived = null; // cannot update this value; if (updateGroup) { TeamsUtility.UpdateGroupAsync(HttpClient, AccessToken, groupId, group).GetAwaiter().GetResult(); } var teamCI = new TeamCreationInformation(); teamCI.AllowAddRemoveApps = ParameterSpecified(nameof(AllowAddRemoveApps)) ? AllowAddRemoveApps : null; teamCI.AllowChannelMentions = ParameterSpecified(nameof(AllowChannelMentions)) ? AllowChannelMentions : null; teamCI.AllowCreateUpdateChannels = ParameterSpecified(nameof(AllowCreateUpdateChannels)) ? AllowCreateUpdateChannels : null; teamCI.AllowCreateUpdateRemoveConnectors = ParameterSpecified(nameof(AllowCreateUpdateRemoveConnectors)) ? AllowCreateUpdateRemoveConnectors : null; teamCI.AllowCreateUpdateRemoveTabs = ParameterSpecified(nameof(AllowCreateUpdateRemoveTabs)) ? AllowCreateUpdateRemoveTabs : null; teamCI.AllowCustomMemes = ParameterSpecified(nameof(AllowCustomMemes)) ? AllowCustomMemes : null; teamCI.AllowDeleteChannels = ParameterSpecified(nameof(AllowDeleteChannels)) ? AllowDeleteChannels : null; teamCI.AllowGiphy = ParameterSpecified(nameof(AllowGiphy)) ? AllowGiphy : null; teamCI.AllowGuestCreateUpdateChannels = ParameterSpecified(nameof(AllowGuestCreateUpdateChannels)) ? AllowGuestCreateUpdateChannels : null; teamCI.AllowGuestDeleteChannels = ParameterSpecified(nameof(AllowGuestDeleteChannels)) ? AllowGuestDeleteChannels : null; teamCI.AllowOwnerDeleteMessages = ParameterSpecified(nameof(AllowOwnerDeleteMessages)) ? AllowOwnerDeleteMessages : null; teamCI.AllowStickersAndMemes = ParameterSpecified(nameof(AllowStickersAndMemes)) ? AllowStickersAndMemes : null; teamCI.AllowTeamMentions = ParameterSpecified(nameof(AllowTeamMentions)) ? AllowTeamMentions : null; teamCI.AllowUserDeleteMessages = ParameterSpecified(nameof(AllowUserDeleteMessages)) ? AllowUserDeleteMessages : null; teamCI.AllowUserEditMessages = ParameterSpecified(nameof(AllowUserEditMessages)) ? AllowUserEditMessages : null; teamCI.Classification = ParameterSpecified(nameof(Classification)) ? Classification : null; var updated = TeamsUtility.UpdateTeamAsync(HttpClient, AccessToken, groupId, teamCI.ToTeam()).GetAwaiter().GetResult(); WriteObject(updated); } } catch (GraphException ex) { if (ex.Error != null) { throw new PSInvalidOperationException(ex.Error.Message); } else { throw; } } } else { throw new PSArgumentException("Team not found"); } }
public static Team NewTeam(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 = CreateGroup(accessToken, httpClient, displayName, description, classification, mailNickname, owner, visibility); } else { group = GraphHelper.GetAsync <Group>(httpClient, $"v1.0/groups/{groupId}", accessToken).GetAwaiter().GetResult(); 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 = GraphHelper.PutAsync(httpClient, $"v1.0/groups/{group.Id}/team", team, accessToken).GetAwaiter().GetResult(); if (teamSettings != null) { returnTeam = TeamsUtility.GetTeam(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, TeamsTemplateType templateType = TeamsTemplateType.None, TeamResourceBehaviorOptions?[] resourceBehaviorOptions = null) { Group group = null; Team returnTeam = null; // Create group if (string.IsNullOrEmpty(groupId)) { group = await CreateGroupAsync(accessToken, httpClient, displayName, description, classification, mailNickname, owner, visibility, templateType, resourceBehaviorOptions); 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(group.Visibility); 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); }