public override int SaveChanges() { var modifiedEntries = ChangeTracker.Entries().Where(x => x.Entity is IAuditEntity && (x.State == EntityState.Added || x.State == EntityState.Modified)); try { foreach (var entry in modifiedEntries) { IAuditEntity entity = entry.Entity as IAuditEntity; if (entity != null) { DateTime now = DateTime.UtcNow; if (entry.State == EntityState.Added) { entity.CreatedDate = now; entity.Status = true; } else { base.Entry(entity).Property(x => x.CreatedDate).IsModified = false; } entity.UpdatedDate = now; } } return(base.SaveChanges()); } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx) { var validationErrors = dbEx.EntityValidationErrors; var validationError = validationErrors.SelectMany(x => x.ValidationErrors).ToList(); throw dbEx; } }
public override int SaveChanges() { var modifiedEntries = ChangeTracker.Entries() .Where(x => x.Entity is IAuditEntity && (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified)); foreach (var entry in modifiedEntries) { IAuditEntity entity = entry.Entity as IAuditEntity; if (entity != null) { //IUserContext currentUserContext = this._userContextProvider.GetCurrentUserContext(); //long num = (currentUserContext != null) ? currentUserContext.Id : 1; DateTime now = DateTime.UtcNow; if (entry.State == System.Data.Entity.EntityState.Added) { entity.CreatedBy = 1; entity.CreatedDate = now; } else { base.Entry(entity).Property(x => x.CreatedBy).IsModified = false; base.Entry(entity).Property(x => x.CreatedDate).IsModified = false; } entity.ModifiedBy = 1; entity.ModifiedDate = now; } } return(base.SaveChanges()); }
public override int SaveChanges() { var modifiedEntries = ChangeTracker.Entries() .Where(x => x.Entity is IAuditEntity && (x.State == EntityState.Added || x.State == EntityState.Modified || x.State == EntityState.Deleted)); foreach (var entry in modifiedEntries) { IAuditEntity entity = entry.Entity as IAuditEntity; if (entity != null) { DateTime now = DateTime.Now; if (entry.State == EntityState.Added) { entity.CreatedTime = now; entity.CreatedBy = _user; } else { base.Entry(entity).Property(x => x.CreatedTime).IsModified = false; } entity.UpdatedTime = now; entity.UpdatedBy = _user; } } return(base.SaveChanges()); }
private void CommitMethod() { var modifiedEntries = ChangeTracker.Entries() .Where(x => x.Entity is IAuditEntity && (x.State == EntityState.Added || x.State == EntityState.Modified)); foreach (var entry in modifiedEntries) { IAuditEntity entity = entry.Entity as IAuditEntity; if (entity != null) { DateTime now = DateTime.Now; if (entry.State == EntityState.Added) { entity.CreatedAt = now; } else { base.Entry(entity).Property(x => x.CreatedAt).IsModified = false; } entity.UpdatedAt = now; } } }
public static void UpdateAuditFields(IAuditEntity audit) { var identity = (ClaimsIdentity)Thread.CurrentPrincipal.Identity; var idClaim = identity.FindFirst(ClaimTypes.NameIdentifier); var nameClaim = identity.FindFirst(ClaimTypes.Name); UpdateAuditFields(audit, idClaim == null ? 0.ToString(CultureInfo.InvariantCulture) : idClaim.Value, nameClaim == null ? "Unknown" : nameClaim.Value); }
/// <summary> /// Saves the or update audit entity. /// </summary> /// <param name="auditEntity">The audit entity.</param> /// <param name="isCopy">if set to <c>true</c> [is copy].</param> public void SaveOrUpdateAuditEntity(IAuditEntity auditEntity, bool isCopy) { try { GenericGateway genericGateway = new GenericGateway(); genericGateway.SaveOrUpdateEntity<IAudit>(AuditMapper.GetAuditEntity<IAuditEntity>(auditEntity), isCopy); } catch (Exception ex) { Logger.Error("Error at SaveOrUpdateAuditEntity", ex); Logger.Error("Error in SaveOrUpdateAuditEntity: Message - " + ex.Message + " StackTrace - " + ex.StackTrace); throw; } }
public static void UpdateAuditFields(IAuditEntity audit, string id, string name) { audit.Created = DateTime.UtcNow; audit.Updated = DateTime.UtcNow; audit.CreatedBy = new CreatorRef { Id = id, ScreenName = name }; audit.UpdatedBy = new CreatorRef { Id = id, ScreenName = name }; }
public static void SetAudit(IAuditEntity entity, AuditEntityState state, DateTime timestamp) { if (entity is null) { return; } if (state != AuditEntityState.None) { if (state == AuditEntityState.Added) { entity.DateCreated = timestamp; } entity.DateModified = timestamp; } }
public IEnumerable <Audit> GetEntityHistory(IAuditEntity e) { var name = e.GetType().FullName; var tables = _appDbContext.Set <Table>(); var table = tables.FirstOrDefault(o => o.Name == name); if (table == null) { return(null); } var auditTable = _appDbContext.Set <Audit>(); return(auditTable.Where(o => o.EntityId == e.Id && o.TableId == table.Id).ToList()); }
// Does not append log if entity has no audit. // This prevents spam of entities that get retained every frame. // To enable log, add an audit component to the entity. // Likewise, to disable log, remove an audit component from the entity. // In visual debugging, there is a drop-down to add components. private static void AppendLog(IEntity entity, object owner) { IAuditEntity auditEntity = (IAuditEntity)entity; if (auditEntity == null) { return; } if (!auditEntity.hasAudit) { return; } List <string> logs = auditEntity.audit.logs; if (logs == null) { logs = new List <string>(); } logs.Add(owner.ToString()); auditEntity.ReplaceAudit(logs); }
private IAuditEntity AuditEntity(DbEntityEntry entityEntry, AuditTypeInfo auditTypeInfo, DateTimeOffset auditDateTime, string user) { // Create audit entity. DbSet set = this.Set(auditTypeInfo.AuditEntityType); IAuditEntity auditEntity = set.Create() as IAuditEntity; // Check audit entity for complex types. var complexTypes = GetComplexTypes(auditTypeInfo, entityEntry); //Instantiate complex types. foreach (var field in complexTypes) { var property = auditEntity.GetType().GetProperty(field); var entityType = property.PropertyType; property.SetValue(auditEntity, Activator.CreateInstance(entityType)); } //Attach audit Entity to the context. set.Add(auditEntity); // Copy the properties. DbEntityEntry auditEntityEntry = this.Entry(auditEntity); foreach (string propertyName in auditTypeInfo.AuditProperties) { auditEntityEntry.Property(propertyName).CurrentValue = entityEntry.Property(propertyName).OriginalValue; } // Set the audit columns. auditEntityEntry.Property(AuditUpdatedColumnName).CurrentValue = auditDateTime; auditEntityEntry.Property(AuditUserColumnName).CurrentValue = user; auditEntityEntry.Property(AuditTypeColumnName).CurrentValue = entityEntry.State == EntityState.Modified ? "update" : "delete"; auditEntityEntry.Property(AuditSourceIdColumnName).CurrentValue = entityEntry.OriginalValues.GetValue <int>("Id"); return(auditEntity); }
protected virtual AuditEntityState GetAuditEntityState(IAuditEntity entity, BulkInsertOperation operation) { if (entity is null) { return(AuditEntityState.None); } if ((operation & (BulkInsertOperation.BulkInsert | BulkInsertOperation.BulkInsertOrUpdate)) != 0) { if (entity.DateCreated == DateTime.MinValue) { return(AuditEntityState.Added); } return(AuditEntityState.Modified); } if (operation == BulkInsertOperation.BulkUpdate) { return(AuditEntityState.Modified); } return(AuditEntityState.None); }
public static void FlagForCreate(this IAuditEntity entity, string createdBy) { entity.CreatedBy = createdBy; entity.CreatedUtc = DateTime.UtcNow; }
public static bool IsDeleted(this IAuditEntity e) { return(e.DeletedAt != null); }
public AuditedEntity(IAuditEntity auditEntity, IEnumerable <PropertyEntry> temporaryProperties) { this.AuditEntity = auditEntity; this.TemporaryProperties = temporaryProperties; }
private IList <IAuditStep> GetEntitySteps(IAuditEntity entity, ref int stepOrder) { var steps = new List <IAuditStep> { { new AuditStep { WizardPageType = WizardPageEnum.EntityInfo, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.BusinessInfo, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.Location, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.Officers, StepOrder = stepOrder++ } }, }; // Add payroll steps if audit has exposure basis of payroll if ((entity.ExposureBasis & ExposureBasisEnum.Payroll) == ExposureBasisEnum.Payroll) { steps.AddRange(new List <IAuditStep> { { new AuditStep { WizardPageType = WizardPageEnum.Payroll, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.Classification, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.Labor, StepOrder = stepOrder++ } }, }); } // Add sales steps if audit has exposure basis of sales if ((entity.ExposureBasis & ExposureBasisEnum.Sales) == ExposureBasisEnum.Sales) { steps.AddRange(new List <IAuditStep> { { new AuditStep { WizardPageType = WizardPageEnum.SalesSetup, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.Sales, StepOrder = stepOrder++ } }, { new AuditStep { WizardPageType = WizardPageEnum.SalesVerification, StepOrder = stepOrder++ } }, }); } // Add final steps for entity steps.Add(new AuditStep { WizardPageType = WizardPageEnum.Questions, StepOrder = stepOrder++ }); steps.Add(new AuditStep { WizardPageType = WizardPageEnum.Summary, StepOrder = stepOrder++ }); // Set the entity id foreach (var step in steps) { step.EntityId = entity.Id; } return(steps); }
// To unsubscribe from `AppendLog`, query each entity and unsubscribe. private static void AuditOnRetained(IContext context, IEntity entity) { IAuditEntity auditEntity = (IAuditEntity)entity; ((Entity)auditEntity).OnEntityRetained += AppendLog; }