using QYZH.InteractiveMagazine.Models.Enum;

namespace QYZH.InteractiveMagazine.Models.Dto.Pet;

/// <summary>
/// 皮肤创建/更新输入
/// </summary>
public class PetSkinInput
{
    /// <summary>
    /// 所属宠物模板Id
    /// </summary>
    public long TemplateId { get; set; }

    /// <summary>
    /// 皮肤名称
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 描述/特效说明
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// 稀有度: Normal, Rare, Epic, Legendary
    /// </summary>
    public string Rarity { get; set; } = "Normal";

    /// <summary>
    /// 排序权重
    /// </summary>
    public int SortOrder { get; set; }

    /// <summary>
    /// 皮肤类型: Normal, Limited, Event
    /// </summary>
    public string Type { get; set; } = PetSkinTypeEnum.Normal.ToString();

    /// <summary>
    /// 封面图片地址
    /// </summary>
    public string? CoverImageUrl { get; set; }
}

/// <summary>
/// 皮肤输出
/// </summary>
public class PetSkinOutput
{
    public long Id { get; set; }
    public long TemplateId { get; set; }
    public string Name { get; set; } = string.Empty;
    public string? Description { get; set; }
    public string Rarity { get; set; } = string.Empty;
    public int SortOrder { get; set; }
    public string Type { get; set; } = string.Empty;
    /// <summary>
    /// 封面图片地址
    /// </summary>
    public string? CoverImageUrl { get; set; }
    public string? CreatedBy { get; set; }
    public DateTime CreatedAt { get; set; }
    public string? UpdatedBy { get; set; }
    public DateTime? UpdatedAt { get; set; }

    /// <summary>
    /// 关联的皮肤图片列表
    /// </summary>
    public List<PetSkinImageOutput>? Images { get; set; }
}

/// <summary>
/// 皮肤分页查询输入
/// </summary>
public class PetSkinQueryInput : PageQueryModel
{
    /// <summary>
    /// 所属宠物模板Id（必填）
    /// </summary>
    public long TemplateId { get; set; }

    /// <summary>
    /// 皮肤名称（模糊搜索）
    /// </summary>
    public string? Name { get; set; }

    /// <summary>
    /// 稀有度: Normal, Rare, Epic, Legendary
    /// </summary>
    public string? Rarity { get; set; }
}

/// <summary>
/// 皮肤图片创建/更新输入
/// </summary>
public class PetSkinImageInput
{
    /// <summary>
    /// 皮肤Id
    /// </summary>
    public long SkinId { get; set; }

    /// <summary>
    /// 进化阶段Id
    /// </summary>
    public long EvolutionStageId { get; set; }

    /// <summary>
    /// 图片地址
    /// </summary>
    public string ImageUrl { get; set; } = string.Empty;

    /// <summary>
    /// 图片顺序（动画帧序号）
    /// </summary>
    public int SortOrder { get; set; }

    /// <summary>
    /// 图片类型: Normal, Special
    /// </summary>
    public string Type { get; set; } = PetSkinImageTypeEnum.Normal.ToString();
}

/// <summary>
/// 皮肤图片输出
/// </summary>
public class PetSkinImageOutput
{
    public long Id { get; set; }
    public long SkinId { get; set; }
    public long EvolutionStageId { get; set; }
    public string ImageUrl { get; set; } = string.Empty;
    public int SortOrder { get; set; }
    public string Type { get; set; } = string.Empty;
    public string? CreatedBy { get; set; }
    public DateTime CreatedAt { get; set; }
    public string? UpdatedBy { get; set; }
    public DateTime? UpdatedAt { get; set; }
}

/// <summary>
/// 皮肤按进化阶段分组的图片输出（每阶段包含阶段信息和图片列表）
/// </summary>
public class SkinEvolutionStageOutput
{
    public long EvolutionId { get; set; }
    public string StageName { get; set; } = string.Empty;
    public int StageLevel { get; set; }
    public int RequiredGrowth { get; set; }
    public long? PreviousEvolutionId { get; set; }
    public List<PetSkinImageOutput> Images { get; set; } = new();
}
