using FoodLabeling.Application.Contracts.Dtos.Common;
using FoodLabeling.Application.Contracts.Dtos.Partner;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace FoodLabeling.Application.Contracts.IServices;
///
/// 合作伙伴管理接口(fl_partner)
///
public interface IPartnerAppService : IApplicationService
{
///
/// 合作伙伴分页列表(与导出使用相同筛选条件)
///
/// 分页与筛选;SkipCount 为页码(从 1 起)
/// 分页数据
/// 成功
/// 参数错误
/// 服务器错误
Task> GetListAsync(PartnerGetListInputVo input);
///
/// 合作伙伴详情
///
/// 主键 Id
/// 详情
/// 成功
/// Id 无效
/// 服务器错误
Task GetAsync(string id);
///
/// 新增合作伙伴
///
/// 名称、邮箱、电话、启用状态
/// 新建后的详情
///
/// 示例请求:
/// ```json
/// {
/// "partnerName": "Global Foods Inc.",
/// "contactEmail": "admin@globalfoods.com",
/// "phoneNumber": "+1 (555) 100-2000",
/// "state": true
/// }
/// ```
///
/// 成功
/// 校验失败
/// 服务器错误
Task CreateAsync(PartnerCreateInputVo input);
///
/// 编辑合作伙伴
///
/// 主键 Id
/// 名称、邮箱、电话、启用状态
/// 更新后的详情
/// 成功
/// 校验失败或记录不存在
/// 服务器错误
Task UpdateAsync(string id, PartnerUpdateInputVo input);
///
/// 删除合作伙伴(逻辑删除)
///
/// 主键 Id
/// 成功
/// Id 无效或记录不存在
/// 服务器错误
Task DeleteAsync(string id);
///
/// 按当前列表筛选条件批量导出合作伙伴为 PDF(Account Management「Company」页签;不分页,上限 5000 条)
///
/// 与列表相同的 Keyword、State;分页字段忽略
/// PDF 文件流
///
/// 筛选条件需与 一致,便于统计与导出数据对齐。
///
/// 成功返回 application/pdf
/// 参数错误
/// 服务器错误
Task ExportPdfAsync(PartnerGetListInputVo input);
}