namespace GermanApp.Domain.Entities; /// /// Represents a user in the DeutschLernen system. /// public class User { public int Id { get; private set; } public string Username { get; private set; } = string.Empty; public string Email { get; private set; } = string.Empty; public string PasswordHash { get; private set; } = string.Empty; public string CurrentLevel { get; private set; } = "A1"; public int Streak { get; private set; } public int TotalPoints { get; private set; } public DateTime CreatedAt { get; private set; } /// /// Constructor for EF Core deserialization. /// private User() { } /// /// Factory method to create a new user. /// public static User Create(string username, string email, string passwordHash) { return new User { Username = username, Email = email.ToLowerInvariant(), PasswordHash = passwordHash, CurrentLevel = "A1", Streak = 0, TotalPoints = 0, CreatedAt = DateTime.UtcNow }; } /// /// Updates user's gamification stats. /// public void AddPoints(int points) { TotalPoints += points; } /// /// Updates user's streak. /// public void UpdateStreak(int streak) { Streak = streak; } /// /// Updates user's current level. /// public void UpdateLevel(string level) { CurrentLevel = level; } /// /// Changes user's email. /// public void ChangeEmail(string newEmail) { Email = newEmail.ToLowerInvariant(); } /// /// Changes user's password hash. /// public void ChangePassword(string newPasswordHash) { PasswordHash = newPasswordHash; } }