예제 #1
0
    /// <inheritdoc />
    protected override void PersistNewItem(IAuditEntry entity)
    {
        entity.AddingEntity();

        AuditEntryDto dto = AuditEntryFactory.BuildDto(entity);

        Database.Insert(dto);
        entity.Id = dto.Id;
        entity.ResetDirtyProperties();
    }
예제 #2
0
    /// <inheritdoc />
    protected override IAuditEntry?PerformGet(int id)
    {
        Sql <ISqlContext> sql = Sql()
                                .Select <AuditEntryDto>()
                                .From <AuditEntryDto>()
                                .Where <AuditEntryDto>(x => x.Id == id);

        AuditEntryDto dto = Database.FirstOrDefault <AuditEntryDto>(sql);

        return(dto == null ? null : AuditEntryFactory.BuildEntity(dto));
    }
예제 #3
0
        /// <summary>
        /// 创建审计
        /// </summary>
        /// <param name="entityEntry"></param>
        /// <returns></returns>
        private AuditEntryDto CreateAuditEntity(EntityEntry entityEntry)
        {
            var entity      = entityEntry.Entity;
            var type        = entity.GetType();
            var displayName = type.ToDescription(); //得到实体上特性
            DataOperationType changeType = DataOperationType.Add;

            switch (entityEntry.State)
            {
            //case EntityState.Detached:
            //    changeType = DataOperationType.None;
            //    break;

            //case EntityState.Unchanged:
            //    changeType = DataOperationType.None;
            //    break;

            case EntityState.Deleted:
                changeType = DataOperationType.Delete;
                break;

            case EntityState.Modified:
                changeType = DataOperationType.Update;
                break;

            case EntityState.Added:
                changeType = DataOperationType.Add;
                break;
            }
            AuditEntryDto audit = new AuditEntryDto();

            audit.KeyValues      = new Dictionary <string, object>();
            audit.EntityName     = type.FullName;
            audit.DisplayName    = displayName;
            audit.TypeName       = type.FullName;
            audit.OperationType  = changeType;
            audit.AuditPropertys = GetAuditPropertys(entityEntry);
            audit.KeyValues      = new Dictionary <string, object>()
            {
                { "Id", GetEntityKey(entity) }
            };
            return(audit);
        }
예제 #4
0
    public static IAuditEntry BuildEntity(AuditEntryDto dto)
    {
        var entity = new AuditEntry
        {
            Id = dto.Id,
            PerformingUserId  = dto.PerformingUserId,
            PerformingDetails = dto.PerformingDetails,
            PerformingIp      = dto.PerformingIp,
            EventDateUtc      = dto.EventDateUtc,
            AffectedUserId    = dto.AffectedUserId,
            AffectedDetails   = dto.AffectedDetails,
            EventType         = dto.EventType,
            EventDetails      = dto.EventDetails,
        };

        // on initial construction we don't want to have dirty properties tracked
        // http://issues.umbraco.org/issue/U4-1946
        entity.ResetDirtyProperties(false);
        return(entity);
    }