using QYZH.InteractiveMagazine.Models.Enum;

namespace QYZH.InteractiveMagazine.Models.Dto.CheckIn;

/// <summary>
/// 签到配置创建/更新输入
/// </summary>
public class CheckInConfigInput
{
    /// <summary>
    /// 连续签到天数
    /// </summary>
    public int DayNumber { get; set; }

    /// <summary>
    /// 奖励积分数
    /// </summary>
    public int RewardPoints { get; set; }

    /// <summary>
    /// 额外奖励积分
    /// </summary>
    public int BonusPoints { get; set; }

    /// <summary>
    /// 配置类型: Daily, Streak
    /// </summary>
    public CheckInConfigTypeEnum Type { get; set; } = CheckInConfigTypeEnum.Daily;
}

/// <summary>
/// 签到配置输出
/// </summary>
public class CheckInConfigOutput
{
    /// <summary>
    /// 主键ID
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// 连续签到天数
    /// </summary>
    public int DayNumber { get; set; }

    /// <summary>
    /// 奖励积分数
    /// </summary>
    public int RewardPoints { get; set; }

    /// <summary>
    /// 额外奖励积分
    /// </summary>
    public int BonusPoints { get; set; }

    /// <summary>
    /// 配置类型: Daily, Streak
    /// </summary>
    public CheckInConfigTypeEnum Type { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    public int Status { get; set; }

    /// <summary>
    /// 创建人
    /// </summary>
    public string? CreatedBy { get; set; }

    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime CreatedAt { get; set; }

    /// <summary>
    /// 更新人
    /// </summary>
    public string? UpdatedBy { get; set; }

    /// <summary>
    /// 更新时间
    /// </summary>
    public DateTime? UpdatedAt { get; set; }
}

/// <summary>
/// 签到配置分页查询输入
/// </summary>
public class CheckInConfigQueryInput : PageQueryModel
{
    /// <summary>
    /// 配置类型筛选: Daily, Streak
    /// </summary>
    public CheckInConfigTypeEnum? Type { get; set; }
}
