using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.WelfareHouse;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 福利屋入口服务接口
/// </summary>
public interface IWelfareHouseService
{
    /// <summary>
    /// 获取福利屋入口列表（分页）
    /// </summary>
    /// <param name="request">分页请求</param>
    /// <returns>分页结果</returns>
    Task<PagedResult<WelfareHouseResponse>> GetWelfareHousesAsync(WelfareHouseListRequest request);

    /// <summary>
    /// 获取福利屋入口详情
    /// </summary>
    /// <param name="id">福利屋入口ID</param>
    /// <returns>福利屋入口详情</returns>
    Task<WelfareHouseResponse?> GetWelfareHouseByIdAsync(int id);

    /// <summary>
    /// 创建福利屋入口
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新创建的福利屋入口ID</returns>
    Task<int> CreateWelfareHouseAsync(WelfareHouseCreateRequest request);

    /// <summary>
    /// 更新福利屋入口
    /// </summary>
    /// <param name="id">福利屋入口ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateWelfareHouseAsync(int id, WelfareHouseUpdateRequest request);

    /// <summary>
    /// 删除福利屋入口
    /// </summary>
    /// <param name="id">福利屋入口ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteWelfareHouseAsync(int id);

    /// <summary>
    /// 更新福利屋入口状态
    /// </summary>
    /// <param name="id">福利屋入口ID</param>
    /// <param name="request">状态请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateStatusAsync(int id, WelfareHouseStatusRequest request);
}
