using Microsoft.AspNetCore.Identity; namespace DramaLing.Core.Entities; public class User : IdentityUser { public string DisplayName { get; set; } = string.Empty; public string? AvatarUrl { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; public DateTime? LastLoginAt { get; set; } public bool IsDeleted { get; set; } = false; // Language Learning Properties public string CurrentLanguage { get; set; } = "en"; // ISO 639-1 code public string NativeLanguage { get; set; } = "zh"; // ISO 639-1 code public string CurrentLevel { get; set; } = "A1"; // CEFR level public int TotalExperience { get; set; } = 0; public int Diamonds { get; set; } = 0; public int LightningEnergy { get; set; } = 0; public int LifePoints { get; set; } = 5; public int MaxLifePoints { get; set; } = 5; public DateTime? NextLifePointRecovery { get; set; } // Subscription public bool IsVipUser { get; set; } = false; public DateTime? VipExpiresAt { get; set; } // Learning Statistics public int ConsecutiveDays { get; set; } = 0; public DateTime? LastLearningDate { get; set; } public int TotalDialoguesCompleted { get; set; } = 0; public int TotalVocabularyMastered { get; set; } = 0; // Navigation Properties public virtual ICollection UserProgresses { get; set; } = new List(); public virtual ICollection UserAchievements { get; set; } = new List(); public virtual ICollection VocabularyProgresses { get; set; } = new List(); }