protected void Page_Load(object sender, EventArgs e)
        {
            WriteScriptBlock();

            if (!IsPostBack)
            {
                RdsCollection         collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
                RdsCollectionSettings settings   = ES.Services.RDS.GetRdsCollectionSettings(PanelRequest.CollectionID);
                collection.Settings = settings;

                if (collection.Settings == null)
                {
                    collection.Settings = new RdsCollectionSettings
                    {
                        DisconnectedSessionLimitMin    = 0,
                        ActiveSessionLimitMin          = 0,
                        IdleSessionLimitMin            = 0,
                        BrokenConnectionAction         = BrokenConnectionActionValues.Disconnect.ToString(),
                        AutomaticReconnectionEnabled   = true,
                        TemporaryFoldersDeletedOnExit  = true,
                        TemporaryFoldersPerSession     = true,
                        ClientDeviceRedirectionOptions = string.Join(",", new List <string>
                        {
                            ClientDeviceRedirectionOptionValues.AudioVideoPlayBack.ToString(),
                            ClientDeviceRedirectionOptionValues.AudioRecording.ToString(),
                            ClientDeviceRedirectionOptionValues.SmartCard.ToString(),
                            ClientDeviceRedirectionOptionValues.Clipboard.ToString(),
                            ClientDeviceRedirectionOptionValues.Drive.ToString(),
                            ClientDeviceRedirectionOptionValues.PlugAndPlayDevice.ToString()
                        }.ToArray()),
                        ClientPrinterRedirected  = true,
                        ClientPrinterAsDefault   = true,
                        RDEasyPrintDriverEnabled = true,
                        MaxRedirectedMonitors    = 16,
                        EncryptionLevel          = EncryptionLevel.ClientCompatible.ToString(),
                        SecurityLayer            = SecurityLayerValues.Negotiate.ToString(),
                        AuthenticateUsingNLA     = true
                    };
                }

                litCollectionName.Text = collection.DisplayName;
                BindControls(collection);
            }
        }
        public static RdsCollectionSettings ParseCollectionSettings(List <RdsCollectionSetting> settings)
        {
            var collectionSettings = new RdsCollectionSettings();
            var properties         = typeof(RdsCollectionSettings).GetProperties().Where(p => p.Name.ToLower() != "id" && p.Name.ToLower() != "rdscollectionid");

            foreach (var prop in properties)
            {
                var values = settings.Where(s => s.PropertyName.Equals(prop.Name, StringComparison.InvariantCultureIgnoreCase));

                if (values.Count() == 1)
                {
                    switch (prop.Name.ToLower())
                    {
                    case "brokenconnectionaction":
                        prop.SetValue(collectionSettings, ((BrokenConnectionActionValues)values.First().PropertyValue).ToString(), null);
                        break;

                    case "clientdeviceredirectionoptions":
                        prop.SetValue(collectionSettings, ((ClientDeviceRedirectionOptionValues)values.First().PropertyValue).ToString(), null);
                        break;

                    case "encryptionlevel":
                        prop.SetValue(collectionSettings, ((EncryptionLevel)values.First().PropertyValue).ToString(), null);
                        break;

                    case "securitylayer":
                        prop.SetValue(collectionSettings, ((SecurityLayerValues)values.First().PropertyValue).ToString(), null);
                        break;

                    default:
                        prop.SetValue(collectionSettings, Convert.ChangeType(values.First().PropertyValue, prop.PropertyType), null);
                        break;
                    }
                }
            }

            return(collectionSettings);
        }
        private RdsCollectionSettings GetSettings(RdsCollectionSettings settings)
        {
            settings.DisconnectedSessionLimitMin  = slDisconnectedSessionLimit.SelectedLimit;
            settings.ActiveSessionLimitMin        = slActiveSessionLimit.SelectedLimit;
            settings.IdleSessionLimitMin          = slIdleSessionLimit.SelectedLimit;
            settings.AutomaticReconnectionEnabled = chAutomaticReconnection.Checked;

            if (chDisconnect.Checked)
            {
                settings.BrokenConnectionAction = BrokenConnectionActionValues.Disconnect.ToString();
            }
            else
            {
                settings.BrokenConnectionAction = BrokenConnectionActionValues.LogOff.ToString();
            }

            settings.TemporaryFoldersDeletedOnExit = chDeleteOnExit.Checked;
            settings.TemporaryFoldersPerSession    = chUseFolders.Checked;
            settings.ClientPrinterRedirected       = chPrinterRedirection.Checked;
            settings.ClientPrinterAsDefault        = chDefaultDevice.Checked;
            settings.RDEasyPrintDriverEnabled      = chEasyPrint.Checked;
            settings.MaxRedirectedMonitors         = Convert.ToInt32(tbMonitorsNumber.Text);

            List <string> redirectionOptions = new List <string>();

            if (chAudioVideo.Checked)
            {
                redirectionOptions.Add(ClientDeviceRedirectionOptionValues.AudioVideoPlayBack.ToString());
            }

            if (chAudioRecording.Checked)
            {
                redirectionOptions.Add(ClientDeviceRedirectionOptionValues.AudioRecording.ToString());
            }

            if (chSmartCards.Checked)
            {
                redirectionOptions.Add(ClientDeviceRedirectionOptionValues.SmartCard.ToString());
            }

            if (chPlugPlay.Checked)
            {
                redirectionOptions.Add(ClientDeviceRedirectionOptionValues.PlugAndPlayDevice.ToString());
            }

            if (chDrives.Checked)
            {
                redirectionOptions.Add(ClientDeviceRedirectionOptionValues.Drive.ToString());
            }

            if (chClipboard.Checked)
            {
                redirectionOptions.Add(ClientDeviceRedirectionOptionValues.Clipboard.ToString());
            }

            settings.ClientDeviceRedirectionOptions = string.Join(",", redirectionOptions.ToArray());
            settings.AuthenticateUsingNLA           = cbAuthentication.Checked;
            settings.SecurityLayer   = ddSecurityLayer.SelectedItem.Value;
            settings.EncryptionLevel = ddEncryptionLevel.SelectedItem.Value;

            return(settings);
        }