using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.SignConfig;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 签到配置管理服务接口
/// </summary>
public interface ISignConfigService
{
    /// <summary>
    /// 获取签到配置列表（分页）
    /// </summary>
    /// <param name="request">分页请求</param>
    /// <returns>分页结果</returns>
    Task<PagedResult<SignConfigResponse>> GetSignConfigsAsync(SignConfigListRequest request);

    /// <summary>
    /// 获取签到配置详情
    /// </summary>
    /// <param name="id">签到配置ID</param>
    /// <returns>签到配置详情</returns>
    Task<SignConfigResponse?> GetSignConfigByIdAsync(int id);

    /// <summary>
    /// 创建签到配置
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新创建的签到配置ID</returns>
    Task<int> CreateSignConfigAsync(SignConfigCreateRequest request);

    /// <summary>
    /// 更新签到配置
    /// </summary>
    /// <param name="id">签到配置ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateSignConfigAsync(int id, SignConfigUpdateRequest request);

    /// <summary>
    /// 删除签到配置
    /// </summary>
    /// <param name="id">签到配置ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteSignConfigAsync(int id);

    /// <summary>
    /// 更新签到配置状态
    /// </summary>
    /// <param name="id">签到配置ID</param>
    /// <param name="status">状态值</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateSignConfigStatusAsync(int id, int status);

    /// <summary>
    /// 更新签到配置排序
    /// </summary>
    /// <param name="id">签到配置ID</param>
    /// <param name="sort">排序值</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateSignConfigSortAsync(int id, int sort);

    /// <summary>
    /// 更新签到配置奖励
    /// </summary>
    /// <param name="id">签到配置ID</param>
    /// <param name="request">奖励更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateSignConfigRewardAsync(int id, SignConfigRewardRequest request);
}
