using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.Reward;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 奖励管理服务接口
/// </summary>
public interface IRewardService
{
    /// <summary>
    /// 获取奖励列表（分页）
    /// </summary>
    /// <param name="request">分页请求</param>
    /// <returns>分页结果</returns>
    Task<PagedResult<RewardResponse>> GetRewardsAsync(RewardListRequest request);

    /// <summary>
    /// 获取奖励详情
    /// </summary>
    /// <param name="id">奖励ID</param>
    /// <returns>奖励详情</returns>
    Task<RewardResponse?> GetRewardByIdAsync(int id);

    /// <summary>
    /// 根据业务奖励ID获取奖励列表
    /// </summary>
    /// <param name="rewardId">业务奖励ID</param>
    /// <returns>奖励列表</returns>
    Task<List<RewardResponse>> GetRewardsByRewardIdAsync(string rewardId);

    /// <summary>
    /// 创建奖励
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新创建的奖励ID</returns>
    Task<int> CreateRewardAsync(RewardCreateRequest request);

    /// <summary>
    /// 更新奖励
    /// </summary>
    /// <param name="id">奖励ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateRewardAsync(int id, RewardUpdateRequest request);

    /// <summary>
    /// 删除奖励
    /// </summary>
    /// <param name="id">奖励ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteRewardAsync(int id);

    /// <summary>
    /// 批量更新奖励
    /// </summary>
    /// <param name="request">批量更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> BatchUpdateRewardsAsync(RewardBatchRequest request);
}
