using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.Coupon;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 优惠券管理服务接口
/// </summary>
public interface ICouponService
{
    /// <summary>
    /// 获取优惠券列表
    /// </summary>
    /// <param name="request">查询请求</param>
    /// <returns>分页优惠券列表</returns>
    Task<PagedResult<CouponResponse>> GetCouponsAsync(CouponListRequest request);

    /// <summary>
    /// 获取优惠券详情
    /// </summary>
    /// <param name="id">优惠券ID</param>
    /// <returns>优惠券详情</returns>
    Task<CouponResponse?> GetCouponByIdAsync(int id);

    /// <summary>
    /// 创建优惠券
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新优惠券ID</returns>
    Task<int> CreateCouponAsync(CouponCreateRequest request);

    /// <summary>
    /// 更新优惠券
    /// </summary>
    /// <param name="id">优惠券ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateCouponAsync(int id, CouponUpdateRequest request);

    /// <summary>
    /// 删除优惠券
    /// </summary>
    /// <param name="id">优惠券ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteCouponAsync(int id);

    /// <summary>
    /// 修改优惠券状态
    /// </summary>
    /// <param name="id">优惠券ID</param>
    /// <param name="status">状态：0-启用 其他-禁用</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateCouponStatusAsync(int id, int status);

    /// <summary>
    /// 获取优惠券领取记录列表
    /// </summary>
    /// <param name="request">查询请求</param>
    /// <returns>分页领取记录列表</returns>
    Task<PagedResult<CouponReceiveResponse>> GetCouponReceivesAsync(CouponReceiveListRequest request);
}
