/// <summary>
        /// Save Setting
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="userCode"></param>
        /// <param name="name"></param>
        public void SaveSetting <T>(string key, T value = default(T), string userCode = null, string name = null)
        {
            Init();

            var sqlKey = key.Trim().ToLowerInvariant();

            if (userCode != null)
            {
                sqlKey = $"{key}[{userCode}]";
            }

            if (sqlKey.Length > 30)
            {
                throw new Exception($"SQL Key '{sqlKey}' for Setting is to long (Max 30, Actual {sqlKey.Length})");
            }

            var sql = $"SELECT [U_{UdfSettingValue}], [Name] FROM [@{UdtSettings}] WHERE [Code] = '{sqlKey}'";

            bool exists;

            using (var query = new SboRecordsetQuery(sql))
            {
                exists = query.Count == 1;
            }

            var sqlValue = string.Format(CultureInfo.InvariantCulture, "'{0}'", value);

            if (value == null)
            {
                sqlValue = "NULL";
            }

            if (exists)
            {
                sql = $"UPDATE [@{UdtSettings}] SET [U_{UdfSettingValue}] = {sqlValue} WHERE [Code] = '{sqlKey}'";
            }
            else
            {
                if (sqlValue.Length > 254)
                {
                    throw new Exception($"SaveSetting sqlValue '{sqlValue}' value is to long (max 254) ");
                }

                if (name == null)
                {
                    name = sqlKey;
                }

                if (name.Length > 30)
                {
                    name = name.Substring(0, 30); // Max Length is 30
                }
                sql = $"INSERT INTO [@{UdtSettings}] ([Code], [Name], [U_{UdfSettingValue}]) VALUES ('{sqlKey}', '{name}', {sqlValue})";
            }

            SboRecordset.NonQuery(sql);
        }
Пример #2
0
        /// <summary>
        /// Save Setting
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="userCode"></param>
        /// <param name="name"></param>
        public void SaveSetting <T>(string key, T value = default(T), string userCode = null, string name = null)
        {
            Init();

            var sqlKey = key.Trim().ToLowerInvariant();

            if (userCode != null)
            {
                sqlKey = $"{key}[{userCode}]";
            }

            if (sqlKey.Length > KeyMaxLength)
            {
                throw new Exception($"SQL Key '{sqlKey}' for Setting is to long (Max {KeyMaxLength}, Actual {sqlKey.Length})");
            }

            var  sql = FrameworkQueries.Instance.SaveSettingExistsQuery(sqlKey);
            bool exists;

            using (var query = new SboRecordsetQuery(sql))
            {
                exists = query.Count == 1;
            }

            var sqlValue = string.Format(CultureInfo.InvariantCulture, "'{0}'", value);

            if (value == null)
            {
                sqlValue = "NULL";
            }

            if (exists)
            {
                sql = FrameworkQueries.Instance.SaveSettingUpdateQuery(sqlKey, sqlValue);
            }
            else
            {
                if (sqlValue.Length > ValueMaxLength)
                {
                    throw new Exception($"SaveSetting sqlValue '{sqlValue}' value is to long (max {ValueMaxLength}) ");
                }

                if (name == null)
                {
                    name = sqlKey;
                }

                if (name.Length > KeyMaxLength)
                {
                    name = name.Substring(0, KeyMaxLength); // Max Length is 50
                }
                sql = FrameworkQueries.Instance.SaveSettingInsertQuery(sqlKey, name, sqlValue);
            }

            SboRecordset.NonQuery(sql);
        }
Пример #3
0
        public static void Init(TestContext textContext)
        {
            SboApp.Connect(SboApp.DebugConnectionString);

            SboRecordset.NonQuery("DELETE FROM [@ITCO_FW_SETTINGS] WHERE [Code] LIKE 'test%'");
        }