using BusinessERP.Helpers.Enums; using Microsoft.EntityFrameworkCore.ChangeTracking; using Newtonsoft.Json; using System; using System.Collections.Generic; namespace BusinessERP.Models { public class AuditEntry { public AuditEntry(EntityEntry entry) { Entry = entry; } public EntityEntry Entry { get; } public string UserId { get; set; } public string TableName { get; set; } public Dictionary KeyValues { get; } = new Dictionary(); public Dictionary OldValues { get; } = new Dictionary(); public Dictionary NewValues { get; } = new Dictionary(); public AuditType AuditType { get; set; } public List ChangedColumns { get; } = new List(); public AuditLogs ToAudit() { var _AuditLogs = new AuditLogs(); _AuditLogs.UserId = UserId; _AuditLogs.Type = AuditType.ToString(); _AuditLogs.TableName = TableName; _AuditLogs.DateTime = DateTime.UtcNow; _AuditLogs.PrimaryKey = JsonConvert.SerializeObject(KeyValues); _AuditLogs.OldValues = OldValues.Count == 0 ? null : JsonConvert.SerializeObject(OldValues); _AuditLogs.NewValues = NewValues.Count == 0 ? null : JsonConvert.SerializeObject(NewValues); _AuditLogs.AffectedColumns = ChangedColumns.Count == 0 ? null : JsonConvert.SerializeObject(ChangedColumns); return _AuditLogs; } } }