namespace QYZH.InteractiveMagazine.Models.Dto.UserAnswerTaskService;

/// <summary>
/// 目录树形结构输出（包含一级目录列表）
/// </summary>
public class CatalogTreeOutput
{
    /// <summary>
    /// 一级目录列表
    /// </summary>
    public List<FirstLevelCatalogItem> FirstLevelCatalogs { get; set; } = [];
}

/// <summary>
/// 一级目录项输出
/// </summary>
public class FirstLevelCatalogItem
{
    /// <summary>
    /// 一级目录ID
    /// </summary>
    public long CatalogId { get; set; }

    /// <summary>
    /// 一级目录名称
    /// </summary>
    public string CatalogName { get; set; }

    /// <summary>
    /// 文章篇数（来自二级目录对应的所有有题目的页面数总和）
    /// </summary>
    public int ArticleCount { get; set; }

    /// <summary>
    /// 任务数量（来自二级目录对应的所有任务按GroupId去重后的总和）
    /// </summary>
    public int TaskCount { get; set; }

    /// <summary>
    /// 二级目录列表
    /// </summary>
    public List<SecondLevelCatalogItem> Children { get; set; } = [];
}

/// <summary>
/// 二级目录项输出（含页码范围、任务数量、状态、总成长值、总积分及任务列表）
/// </summary>
public class SecondLevelCatalogItem
{
    /// <summary>
    /// 二级目录ID
    /// </summary>
    public long CatalogId { get; set; }

    /// <summary>
    /// 二级目录名称
    /// </summary>
    public string CatalogName { get; set; }

    /// <summary>
    /// 起始页码
    /// </summary>
    public int StartPage { get; set; }

    /// <summary>
    /// 结束页码
    /// </summary>
    public int EndPage { get; set; }

    /// <summary>
    /// 任务数量（按GroupId去重后的数量）
    /// </summary>
    public int TaskCount { get; set; }

    /// <summary>
    /// 状态（格式如：1/2 进行中、0/2 未开始、2/2 已完成）
    /// </summary>
    public string Status { get; set; }

    /// <summary>
    /// 总成长值（该二级目录下所有任务的成长值总和，按GroupId去重）
    /// </summary>
    public int TotalGrowthPoints { get; set; }

    /// <summary>
    /// 总积分（该二级目录下所有任务的积分总和，按GroupId去重）
    /// </summary>
    public int TotalPoints { get; set; }

    /// <summary>
    /// 任务列表（每个任务的详细信息）
    /// </summary>
    public List<CatalogTaskItem> Tasks { get; set; } = [];
}

/// <summary>
/// 目录任务项输出（任务详情）
/// </summary>
public class CatalogTaskItem
{
    /// <summary>
    /// 任务分组ID（GroupId）
    /// </summary>
    public long GroupId { get; set; }

    /// <summary>
    /// 任务名称（取主任务的Task字段）
    /// </summary>
    public string TaskName { get; set; }

    /// <summary>
    /// 任务状态（未开始、进行中、已完成）
    /// </summary>
    public string Status { get; set; }

    /// <summary>
    /// 成长值（取主任务的GrowthPoint）
    /// </summary>
    public int GrowthPoints { get; set; }

    /// <summary>
    /// 积分值（取主任务的Points）
    /// </summary>
    public int Points { get; set; }

    /// <summary>
    /// 答题时长（分钟，该GroupId下所有任务的AnswerSeconds累加后转换为分钟）
    /// </summary>
    public double AnswerMinutes { get; set; }
}