public async Task <bool> DeleteAsync(Domains.Scope scope) { using (var transaction = _context.Database.BeginTransaction()) { try { var connectedScope = await _context.Scopes .FirstOrDefaultAsync(c => c.Name == scope.Name) .ConfigureAwait(false); if (connectedScope == null) { return(false); } _context.Scopes.Remove(connectedScope); await _context.SaveChangesAsync(); transaction.Commit(); } catch (Exception ex) { _managerEventSource.Failure(ex); transaction.Rollback(); return(false); } } return(true); }
public async Task <bool> InsertAsync(Domains.Scope scope) { using (var transaction = _context.Database.BeginTransaction()) { try { var record = new Models.Scope { Name = scope.Name, Description = scope.Description, IsDisplayedInConsent = scope.IsDisplayedInConsent, IsExposed = scope.IsExposed, IsOpenIdScope = scope.IsOpenIdScope, Type = (Models.ScopeType)scope.Type, ScopeClaims = new List <Models.ScopeClaim>(), CreateDateTime = DateTime.UtcNow, UpdateDateTime = DateTime.UtcNow }; if (scope.Claims != null && scope.Claims.Any()) { foreach (var type in scope.Claims) { var rec = _context.Claims.FirstOrDefault(c => c.Code == type); if (rec == null) { rec = new Models.Claim { Code = type }; _context.Claims.Add(rec); } record.ScopeClaims.Add(new Models.ScopeClaim { Claim = rec }); } } _context.Scopes.Add(record); await _context.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); } catch (Exception ex) { _managerEventSource.Failure(ex); transaction.Rollback(); return(false); } } return(true); }
public static Model.Scope ToModel(this Domain.Scope scope) { return(new Model.Scope { Name = scope.Name, Description = scope.Description, IsDisplayedInConsent = scope.IsDisplayedInConsent, IsExposed = scope.IsExposed, IsOpenIdScope = scope.IsOpenIdScope, Type = (Models.ScopeType)scope.Type, ScopeClaims = scope.Claims == null ? new List <Model.ScopeClaim>() : scope.Claims.Select(c => new Model.ScopeClaim() { Claim = new Model.Claim { Code = c } }).ToList() }); }
public async Task <bool> UpdateAsync(Domains.Scope scope) { using (var transaction = _context.Database.BeginTransaction()) { try { var connectedScope = await _context.Scopes .Include(s => s.ScopeClaims) .FirstOrDefaultAsync(c => c.Name == scope.Name) .ConfigureAwait(false); connectedScope.Description = scope.Description; connectedScope.IsOpenIdScope = scope.IsOpenIdScope; connectedScope.IsDisplayedInConsent = scope.IsDisplayedInConsent; connectedScope.IsExposed = scope.IsExposed; connectedScope.Type = (Models.ScopeType)scope.Type; connectedScope.UpdateDateTime = DateTime.UtcNow; var scopesNotToBeRemoved = new List <string>(); if (scope.Claims != null && scope.Claims.Any()) { foreach (var type in scope.Claims) { var rec = _context.Claims.FirstOrDefault(c => c.Code == type); var scopeClaims = connectedScope.ScopeClaims.FirstOrDefault(c => c.ClaimCode == type); if (rec == null) { rec = new Models.Claim { Code = type }; _context.Claims.Add(rec); } if (scopeClaims == null) { connectedScope.ScopeClaims.Add(new Models.ScopeClaim { ClaimCode = rec.Code, ScopeName = connectedScope.Name }); } scopesNotToBeRemoved.Add(type); } } foreach (var scopeClaim in connectedScope.ScopeClaims.Where(s => !scopesNotToBeRemoved.Any(c => c == s.ClaimCode)).ToList()) { _context.ScopeClaims.Remove(scopeClaim); } await _context.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); } catch (Exception ex) { _managerEventSource.Failure(ex); transaction.Rollback(); return(false); } return(true); } }