public IList <ConfigParameterDefinition> GetConfigParametersEx(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page, int pageNumber)
 {
     if (pageNumber == 1)
     {
         return(ManagementAgentParameters.GetParameters(configParameters, page));
     }
     else
     {
         return(new List <ConfigParameterDefinition>());
     }
 }
 public ParameterValidationResult ValidateConfigParametersEx(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page, int pageNumber)
 {
     if (pageNumber == 1)
     {
         ManagementAgentParameters parameters = new ManagementAgentParameters(configParameters);
         return(parameters.ValidateParameters(page));
     }
     else
     {
         return(new ParameterValidationResult(ParameterValidationResultCode.Success, null, null));
     }
 }
        public ParameterValidationResult ValidateConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            ManagementAgentParameters parameters = new ManagementAgentParameters(configParameters);

            return(parameters.ValidateParameters(page));
        }
 public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
 {
     return(ManagementAgentParameters.GetParameters(configParameters, page));
 }
        public static IList <ConfigParameterDefinition> GetParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> parameters = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Capabilities:
                break;

            case ConfigParameterPage.Connectivity:
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Credentials"));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.CustomerIDParameter, null, "my_customer"));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.DomainParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.ServiceAccountEmailAddressParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.UserEmailAddressParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.KeyFilePathParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(ManagementAgentParametersBase.KeyFilePasswordParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.LogFilePathParameter, null));
                break;

            case ConfigParameterPage.Global:
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.UserRegexFilterParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.GroupRegexFilterParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.ContactRegexFilterParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.ExcludeUserCreatedGroupsParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("The Google API supports filtering users based on query parameters. For example, to filter on org unit, type 'orgUnitPath=/MyOrgUnit'. Refer to the API documentation at https://developers.google.com/admin-sdk/directory/v1/guides/search-users for more information"));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.UserQueryFilterParameter, null, null));

                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.InheritGroupRolesParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Inheriting group roles forces the MA to include owners in the managers list, and managers in the members list"));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.CalendarSendNotificationOnPermissionChangeParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.ContactsPrefixParameter, null, "contact:"));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.SkipMemberImportOnArchivedCoursesParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Skipping import of students and teachers on ARCHIVED Courses can speed up import if you have many Archived course objects."));

                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.DoNotGenerateDeltaParameter, false));

                break;

            case ConfigParameterPage.Schema:
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("The values from the following objects are flattened based on the type of object specified. Enter the types you wish to expose, each on a separate line (ctrl-enter for a new line). For example, entering 'work' and 'home' in the phone numbers text box will expose the attributes phones_work and phones_home"));
                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.PhonesFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.OrganizationsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.IMsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.ExternalIDsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.RelationsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.AddressesFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.EmailsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.WebsitesFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateDropDownParameter(ManagementAgentParametersBase.CalendarBuildingAttributeTypeParameter, new string[] { "String", "Reference" }, false, "String"));
                parameters.Add(ConfigParameterDefinition.CreateDropDownParameter(ManagementAgentParametersBase.CalendarFeatureAttributeTypeParameter, new string[] { "String", "Reference" }, false, "String"));
                parameters.Add(ConfigParameterDefinition.CreateDropDownParameter(ManagementAgentParametersBase.GroupMemberAttributeTypeParameter, new string[] { "String", "Reference" }, false, "Reference"));

                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Specify additional custom user object classes to expose. (Press ctrl+enter for each new line)"));
                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.CustomUserObjectClassesParameter, null));

                var config = new ManagementAgentParameters(configParameters);

                if (config.KeyFilePath != null && !string.IsNullOrEmpty(config.KeyFilePassword) && config.Certificate != null)
                {
                    parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                    parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.EnableAdvancedUserAttributesParameter, false));
                    parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Enabling advanced user attributes enables managing delegate and send-as settings, however this can significantly slow down the speed of full imports. A separate API call must be made for every user during the import process for each of these selected attributes."));
                    parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.MakeNewSendAsAddressesDefaultParameter, false));
                }

                break;

            default:
                break;
            }

            return(parameters);
        }