public async Task <bool> Insert(Core.Models.Setting configuration) { if (configuration == null) { return(false); } using (var transaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false)) { try { _context.Settings.Add(new Models.Setting { Key = configuration.Key, Value = configuration.Value }); await _context.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); return(true); } catch (Exception ex) { _configurationEventSource.Failure(ex); transaction.Rollback(); return(false); } } }
public async Task <bool> Update(Core.Models.Setting conf) { if (conf == null || string.IsNullOrWhiteSpace(conf.Key)) { return(false); } using (var transaction = await _idServerConfigurationDbContext.Database.BeginTransactionAsync().ConfigureAwait(false)) { using (var secondTransaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false)) { try { var configuration = await _idServerConfigurationDbContext.Settings.FirstOrDefaultAsync(c => c.Key == conf.Key).ConfigureAwait(false); configuration.Value = conf.Value; int lifeTime; if ((conf.Key == Core.Constants.SettingNames.ExpirationTimeName || conf.Key == Core.Constants.SettingNames.AuthorizationCodeExpirationTimeName) && int.TryParse(conf.Value, out lifeTime)) { var clients = _context.Clients; foreach (var client in clients) { if (conf.Key == Core.Constants.SettingNames.ExpirationTimeName) { client.AccessTokenLifetime = lifeTime; } if (conf.Key == Core.Constants.SettingNames.AuthorizationCodeExpirationTimeName) { client.AuthorizationCodeLifetime = lifeTime; } } } await _idServerConfigurationDbContext.SaveChangesAsync().ConfigureAwait(false); await _context.SaveChangesAsync().ConfigureAwait(false);; transaction.Commit(); secondTransaction.Commit(); return(true); } catch (Exception ex) { _configurationEventSource.Failure(ex); transaction.Rollback(); secondTransaction.Rollback(); return(false); } } } }