public AuditEntity(AuditObjectData auditObjectData, AuditSubjectData auditSubjectData) { ActionType = auditObjectData.ActionType; if (auditObjectData.ObjectIdentifierProperty == null) { ObjectIdentifier = auditObjectData.ObjectIdentifier; } else { ObjectIdentifier = auditObjectData.ObjectIdentifierProperty.CurrentValue.ToString(); } ObjectType = auditObjectData.ObjectType; ObjectMetadata = auditObjectData.ObjectMetadata; SubjectType = auditSubjectData.SubjectType; SubjectIdentifier = auditSubjectData.SubjectIdentifier; SubjectMetadata = auditSubjectData.SubjectMetadata; GroupIdentifier = auditSubjectData.GroupIdentifier; Host = auditSubjectData.Host; RemoteIp = auditSubjectData.RemoteIp; ResourceName = auditSubjectData.ResourceName; UserAgent = auditSubjectData.UserAgent; TraceIdentifier = auditSubjectData.TraceIdentifier; AppVersion = auditSubjectData.AppVersion; Created = DateTime.UtcNow; }
public override int SaveChanges() { SoftDelete(); AddTimestampInfo(); ProccessChangeTrackerResult proccessChangeTrackerResult = ChangeTrackerAuditService.ProccessChangeTracker(ChangeTracker); if (proccessChangeTrackerResult.RequiresCustomBatch) { using (IDbContextTransaction dbTransaction = Database.BeginTransaction()) { try { int changes = base.SaveChanges(); AuditSubjectData auditSubjectData = _auditDataService.Get(); IEnumerable <AuditEntity> auditEntities = proccessChangeTrackerResult.AuditObjectData .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); Audit.AddRange(auditEntities); int auditChanges = base.SaveChanges(); dbTransaction.Commit(); return(changes); } catch (Exception ex) { _logger.LogError(ex, $"Failed to perform db transaction"); dbTransaction.Rollback(); throw; } } } else { AuditSubjectData auditSubjectData = _auditDataService.Get(); IEnumerable <AuditEntity> auditEntities = proccessChangeTrackerResult.AuditObjectData .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); Audit.AddRange(auditEntities); return(base.SaveChanges() - auditEntities.Count()); } }
public virtual AuditSubjectData Get() { AuditSubjectData auditSubjectData = new AuditSubjectData( subjectType: Data.SubjectTypes.Machine, subjectIdentifier: _backgroundServiceContextAccessor.BackgroundServiceContext.Name, host: null, remoteIp: null, resourceName: null, userAgent: null, traceIdentifier: null, appVersion: null); return(auditSubjectData); }
public override int SaveChanges(bool acceptAllChangesOnSuccess) { ProccessChangeTrackerResult proccessChangeTrackerResult = ChangeTrackerAuditService.ProccessChangeTracker(ChangeTracker, _auditOptions); AuditSubjectData auditSubjectData = _auditSubjectDataService.Get(); IEnumerable <AuditEntity> auditEntities = proccessChangeTrackerResult.AuditObjectData .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); Audit.AddRange(auditEntities); return(base.SaveChanges()); }
public virtual AuditSubjectData Get() { AuditSubjectData auditSubjectData = new AuditSubjectData( subjectType: Data.SubjectTypes.Machine, subjectIdentifier: _auditOptions.DefaultSubjectName, host: null, remoteIp: null, resourceName: null, userAgent: null, traceIdentifier: null, appVersion: null); return(auditSubjectData); }
public async override Task <int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default) { ProccessChangeTrackerResult proccessChangeTrackerResult = await ChangeTrackerAuditService.ProccessChangeTrackerAsync(ChangeTracker, _auditOptions); AuditSubjectData auditSubjectData = _auditSubjectDataService.Get(); IEnumerable <AuditEntity> auditEntities = proccessChangeTrackerResult.AuditObjectData .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); Audit.AddRange(auditEntities); return(await base.SaveChangesAsync()); }
public AuditSubjectData Get() { AuditSubjectData auditData = new AuditSubjectData( subjectType: Data.SubjectTypes.Human, subjectIdentifier: GetUserId(), subjectMetadata: GetSubjectMetadata(), groupIdentifier: GetGroupIdentifier(), host: GetHost(), remoteIp: GetRemoteIp(), resourceName: GetResourceName(), userAgent: GetUserAgent(), traceIdentifier: GetTraceIdentifier(), appVersion: GetAppVersion()); return(auditData); }
public async Task LogAsync(AuditObjectData auditObject) { AuditSubjectData auditSubjectData = _auditDataService.Get(); AuditEntity audit = new AuditEntity( auditObjectData: auditObject, auditSubjectData: auditSubjectData); _dbContext.Audit.Add(audit); int changes = await _dbContext.SaveChangesAsync(); if (changes <= 0) { _logger.LogError($"Failed to add audit"); } }
public void Log(AuditObjectData auditObject) { AuditSubjectData auditSubjectData = _auditDataService.Get(); AuditEntity audit = new AuditEntity( auditObjectData: auditObject, auditSubjectData: auditSubjectData); _dbContext.Audit.Add(audit); int changes = _dbContext.SaveChanges(); if (changes <= 0) { _logger.LogError($"Failed to add audit data"); } }
public async Task LogAsync(IEnumerable <AuditObjectData> auditObjects) { if (auditObjects.Count() == 0) { return; } AuditSubjectData auditSubjectData = _auditDataService.Get(); IEnumerable <AuditEntity> auditList = auditObjects .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); _dbContext.Audit.AddRange(auditList); int changes = await _dbContext.SaveChangesAsync(); if (changes <= 0) { _logger.LogError($"Failed to add audit"); } }
public async override Task <int> SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken)) { SoftDelete(); AddTimestampInfo(); ProccessChangeTrackerResult proccessChangeTrackerResult = ChangeTrackerAuditService.ProccessChangeTracker(ChangeTracker); if (proccessChangeTrackerResult.RequiresCustomBatch) { using (IDbContextTransaction dbTransaction = await Database.BeginTransactionAsync(cancellationToken)) { try { int changes = base.SaveChanges(); AuditSubjectData auditSubjectData = _auditDataService.Get(); IEnumerable <AuditEntity> auditEntities = proccessChangeTrackerResult.AuditObjectData .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); Audit.AddRange(auditEntities); int auditChanges = await base.SaveChangesAsync(cancellationToken); #if NET_CORE2 dbTransaction.Commit(); #elif NET_CORE3 await dbTransaction.CommitAsync(cancellationToken); #endif return(changes); } catch (Exception ex) { _logger.LogError(ex, $"Failed to perform db transaction"); #if NET_CORE2 dbTransaction.Rollback(); #elif NET_CORE3 await dbTransaction.RollbackAsync(cancellationToken); #endif throw; } } } else { AuditSubjectData auditSubjectData = _auditDataService.Get(); IEnumerable <AuditEntity> auditEntities = proccessChangeTrackerResult.AuditObjectData .Select(x => new AuditEntity( auditObjectData: x, auditSubjectData: auditSubjectData)); Audit.AddRange(auditEntities); int changes = await base.SaveChangesAsync(cancellationToken); return(changes - auditEntities.Count()); } }