@using PowderCoating.Core.Entities @using System.Text.Json @model AuditLog @{ ViewData["Title"] = "Audit Entry"; JsonElement ParseJson(string? json) { if (string.IsNullOrWhiteSpace(json)) return default; try { return JsonDocument.Parse(json).RootElement; } catch { return default; } } var oldData = ParseJson(Model.OldValues); var newData = ParseJson(Model.NewValues); }
Back

Audit Entry #@Model.Id

Event Details
Timestamp
@Model.Timestamp.Tz(ViewBag.CompanyTimeZone as string).ToString("MMM dd, yyyy HH:mm:ss")
Action
"bg-success", "Updated" => "bg-primary", "Deleted" => "bg-danger", "Restored" => "bg-warning text-dark", _ => "bg-secondary" })">@Model.Action
Entity Type
@Model.EntityType
Entity ID
@(Model.EntityId ?? "—")
Description
@(Model.EntityDescription ?? "—")
User
@Model.UserName
Company
@(Model.CompanyName ?? (Model.CompanyId?.ToString() ?? "—"))
IP Address
@(Model.IpAddress ?? "—")
@if (Model.OldValues != null || Model.NewValues != null) {
Change Diff
@{ // Union all property names from both old and new var keys = new HashSet(); if (oldData.ValueKind == JsonValueKind.Object) foreach (var p in oldData.EnumerateObject()) keys.Add(p.Name); if (newData.ValueKind == JsonValueKind.Object) foreach (var p in newData.EnumerateObject()) keys.Add(p.Name); foreach (var key in keys.OrderBy(k => k)) { var oldVal = oldData.ValueKind == JsonValueKind.Object && oldData.TryGetProperty(key, out var ov) ? ov.ToString() : null; var newVal = newData.ValueKind == JsonValueKind.Object && newData.TryGetProperty(key, out var nv) ? nv.ToString() : null; } }
Field Old Value New Value
@key @(oldVal ?? "—") @(newVal ?? "—")
} else { @if (!string.IsNullOrWhiteSpace(Model.NewValues)) {
Notes / Detail
@Model.NewValues
} }