namespace LctMonolith.Domain.Entities; /// /// Mission (task) definition configured by HR. /// public class Mission { public Guid Id { get; set; } = Guid.NewGuid(); public string Title { get; set; } = null!; public string? Description { get; set; } /// Optional branch (path) name for grouping / visualization. public string? Branch { get; set; } public MissionCategory Category { get; set; } /// Minimum rank required to access the mission (nullable = available from start). public Guid? MinRankId { get; set; } public Rank? MinRank { get; set; } /// Experience reward on completion. public int ExperienceReward { get; set; } /// Mana reward on completion. public int ManaReward { get; set; } public bool IsActive { get; set; } = true; public ICollection CompetencyRewards { get; set; } = new List(); public ICollection ArtifactRewards { get; set; } = new List(); public ICollection UserMissions { get; set; } = new List(); public ICollection RanksRequiring { get; set; } = new List(); } /// Per-user mission status and progression. public class UserMission { public Guid UserId { get; set; } public AppUser User { get; set; } = null!; public Guid MissionId { get; set; } public Mission Mission { get; set; } = null!; public MissionStatus Status { get; set; } = MissionStatus.Available; /// Date/time of last status change. public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; /// Optional submission payload (e.g., link, text, attachments pointer). public string? SubmissionData { get; set; } }