public async Task <bool> Insert(Core.Models.Setting configuration) { if (configuration == null) { return(false); } using (var transaction = await _idServerConfigurationDbContext.Database.BeginTransactionAsync().ConfigureAwait(false)) { try { _idServerConfigurationDbContext.Settings.Add(new Models.Setting { Key = configuration.Key, Value = configuration.Value }); await _idServerConfigurationDbContext.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); return(true); } catch (Exception ex) { _configurationEventSource.Failure(ex); transaction.Rollback(); return(false); } } }
public async Task <bool> UpdateAuthenticationProvider(AuthenticationProvider authenticationProvider) { using (var transaction = await _idServerConfigurationDbContext.Database.BeginTransactionAsync().ConfigureAwait(false)) { try { var record = await _idServerConfigurationDbContext .AuthenticationProviders .Include(a => a.Options) .FirstOrDefaultAsync(a => a.Name == authenticationProvider.Name) .ConfigureAwait(false); if (record == null) { return(false); } record.IsEnabled = authenticationProvider.IsEnabled; record.CallbackPath = authenticationProvider.CallbackPath; record.ClassName = authenticationProvider.ClassName; record.Code = authenticationProvider.Code; record.Namespace = authenticationProvider.Namespace; record.Type = authenticationProvider.Type; var optsNotToBeDeleted = new List <string>(); if (authenticationProvider.Options != null) { foreach (var opt in authenticationProvider.Options) { var option = record.Options.FirstOrDefault(o => o.Id == opt.Id); if (option != null) { option.Key = opt.Key; option.Value = opt.Value; } else { option = new Models.Option { Id = Guid.NewGuid().ToString(), Key = opt.Key, Value = opt.Value }; record.Options.Add(option); } optsNotToBeDeleted.Add(option.Id); } } var optionIds = record.Options.Select(o => o.Id).ToList(); foreach (var optId in optionIds.Where(id => !optsNotToBeDeleted.Contains(id))) { record.Options.Remove(record.Options.First(o => o.Id == optId)); } await _idServerConfigurationDbContext.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); return(true); } catch (Exception ex) { _configurationEventSource.Failure(ex); transaction.Rollback(); return(false); } } }