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; }
}