private async Task <CSEntryChangeResult> PutCSEntryChangeUpdate(CSEntryChange csentry) { string teamid = csentry.GetAnchorValueOrDefault <string>("id"); bool archive = false; bool unarchive = false; if (csentry.HasAttributeChange("isArchived")) { logger.Trace("Archive state is changing"); if (csentry.AttributeChanges["isArchived"].ModificationType == AttributeModificationType.Delete) { throw new UnsupportedBooleanAttributeDeleteException("isArchived"); } var team = await GraphHelperTeams.GetTeam(this.betaClient, teamid, this.token); bool currentState = false; if (team.IsArchived == null) { logger.Trace("Current archive state value was null"); } else { currentState = team.IsArchived.Value; } logger.Trace($"Teams current archive state is {currentState}"); bool futureState = csentry.GetValueAdd <bool>("isArchived"); logger.Trace($"Requested archive state is {futureState}"); if (futureState != currentState) { if (futureState) { archive = true; logger.Trace("Flagging team for archiving"); } else { unarchive = true; logger.Trace("Flagging team for unarchiving"); } } else { logger.Trace("Current archive state matches target archive state"); } } else { logger.Trace("Archive state has not changed"); } if (unarchive) { await this.PutCSEntryChangeUpdateUnarchive(csentry); } await this.PutCSEntryChangeUpdateTeam(csentry); if (archive) { await this.PutCSEntryChangeUpdateArchive(csentry); } await this.PutCSEntryChangeUpdateGroup(csentry); return(CSEntryChangeResult.Create(csentry.Identifier, null, MAExportError.Success)); }
private async Task TeamToCSEntryChange(CSEntryChange c, SchemaType schemaType) { Beta.Team team = await GraphHelperTeams.GetTeam(this.betaClient, c.DN, this.token); foreach (SchemaAttribute type in schemaType.Attributes) { switch (type.Name) { case "isArchived": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.IsArchived ?? false)); break; case "memberSettings_allowCreateUpdateChannels": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MemberSettings.AllowCreateUpdateChannels ?? false)); break; case "memberSettings_allowDeleteChannels": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MemberSettings.AllowDeleteChannels ?? false)); break; case "memberSettings_allowAddRemoveApps": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MemberSettings.AllowAddRemoveApps ?? false)); break; case "memberSettings_allowCreateUpdateRemoveTabs": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MemberSettings.AllowCreateUpdateRemoveTabs ?? false)); break; case "memberSettings_allowCreateUpdateRemoveConnectors": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MemberSettings.AllowCreateUpdateRemoveConnectors ?? false)); break; case "guestSettings_allowCreateUpdateChannels": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.GuestSettings.AllowCreateUpdateChannels ?? false)); break; case "guestSettings_allowDeleteChannels": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.GuestSettings.AllowDeleteChannels ?? false)); break; case "messagingSettings_allowUserEditMessages": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MessagingSettings.AllowUserEditMessages ?? false)); break; case "messagingSettings_allowUserDeleteMessages": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MessagingSettings.AllowUserDeleteMessages ?? false)); break; case "messagingSettings_allowOwnerDeleteMessages": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MessagingSettings.AllowOwnerDeleteMessages ?? false)); break; case "messagingSettings_allowTeamMentions": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MessagingSettings.AllowTeamMentions ?? false)); break; case "messagingSettings_allowChannelMentions": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.MessagingSettings.AllowChannelMentions ?? false)); break; case "funSettings_allowGiphy": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.FunSettings.AllowGiphy ?? false)); break; case "funSettings_giphyContentRating": if (team.FunSettings.GiphyContentRating != null) { c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.FunSettings.GiphyContentRating.ToString())); } break; case "funSettings_allowStickersAndMemes": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.FunSettings.AllowStickersAndMemes ?? false)); break; case "funSettings_allowCustomMemes": c.AttributeChanges.Add(AttributeChange.CreateAttributeAdd(type.Name, team.FunSettings.AllowCustomMemes ?? false)); break; } } }