public AuditLog CreateLogRecord(ISystemUser user)
        {
            Type entityType = DbEntry.Entity.GetType().GetEntityType();

            if (!EntityTrackingConfiguration.IsTrackingEnabled(entityType))
            {
                return(null);
            }

            DateTime changeTime = DateTime.UtcNow;
            var      newlog     = new AuditLog
            {
                UserId       = user.UserId,
                ClinicId     = user.ClinicId,
                EventDateUTC = changeTime,
                EventType    = _eventType,
                TypeId       = EntityTrackingConfiguration.GetTypeId(entityType),
                RecordId     = RecordId
            };

            var logDetails = _changeLogDetailsAuditor.GetLogDetails();

            logDetails.ForEach(x => x.Log = newlog);
            newlog.LogDetails             = logDetails;

            if (newlog.LogDetails.Any())
            {
                return(newlog);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 2
0
 public void BeforeSaveChanges()
 {
     _logBuilders = _dbContext.ChangeTracker
                    .Entries()
                    .Where(p =>
                           (p.State == EntityState.Deleted || p.State == EntityState.Modified || p.State == EntityState.Added)
                           &&
                           EntityTrackingConfiguration.IsTrackingEnabled(p.Entity.GetType().GetEntityType())
                           )
                    .Select(x => new LogBuilder(x, _dbContext))
                    .ToList();
     _logBuilders.ForEach(x => x.BeforeSaveChanges());
 }
        internal AuditLog CreateLogRecord(object userName, EventType eventType, ITrackerContext context, ExpandoObject metadata)
        {
            Type entityType = _dbEntry.Entity.GetType().GetEntityType();

            if (!EntityTrackingConfiguration.IsTrackingEnabled(entityType))
            {
                return(null);
            }

            DateTime changeTime = DateTime.UtcNow;

            //todo: make this a static class
            DbMapping mapping = new DbMapping(context, entityType);
            List <PropertyConfiguerationKey> keyNames = mapping.PrimaryKeys().ToList();

            AuditLog newlog = new AuditLog
            {
                UserName     = userName?.ToString(),
                EventDateUTC = changeTime,
                EventType    = eventType,
                TypeFullName = entityType.FullName,
                RecordId     = GetPrimaryKeyValuesOf(_dbEntry, keyNames).ToString()
            };

            List <LogMetadata> logMetadata = metadata
                                             .Where(x => x.Value != null)
                                             .Select(m => new LogMetadata
            {
                AuditLog = newlog,
                Key      = m.Key,
                Value    = m.Value?.ToString()
            })
                                             .ToList();

            newlog.Metadata = logMetadata;

            ChangeLogDetailsAuditor detailsAuditor = GetDetailsAuditor(eventType, newlog);

            newlog.LogDetails = detailsAuditor.CreateLogDetails().ToList();

            if (newlog.LogDetails.Any())
            {
                return(newlog);
            }
            else
            {
                return(null);
            }
        }
        internal AuditLog CreateLogRecord(object userName, EventType eventType, ITrackerContext context, ExpandoObject metadata)
        {
            Type entityType = _dbEntry.Entity.GetType();

            if (!EntityTrackingConfiguration.IsTrackingEnabled(entityType))
            {
                return(null);
            }

            DateTime changeTime = DateTime.UtcNow;

            //changed to static class by Aaron Sulwer 3/16/2018
            List <PropertyConfigurationKey> keyNames = (context as DbContext).GetKeyNames(entityType).ToList();

            var newlog = new AuditLog
            {
                UserName     = userName?.ToString(),
                EventDateUTC = changeTime,
                EventType    = eventType,
                TypeFullName = entityType.FullName,
                RecordId     = GetPrimaryKeyValuesOf(_dbEntry, keyNames).ToString()
            };

            var logMetadata = metadata
                              .Where(x => x.Value != null)
                              .Select(m => new LogMetadata
            {
                AuditLog = newlog,
                Key      = m.Key,
                Value    = m.Value?.ToString()
            })
                              .ToList();

            newlog.Metadata = logMetadata;

            var detailsAuditor = GetDetailsAuditor(eventType, newlog);

            newlog.LogDetails = detailsAuditor.CreateLogDetails().ToList();

            if (newlog.LogDetails.Any())
            {
                return(newlog);
            }
            else
            {
                return(null);
            }
        }
        protected void CreateLogDetails()
        {
            Type entityType = DbEntry.Entity.GetType().GetEntityType();

            foreach (string propertyName in PropertyNamesOfEntity())
            {
                if (EntityTrackingConfiguration.IsPropertyTracked(entityType, propertyName) &&
                    IsValueChanged(propertyName))
                {
                    _logDetails.Add(new AuditLogDetail
                    {
                        PropertyName  = propertyName,
                        OriginalValue = OriginalValue(propertyName)?.ToString(),
                        NewValue      = CurrentValue(propertyName)?.ToString()
                    });
                }
            }
        }
        internal AuditLog CreateLogRecord(object userName, EventType eventType, ITrackerContext context)
        {
            Type entityType = _dbEntry.Entity.GetType().GetEntityType();

            if (!EntityTrackingConfiguration.IsTrackingEnabled(entityType))
            {
                return(null);
            }

            DateTime changeTime = DateTime.UtcNow;

            //todo: make this a static class
            var mapping = new DbMapping(context, entityType);

            List <PropertyConfiguerationKey> keyNames = mapping.PrimaryKeys().ToList();

            var newlog = new AuditLog
            {
                UserName     = userName?.ToString(),
                EventDateUTC = changeTime,
                EventType    = eventType,
                TypeFullName = entityType.FullName,
                RecordId     = GetPrimaryKeyValuesOf(_dbEntry, keyNames).ToString()
            };

            var detailsAuditor = GetDetailsAuditor(eventType, newlog);

            newlog.LogDetails = detailsAuditor.CreateLogDetails().ToList();


            if (newlog.LogDetails.Any())
            {
                return(newlog);
            }
            else
            {
                return(null);
            }
        }