namespace EntitlementDAL.DTOs; // LENTITLEMENTAUDIT (L-table) — immutable entitlement audit log row. public class EntitlementAuditDTO { public long LEntitlementAuditId { get; set; } public int ClientId { get; set; } public int SubscriptionId { get; set; } = -1; public int FeatureId { get; set; } = -1; public string Action { get; set; } = string.Empty; // ENTITLEMENT_GRANTED, BUNDLE_ISSUED, PLAN_CHANGED, SEATS_UPDATED, ADMIN_OVERRIDE, // SUBSCRIPTION_CREATED, ENTITLEMENT_SEEDED, GOLIVE_ACTIVATED, ENGAGEMENT_COMPLETED, // EXPIRY_WARNING_30D, EXPIRY_ESCALATION_7D, BETA_ENROLMENT_EXPIRED public string? OldValue { get; set; } public string? NewValue { get; set; } public string? Remarks { get; set; } public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } } // LFEATUREFLAGAUDIT (L-table) — immutable feature-flag audit log row. public class FeatureFlagAuditDTO { public long LFeatureFlagAuditId { get; set; } public int FeatureFlagId { get; set; } public int FeatureId { get; set; } = -1; public string Action { get; set; } = string.Empty; // FLAG_ON, FLAG_OFF, KILL_SWITCH_ACTIVATED, KILL_SWITCH_LIFTED, TARGET_ADDED, // TARGET_REMOVED, ROLLOUT_CHANGED, FLAG_ON_SCHEDULED, FLAG_OFF_SCHEDULED, // KILL_SWITCH_STALE_ALERT public byte OldFlagStatus { get; set; } public byte NewFlagStatus { get; set; } public byte OldRolloutType { get; set; } public byte NewRolloutType { get; set; } public string? KillSwitchReason { get; set; } public string? Remarks { get; set; } public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } }