private void GenerateAuditEvent(string id, int descriptionId, string description) { var audit = new Audit.Audit { category = "System call audit", description = description, fullyQualifiedClassName = "CreditCardController", descriptionId = descriptionId.ToString(), id = id, methodName = "Get", severity = "Information", timeStamp = DateTime.Now.ToString(), user = id, data = new object() }; auditHandler.Post(audit); }
private async Task <bool> TrackStatePrivateAsync([NotNull] EntityEntry entry, EntityState state) { if (entry.Entity is IEntity e) { Changecount++; var auditTran = await EnsureTransactionAuditAsync(); EventMethod method = EventMethod.Add; switch (state) { case EntityState.Deleted: break; case EntityState.Modified: e.UpdatedTransaction = auditTran; e.UpdatedTransactionId = auditTran.Id; method = EventMethod.Update; if (null != e.DeletedTransaction) { method = EventMethod.Delete; } break; case EntityState.Added: e.CreatedTransaction = auditTran; e.CreatedTransactionId = auditTran.Id; e.UpdatedTransaction = auditTran; e.UpdatedTransactionId = auditTran.Id; break; } if (AuditingEnabled) { var t = FindEntityType(e); string strObjectId = ""; //var json = System.Text.Json.JsonSerializer.Serialize(entity, EntityJsonSerializerOptions); var jSettings = new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, Formatting = Formatting.None, }; //jSettings.Converters.Add(new EntityConverter()); var eo = new ExpandoObject(); var d = (IDictionary <string, object>)eo; var props = entry.CurrentValues.Properties.OrderBy(x => x.Name).ToList(); foreach (var property in props) { var name = property.Name; var getter = property.PropertyInfo.GetMethod; var valueRaw = getter?.Invoke(e, null); d.Add(name, valueRaw); if (name == "Id") { strObjectId = $"{valueRaw}"; } } var vl = Newtonsoft.Json.JsonConvert.SerializeObject(d, jSettings); var a = new Audit.Audit() { Author = Author, Action = $"{method}", DateTime = DateTime.UtcNow, EntityName = t.entityType.Name, TableName = t.TableName, Id = $"{NewId.NextGuid():N}", KeyValue = strObjectId, TransactionId = auditTran.Id, Values = Encoding.UTF8.GetBytes(vl) }; await Audits.AddAsync(a); } return(true); } else { return(false); } }