示例#1
0
        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));
        }
示例#2
0
        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;
                }
            }
        }