namespace YesChef.Api.Entities; /// /// Single-use, time-limited invitation to join a family. The raw token is sent /// to the recipient by email; only its SHA-256 hash is stored, so a database /// leak doesn't yield active invites. /// public class Invite { public int Id { get; set; } public int FamilyId { get; set; } public Family Family { get; set; } = null!; public required string Email { get; set; } public required string TokenHash { get; set; } public int IssuedByUserId { get; set; } public User IssuedByUser { get; set; } = null!; public DateTime IssuedAt { get; set; } = DateTime.UtcNow; public DateTime ExpiresAt { get; set; } public DateTime? ConsumedAt { get; set; } public int? ConsumedByUserId { get; set; } public User? ConsumedByUser { get; set; } }