public void AuditChanges(object userName, ExpandoObject metadata)
        {
            // Get all Deleted/Modified entities (not Unmodified or Detached or Added)
            foreach (
                DbEntityEntry ent in
                _context.ChangeTracker.Entries()
                .Where(p => p.State == EntityState.Deleted || p.State == EntityState.Modified))
            {
                using (var auditer = new LogAuditor(ent))
                {
                    var eventType = GetEventType(ent);

                    AuditLog record = auditer.CreateLogRecord(userName, eventType, _context, metadata);

                    if (record != null)
                    {
                        var arg = new AuditLogGeneratedEventArgs(record, ent.Entity, metadata);
                        RaiseOnAuditLogGenerated(this, arg);
                        if (!arg.SkipSavingLog)
                        {
                            _context.AuditLog.Add(record);
                        }
                    }
                }
            }
        }
        public void AuditDeletions(object userName, ExpandoObject metadata)
        {
            List <AuditLog> records = new List <AuditLog>();

            // Get all Deleted entities (not Modified or Unmodified or Detached or Added)
            var deletions = GetChangesByState(EntityState.Deleted);

            foreach (EntityEntry ent in deletions)
            {
                using (var auditer = new LogAuditor(ent))
                {
                    var      eventType = GetEventType(ent);
                    AuditLog record    = auditer.CreateLogRecord(userName, eventType, _context, metadata);

                    if (record != null)
                    {
                        var arg = new AuditLogGeneratedEventArgs(record, ent.Entity, metadata);
                        RaiseOnAuditLogGenerated(this, arg);
                        if (!arg.SkipSavingLog)
                        {
                            records.Add(record);
                        }
                    }
                }
            }

            _context.AuditLogs.AddRange(records);
        }
 public void AuditAdditions(object userName, IEnumerable <DbEntityEntry> addedEntries, ExpandoObject metadata)
 {
     // Get all Added entities
     foreach (DbEntityEntry ent in addedEntries)
     {
         using (var auditer = new LogAuditor(ent))
         {
             AuditLog record = auditer.CreateLogRecord(userName, EventType.Added, _context, metadata);
             if (record != null)
             {
                 var arg = new AuditLogGeneratedEventArgs(record, ent.Entity, metadata);
                 RaiseOnAuditLogGenerated(this, arg);
                 if (!arg.SkipSavingLog)
                 {
                     _context.AuditLog.Add(record);
                 }
             }
         }
     }
 }
 private void RaiseOnAuditLogGenerated(object sender, AuditLogGeneratedEventArgs e)
 {
     OnAuditLogGenerated?.Invoke(sender, e);
 }
 protected virtual void RaiseOnAuditLogGenerated(object sender, AuditLogGeneratedEventArgs e)
 {
     OnAuditLogGenerated?.Invoke(sender, e);
 }