Skip to content

Commit 624ac83

Browse files
committed
manually merged Pull Request bilal-fazlani#141
1 parent 30868af commit 624ac83

File tree

5 files changed

+250
-79
lines changed

5 files changed

+250
-79
lines changed

TracerEnabledDbContext.Core.Identity/TrackerIdentityContext.cs

Lines changed: 84 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -81,19 +81,57 @@ public class TrackerIdentityContext<TUser, TRole, TKey, TUserClaim, TUserRole, T
8181
private Func<string> _usernameFactory;
8282
private string _defaultUsername;
8383
private Action<dynamic> _metadataConfiguration;
84-
private bool _trackingEnabled = true;
84+
private bool _additionTrackingEnabled = true;
85+
private bool _modificationTrackingEnabled = true;
86+
private bool _deletionTrackingEnabled = true;
8587

8688
public bool TrackingEnabled
8789
{
8890
get
8991
{
90-
return GlobalTrackingConfig.Enabled && _trackingEnabled;
92+
return GlobalTrackingConfig.Enabled && (_additionTrackingEnabled || _modificationTrackingEnabled || _deletionTrackingEnabled);
9193
}
9294
set
9395
{
94-
_trackingEnabled = value;
96+
AdditionTrackingEnabled = value;
97+
ModificationTrackingEnabled = value;
98+
DeletionTrackingEnabled = value;
9599
}
96100
}
101+
public bool AdditionTrackingEnabled
102+
{
103+
get
104+
{
105+
return GlobalTrackingConfig.AdditionsEnabled && _additionTrackingEnabled;
106+
}
107+
set
108+
{
109+
_additionTrackingEnabled = value;
110+
}
111+
}
112+
public bool ModificationTrackingEnabled
113+
{
114+
get
115+
{
116+
return GlobalTrackingConfig.ModificationsEnabled && _modificationTrackingEnabled;
117+
}
118+
set
119+
{
120+
_modificationTrackingEnabled = value;
121+
}
122+
}
123+
public bool DeletionTrackingEnabled
124+
{
125+
get
126+
{
127+
return GlobalTrackingConfig.DeletionsEnabled && _deletionTrackingEnabled;
128+
}
129+
set
130+
{
131+
_deletionTrackingEnabled = value;
132+
}
133+
}
134+
97135
public virtual DbSet<AuditLog> AuditLogs { get; set; }
98136
public virtual DbSet<AuditLogDetail> AuditLogDetails { get; set; }
99137

@@ -181,17 +219,30 @@ public virtual int SaveChanges(object userName)
181219
dynamic metadata = new ExpandoObject();
182220
_metadataConfiguration?.Invoke(metadata);
183221

184-
_coreTracker.AuditChanges(userName, metadata);
222+
if(ModificationTrackingEnabled)
223+
_coreTracker.AuditModifications(userName, metadata);
224+
if (DeletionTrackingEnabled)
225+
_coreTracker.AuditDeletions(userName, metadata);
185226

186-
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
187-
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
188-
int result = base.SaveChanges();
189-
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
227+
int result;
228+
if (AdditionTrackingEnabled)
229+
{
230+
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
231+
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
232+
result = base.SaveChanges();
233+
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
190234

191-
_coreTracker.AuditAdditions(userName, addedEntries, metadata);
235+
_coreTracker.AuditAdditions(userName, addedEntries, metadata);
192236

193-
//save changes to audit of added entries
194-
base.SaveChanges();
237+
//save changes to audit of added entries
238+
base.SaveChanges();
239+
}
240+
else
241+
{
242+
//save changes
243+
result = base.SaveChanges();
244+
}
245+
195246
return result;
196247
}
197248
/// <summary>
@@ -233,18 +284,32 @@ public virtual async Task<int> SaveChangesAsync(object userName, CancellationTok
233284
dynamic metadata = new ExpandoObject();
234285
_metadataConfiguration?.Invoke(metadata);
235286

236-
_coreTracker.AuditChanges(userName, metadata);
287+
if (ModificationTrackingEnabled)
288+
_coreTracker.AuditModifications(userName, metadata);
237289

238-
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
290+
if (DeletionTrackingEnabled)
291+
_coreTracker.AuditDeletions(userName, metadata);
239292

240-
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
241-
int result = await base.SaveChangesAsync(cancellationToken);
242293

243-
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
244-
_coreTracker.AuditAdditions(userName, addedEntries, metadata);
294+
int result;
295+
if (AdditionTrackingEnabled)
296+
{
297+
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
298+
299+
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
300+
result = await base.SaveChangesAsync(cancellationToken);
245301

246-
//save changes to audit of added entries
247-
await base.SaveChangesAsync(cancellationToken);
302+
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
303+
_coreTracker.AuditAdditions(userName, addedEntries, metadata);
304+
305+
//save changes to audit of added entries
306+
await base.SaveChangesAsync(cancellationToken);
307+
}
308+
else
309+
{
310+
//save changes
311+
result = await base.SaveChangesAsync(cancellationToken);
312+
}
248313

249314
return result;
250315
}

TrackerEnabledDbContext.Core/TrackerContext.cs

Lines changed: 81 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,57 @@ public class TrackerContext : DbContext, ITrackerContext
2020
private Func<string> _usernameFactory;
2121
private string _defaultUsername;
2222
private Action<dynamic> _metadataConfiguration;
23-
private bool _trackingEnabled = true;
23+
private bool _additionTrackingEnabled = true;
24+
private bool _modificationTrackingEnabled = true;
25+
private bool _deletionTrackingEnabled = true;
2426

2527
public bool TrackingEnabled
2628
{
2729
get
2830
{
29-
return GlobalTrackingConfig.Enabled && _trackingEnabled;
31+
return GlobalTrackingConfig.Enabled && (_additionTrackingEnabled || _modificationTrackingEnabled || _deletionTrackingEnabled);
3032
}
3133
set
3234
{
33-
_trackingEnabled = value;
35+
_additionTrackingEnabled = value;
36+
_modificationTrackingEnabled = value;
37+
_deletionTrackingEnabled = value;
3438
}
3539
}
40+
public bool AdditionTrackingEnabled
41+
{
42+
get
43+
{
44+
return GlobalTrackingConfig.AdditionsEnabled && _additionTrackingEnabled;
45+
}
46+
set
47+
{
48+
_additionTrackingEnabled = value;
49+
}
50+
}
51+
public bool ModificationTrackingEnabled
52+
{
53+
get
54+
{
55+
return GlobalTrackingConfig.ModificationsEnabled && _modificationTrackingEnabled;
56+
}
57+
set
58+
{
59+
_modificationTrackingEnabled = value;
60+
}
61+
}
62+
public bool DeletionTrackingEnabled
63+
{
64+
get
65+
{
66+
return GlobalTrackingConfig.DeletionsEnabled && _deletionTrackingEnabled;
67+
}
68+
set
69+
{
70+
_deletionTrackingEnabled = value;
71+
}
72+
}
73+
3674
public virtual DbSet<AuditLog> AuditLogs { get; set; }
3775
public virtual DbSet<AuditLogDetail> AuditLogDetails { get; set; }
3876

@@ -117,17 +155,29 @@ public virtual int SaveChanges(object userName)
117155
dynamic metaData = new ExpandoObject();
118156
_metadataConfiguration?.Invoke(metaData);
119157

120-
_coreTracker.AuditChanges(userName, metaData);
158+
if (ModificationTrackingEnabled)
159+
_coreTracker.AuditModifications(userName, metaData);
160+
if (DeletionTrackingEnabled)
161+
_coreTracker.AuditDeletions(userName, metaData);
121162

122-
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
123-
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
124-
int result = base.SaveChanges();
125-
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
163+
int result;
164+
if (AdditionTrackingEnabled)
165+
{
166+
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
167+
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
168+
result = base.SaveChanges();
169+
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
126170

127-
_coreTracker.AuditAdditions(userName, addedEntries, metaData);
171+
_coreTracker.AuditAdditions(userName, addedEntries, metaData);
172+
//save changes to audit of added entries
173+
base.SaveChanges();
174+
}
175+
else
176+
{
177+
//save changes
178+
result = base.SaveChanges();
179+
}
128180

129-
//save changes to audit of added entries
130-
base.SaveChanges();
131181
return result;
132182
}
133183
/// <summary>
@@ -162,18 +212,30 @@ public virtual async Task<int> SaveChangesAsync(object userName, CancellationTok
162212
dynamic metadata = new ExpandoObject();
163213
_metadataConfiguration?.Invoke(metadata);
164214

165-
_coreTracker.AuditChanges(userName, metadata);
215+
if (ModificationTrackingEnabled)
216+
_coreTracker.AuditModifications(userName, metadata);
217+
if (DeletionTrackingEnabled)
218+
_coreTracker.AuditDeletions(userName, metadata);
166219

167-
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
220+
int result;
221+
if (AdditionTrackingEnabled)
222+
{
223+
IEnumerable<EntityEntry> addedEntries = _coreTracker.GetAdditions();
168224

169-
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
170-
int result = await base.SaveChangesAsync(cancellationToken);
225+
// Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining.
226+
result = await base.SaveChangesAsync(cancellationToken);
171227

172-
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
173-
_coreTracker.AuditAdditions(userName, addedEntries, metadata);
228+
//By now., we have got the primary keys of added entries of added entiries because of the call to savechanges.
229+
_coreTracker.AuditAdditions(userName, addedEntries, metadata);
174230

175-
//save changes to audit of added entries
176-
await base.SaveChangesAsync(cancellationToken);
231+
//save changes to audit of added entries
232+
await base.SaveChangesAsync(cancellationToken);
233+
}
234+
else
235+
{
236+
//save changes
237+
result = await base.SaveChangesAsync(cancellationToken);
238+
}
177239

178240
return result;
179241
}

TrackerEnabledDbContext/Configuration/GlobalTrackingConfig.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,20 @@ namespace TrackerEnabledDbContext.Common.Configuration
66
{
77
public static class GlobalTrackingConfig
88
{
9-
public static bool Enabled { get; set; } = true;
10-
9+
public static bool Enabled
10+
{
11+
get { return AdditionsEnabled || ModificationsEnabled || DeletionsEnabled; }
12+
set
13+
{
14+
AdditionsEnabled = value;
15+
ModificationsEnabled = value;
16+
DeletionsEnabled = value;
17+
}
18+
}
19+
public static bool AdditionsEnabled { get; set; } = true;
20+
public static bool ModificationsEnabled { get; set; } = true;
21+
public static bool DeletionsEnabled { get; set; } = true;
1122
public static bool TrackEmptyPropertiesOnAdditionAndDeletion { get; set; } = false;
12-
1323
public static bool DisconnectedContext { get; set; } = false;
1424

1525
/// <summary>

0 commit comments

Comments
 (0)