public async Task <bool> UpdateAsync(Domains.ResourceOwner resourceOwner) { using (var transaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false)) { try { var record = await _context.ResourceOwners .Include(r => r.Claims) .FirstOrDefaultAsync(r => r.Id == resourceOwner.Id).ConfigureAwait(false); if (record == null) { return(false); } record.Password = resourceOwner.Password; record.IsLocalAccount = resourceOwner.IsLocalAccount; record.TwoFactorAuthentication = resourceOwner.TwoFactorAuthentication; record.UpdateDateTime = DateTime.UtcNow; record.Claims = new List <ResourceOwnerClaim>(); _context.ResourceOwnerClaims.RemoveRange(record.Claims); if (resourceOwner.Claims != null) { foreach (var claim in resourceOwner.Claims) { record.Claims.Add(new ResourceOwnerClaim { Id = Guid.NewGuid().ToString(), ResourceOwnerId = record.Id, ClaimCode = claim.Type, Value = claim.Value }); } } await _context.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); return(true); } catch (Exception ex) { _managerEventSource.Failure(ex); transaction.Rollback(); return(false); } } }
public async Task <bool> InsertAsync(Domains.ResourceOwner resourceOwner) { try { var user = new ResourceOwner { Id = resourceOwner.Id, Password = resourceOwner.Password, IsLocalAccount = resourceOwner.IsLocalAccount, TwoFactorAuthentication = resourceOwner.TwoFactorAuthentication, Claims = new List <ResourceOwnerClaim>(), CreateDateTime = DateTime.UtcNow, UpdateDateTime = DateTime.UtcNow }; if (resourceOwner.Claims != null) { foreach (var claim in resourceOwner.Claims) { user.Claims.Add(new ResourceOwnerClaim { Id = Guid.NewGuid().ToString(), ResourceOwnerId = user.Id, ClaimCode = claim.Type, Value = claim.Value }); } } _context.ResourceOwners.Add(user); await _context.SaveChangesAsync().ConfigureAwait(false); } catch (Exception ex) { _managerEventSource.Failure(ex); return(false); } return(true); }