using Entities.Interfaces;
namespace Entities.Models;
///
/// Represents a one-time admin registration key
///
public class AdminKey : IDbEntity
{
///
/// Unique identifier for the admin key
///
public int Id { get; set; }
///
/// The actual key code that user must provide during registration
///
public string KeyCode { get; set; } = string.Empty;
///
/// When the key was created
///
public DateTime CreatedAt { get; set; }
///
/// When the key expires (optional, can be null for no expiration)
///
public DateTime? ExpiresAt { get; set; }
///
/// Whether the key has been used
///
public bool IsUsed { get; set; }
///
/// When the key was used
///
public DateTime? UsedAt { get; set; }
///
/// The user who used this key (null if not yet used)
///
public int? UsedByUserId { get; set; }
///
/// Navigation property to the user who used this key
///
public User? UsedByUser { get; set; }
///
/// The admin who created this key
///
public int CreatedByAdminId { get; set; }
///
/// Navigation property to the admin who created this key
///
public User CreatedByAdmin { get; set; } = null!;
///
/// Optional description or note about this key
///
public string? Description { get; set; }
}