using System.Collections.Generic; using System.Linq; using BS.Shared.DataContracts; namespace BS.Shared.Core { public class UserSettingsUtils { public static string CreateNewSettingValue(string settings, string key, string val) { if(string.IsNullOrEmpty(settings)) { return key + "=" + val; } var keyValuePairs = settings.Split(';'); var newValue = string.Empty; foreach(var pair in keyValuePairs) { if(pair.IndexOf(key + "=") != 0) { if(newValue.Length > 0) { newValue += ";"; } newValue += pair; } } if(newValue.Length > 0) { newValue += ";"; } newValue += key + "=" + val; return newValue; } public static string GetSettingValue(string settings, string key) { if(!string.IsNullOrEmpty(settings)) { if(settings.IndexOf(";") == -1 && settings.IndexOf("=") == -1) { return settings; } var keyValuePairs = settings.Split(';'); return (from pair in keyValuePairs select pair.Split('=') into keyValuePair where keyValuePair.Length == 2 where keyValuePair[0] == key select keyValuePair[1]).FirstOrDefault(); } return null; } public static SettingsDC GetSettingValue(SettingsType pType, List pSettings) { return pSettings?.FirstOrDefault(s => s.Type == pType); } public static string GetSettingValue(SettingsType pType, string key, List pSettings) { var dc = GetSettingValue(pType, pSettings); return dc != null ? GetSettingValue(dc.Value, key) : null; } public static void SetSettingValue(SettingsType pType, string key, string val, List pSettings) { var dc = GetSettingValue(pType, pSettings); if(dc == null) { var newDc = new SettingsDC { Type = pType, Value = CreateNewSettingValue(string.Empty, key, val) }; pSettings.Add(newDc); } else { dc.Value = CreateNewSettingValue(dc.Value, key, val); } } } }