using foodmarket.Domain.Common;

namespace foodmarket.Domain.Organizations;

/// <summary>Журнал действий внутри организации: создание/правка/удаление
/// доменных сущностей (Supply, RetailSale, Demand, Product, Counterparty).
/// Tenant-scoped — каждая орга видит ТОЛЬКО свой журнал; SuperAdmin видит
/// всё (как и для прочих TenantEntity).
///
/// Пишется автоматически через <c>OrgAuditInterceptor</c> на SaveChanges:
/// для отслеживаемых типов снимается diff (old/new значения свойств),
/// сериализуется в JSON и сохраняется одной строкой.</summary>
public class OrgAuditLog : TenantEntity
{
    public Guid? UserId { get; set; }
    /// <summary>"create" | "update" | "delete".</summary>
    public string Action { get; set; } = "";
    /// <summary>Имя CLR-типа без неймспейса: "RetailSale", "Product"…</summary>
    public string EntityType { get; set; } = "";
    public Guid? EntityId { get; set; }
    /// <summary>JSON-объект формата { "field": { "before": ..., "after": ... }, ... }.
    /// Для create — поля только в "after"; для delete — только "before".</summary>
    public string ChangesJson { get; set; } = "{}";
}
