private async Task PutCSEntryChangeUpdateTeam(CSEntryChange csentry) { string teamid = csentry.GetAnchorValueOrDefault <string>("id"); Beta.Team team = new Beta.Team(); team.MemberSettings = new Beta.TeamMemberSettings(); team.MemberSettings.ODataType = null; team.GuestSettings = new Beta.TeamGuestSettings(); team.GuestSettings.ODataType = null; team.MessagingSettings = new Beta.TeamMessagingSettings(); team.MessagingSettings.ODataType = null; team.FunSettings = new Beta.TeamFunSettings(); team.FunSettings.ODataType = null; bool changed = false; foreach (AttributeChange change in csentry.AttributeChanges) { if (!SchemaProvider.TeamsProperties.Contains(change.Name)) { continue; } if (change.Name == "visibility") { throw new InitialFlowAttributeModificationException("visibility"); } else if (change.Name == "template") { throw new InitialFlowAttributeModificationException("template"); } if (change.ModificationType == AttributeModificationType.Delete) { if (change.DataType == AttributeType.Boolean) { throw new UnsupportedBooleanAttributeDeleteException(change.Name); } else { throw new UnsupportedAttributeModificationException($"Deleting the value of attribute {change.Name} is not supported"); } } if (change.Name == "memberSettings_allowCreateUpdateChannels") { team.MemberSettings.AllowCreateUpdateChannels = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowDeleteChannels") { team.MemberSettings.AllowDeleteChannels = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowAddRemoveApps") { team.MemberSettings.AllowAddRemoveApps = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowCreateUpdateRemoveTabs") { team.MemberSettings.AllowCreateUpdateRemoveTabs = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowCreateUpdateRemoveConnectors") { team.MemberSettings.AllowCreateUpdateRemoveConnectors = change.GetValueAdd <bool>(); } else if (change.Name == "guestSettings_allowCreateUpdateChannels") { team.GuestSettings.AllowCreateUpdateChannels = change.GetValueAdd <bool>(); } else if (change.Name == "guestSettings_allowDeleteChannels") { team.GuestSettings.AllowDeleteChannels = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowUserEditMessages") { team.MessagingSettings.AllowUserEditMessages = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowUserDeleteMessages") { team.MessagingSettings.AllowUserDeleteMessages = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowOwnerDeleteMessages") { team.MessagingSettings.AllowOwnerDeleteMessages = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowTeamMentions") { team.MessagingSettings.AllowTeamMentions = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowChannelMentions") { team.MessagingSettings.AllowChannelMentions = change.GetValueAdd <bool>(); } else if (change.Name == "funSettings_allowGiphy") { team.FunSettings.AllowGiphy = change.GetValueAdd <bool>(); } else if (change.Name == "funSettings_giphyContentRating") { string value = change.GetValueAdd <string>(); if (!Enum.TryParse <Beta.GiphyRatingType>(value, false, out Beta.GiphyRatingType result)) { throw new UnsupportedAttributeModificationException($"The value '{result}' provided for attribute 'funSettings_giphyContentRating' was not supported. Allowed values are {string.Join(",", Enum.GetNames(typeof(Beta.GiphyRatingType)))}"); } team.FunSettings.GiphyContentRating = result; } else if (change.Name == "funSettings_allowStickersAndMemes") { team.FunSettings.AllowStickersAndMemes = change.GetValueAdd <bool>(); } else if (change.Name == "funSettings_allowCustomMemes") { team.FunSettings.AllowCustomMemes = change.GetValueAdd <bool>(); } else { continue; } changed = true; } if (changed) { logger.Trace($"{csentry.DN}:Updating team data: {JsonConvert.SerializeObject(team)}"); await GraphHelperTeams.UpdateTeam(this.betaClient, teamid, team, this.token); logger.Info($"{csentry.DN}: Updated team"); } }
private async Task PutCSEntryChangeUpdateTeam(CSEntryChange csentry) { Beta.Team team = new Beta.Team(); team.MemberSettings = new Beta.TeamMemberSettings(); team.MemberSettings.ODataType = null; team.GuestSettings = new Beta.TeamGuestSettings(); team.GuestSettings.ODataType = null; team.MessagingSettings = new Beta.TeamMessagingSettings(); team.MessagingSettings.ODataType = null; team.FunSettings = new Beta.TeamFunSettings(); team.FunSettings.ODataType = null; bool changed = false; foreach (AttributeChange change in csentry.AttributeChanges) { if (!SchemaProvider.TeamsFromGroupProperties.Contains(change.Name)) { continue; } if (change.ModificationType == AttributeModificationType.Delete) { throw new UnknownOrUnsupportedModificationTypeException($"The property {change.Name} cannot be deleted. If it is a boolean value, set it to false"); } if (change.Name == "template") { throw new UnexpectedDataException("The template parameter can only be supplied during an 'add' operation"); } else if (change.Name == "isArchived") { team.IsArchived = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowCreateUpdateChannels") { team.MemberSettings.AllowCreateUpdateChannels = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowDeleteChannels") { team.MemberSettings.AllowDeleteChannels = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowAddRemoveApps") { team.MemberSettings.AllowAddRemoveApps = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowCreateUpdateRemoveTabs") { team.MemberSettings.AllowCreateUpdateRemoveTabs = change.GetValueAdd <bool>(); } else if (change.Name == "memberSettings_allowCreateUpdateRemoveConnectors") { team.MemberSettings.AllowCreateUpdateRemoveConnectors = change.GetValueAdd <bool>(); } else if (change.Name == "guestSettings_allowCreateUpdateChannels") { team.GuestSettings.AllowCreateUpdateChannels = change.GetValueAdd <bool>(); } else if (change.Name == "guestSettings_allowDeleteChannels") { team.GuestSettings.AllowDeleteChannels = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowUserEditMessages") { team.MessagingSettings.AllowUserEditMessages = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowUserDeleteMessages") { team.MessagingSettings.AllowUserDeleteMessages = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowOwnerDeleteMessages") { team.MessagingSettings.AllowOwnerDeleteMessages = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowTeamMentions") { team.MessagingSettings.AllowTeamMentions = change.GetValueAdd <bool>(); } else if (change.Name == "messagingSettings_allowChannelMentions") { team.MessagingSettings.AllowChannelMentions = change.GetValueAdd <bool>(); } else if (change.Name == "funSettings_allowGiphy") { team.FunSettings.AllowGiphy = change.GetValueAdd <bool>(); } else if (change.Name == "funSettings_giphyContentRating") { string value = change.GetValueAdd <string>(); if (!Enum.TryParse <Beta.GiphyRatingType>(value, false, out Beta.GiphyRatingType result)) { throw new UnexpectedDataException($"The value '{value}' was not a supported value for funSettings_giphyContentRating. Supported values are (case sensitive) 'Strict' or 'Moderate'"); } team.FunSettings.GiphyContentRating = result; } else if (change.Name == "funSettings_allowStickersAndMemes") { team.FunSettings.AllowStickersAndMemes = change.GetValueAdd <bool>(); } else if (change.Name == "funSettings_allowCustomMemes") { team.FunSettings.AllowCustomMemes = change.GetValueAdd <bool>(); } else { continue; } changed = true; } if (changed) { logger.Trace($"{csentry.DN}:Updating team data: {JsonConvert.SerializeObject(team)}"); await GraphHelperTeams.UpdateTeam(this.betaClient, csentry.DN, team, this.token); logger.Info($"{csentry.DN}: Updated team"); } }