using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.Advert;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 广告管理服务接口
/// </summary>
public interface IAdvertService
{
    #region 广告管理

    /// <summary>
    /// 获取广告列表
    /// </summary>
    /// <param name="request">查询请求</param>
    /// <returns>分页广告列表</returns>
    Task<PagedResult<AdvertResponse>> GetAdvertsAsync(AdvertListRequest request);

    /// <summary>
    /// 获取广告详情
    /// </summary>
    /// <param name="id">广告ID</param>
    /// <returns>广告详情</returns>
    Task<AdvertResponse?> GetAdvertByIdAsync(int id);

    /// <summary>
    /// 创建广告
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新广告ID</returns>
    Task<int> CreateAdvertAsync(AdvertCreateRequest request);

    /// <summary>
    /// 更新广告
    /// </summary>
    /// <param name="id">广告ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateAdvertAsync(int id, AdvertUpdateRequest request);

    /// <summary>
    /// 删除广告
    /// </summary>
    /// <param name="id">广告ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteAdvertAsync(int id);

    #endregion

    #region 广告类型管理

    /// <summary>
    /// 获取广告类型列表
    /// </summary>
    /// <returns>广告类型列表</returns>
    Task<List<AdvertTypeResponse>> GetAdvertTypesAsync();

    /// <summary>
    /// 创建广告类型
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新类型ID</returns>
    Task<int> CreateAdvertTypeAsync(AdvertTypeCreateRequest request);

    /// <summary>
    /// 更新广告类型
    /// </summary>
    /// <param name="id">类型ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateAdvertTypeAsync(int id, AdvertTypeUpdateRequest request);

    /// <summary>
    /// 删除广告类型
    /// </summary>
    /// <param name="id">类型ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteAdvertTypeAsync(int id);

    #endregion
}
