using SVSim.Database.Common; namespace SVSim.Database.Models; /// /// Top-level entity for a promotional serial code. Admin inserts these directly via SQL; /// there is no JSON seed or admin endpoint. Case-sensitive match on . /// public class SerialCodeEntry : BaseEntity { /// User-typed code. Case-sensitive; unique index enforces no duplicates. public string Code { get; set; } = string.Empty; /// Player-facing mail body, copied onto every ViewerPresent created at redemption. public string Message { get; set; } = string.Empty; /// When the code becomes valid. NULL = always valid from creation. public DateTime? StartAt { get; set; } /// When the code expires. NULL = never expires. public DateTime? EndAt { get; set; } /// Admin kill-switch. False = treat as if it doesn't exist. public bool IsEnabled { get; set; } public List Rewards { get; set; } = new List(); }