public async Task<bool> SaveSettings(SettingsStorageModel settings)
        {
            bool result = false;
            try
            {
                using (var db = dbManager.GetConnection())
                using (var command = db.Connection.CreateCommand())
                {
                    Console.WriteLine("selecting settings, thread {0}", Thread.CurrentThread.ManagedThreadId);
                    command.CommandText = string.Format("SELECT * FROM SETTING WHERE SettingName='{0}'", settings.SettingName);
                    SettingsStorageModel settingToUpdate = null;
                    Console.WriteLine("selecting settings end, thread {0}", Thread.CurrentThread.ManagedThreadId);
                    using (var dbDataReader = await command.ExecuteReaderAsync().ConfigureAwait(false))
                    {
                        if (dbDataReader.HasRows && dbDataReader.Read())
                        {
                            settingToUpdate = new SettingsStorageModel()
                            {
                                SettingId = dbDataReader.GetInt64(0),
                                ProfileId = dbDataReader.GetInt64(1),
                                SettingName = dbDataReader.GetString(2),
                                SettingValue = settings.SettingValue
                            };
                        }
                        dbDataReader.Close();
                    }
                    if (settingToUpdate != null)
	                {
                        Console.WriteLine("updating settings, thread {0}", Thread.CurrentThread.ManagedThreadId);
                        command.CommandText = string.Format(
                            "UPDATE SETTING SET ProfileId = {0}, SettingName = '{1}', SettingValue = '{2}' WHERE SettingId = {3}",
                            settingToUpdate.ProfileId, settingToUpdate.SettingName, settingToUpdate.SettingValue, settingToUpdate.SettingId);
                    }
                    else
                    {
                        Console.WriteLine("inserting settings, thread {0}", Thread.CurrentThread.ManagedThreadId);
                        command.CommandText = string.Format("INSERT INTO SETTING(ProfileId, SettingName, SettingValue) VALUES ({0}, '{1}', '{2}')",
                            settings.ProfileId, settings.SettingName, settings.SettingValue);
                    }
                    await command.ExecuteNonQueryAsync().ConfigureAwait(false);
                    Console.WriteLine("update/insert settings end settings, thread {0}", Thread.CurrentThread.ManagedThreadId);
                }
                result = true;
                Console.WriteLine("settings db connection closed, thread {0}", Thread.CurrentThread.ManagedThreadId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("settings db connection exception, thread {0}, text: {0}", Thread.CurrentThread.ManagedThreadId, ex.Message);
                logger.Error("Exception during execution method \"SaveSettings\": {0}", ex.Message);
            }

            return result;
        }
Пример #2
0
 private SettingsModel StorageToSetting(SettingsStorageModel model)
 {
     bool value;
     bool isBool = bool.TryParse(model.SettingValue, out value);
     return new SettingsModel
     {
         SettingId = model.SettingId,
         SettingName = model.SettingName,
         SettingBoolValue = value,
         SettingStringValue = isBool ? string.Empty : model.SettingValue
     };
 }