using FoodLabeling.Application.Contracts.Dtos.Location;
using FoodLabeling.Application.Contracts.Dtos.Common;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace FoodLabeling.Application.Contracts.IServices;
///
/// 门店管理接口(美国版)
///
public interface ILocationAppService : IApplicationService
{
///
/// 门店分页列表;管理员返回全部门店,非管理员仅返回其绑定门店所属 Region(Partner + GroupName)下的门店。
///
/// 查询条件
Task> GetListAsync(LocationGetListInputVo input);
///
/// 新增门店
///
/// 门店信息
Task CreateAsync(LocationCreateInputVo input);
///
/// 编辑门店
///
/// 门店Id
/// 门店信息
Task UpdateAsync(Guid id, LocationUpdateInputVo input);
///
/// 删除门店(逻辑删除)
///
/// 门店Id
Task DeleteAsync(Guid id);
///
/// 下载 Location Manager 批量导入模板(读取服务器 batchImportOfFiles 目录下 xlsx)
///
Task DownloadLocationImportTemplateAsync();
///
/// 按列表筛选条件全量导出门店为 Excel(与列表相同过滤与排序,不分页、不限条数)
///
Task ExportLocationsExcelAsync(LocationGetListInputVo input);
///
/// 批量导入门店(Excel,multipart/form-data 字段 file)
///
Task ImportLocationsBatchAsync(LocationBatchImportInputVo input);
///
/// 批量编辑门店(网格保存全部,JSON 一次提交多行)
///
///
/// 每行通过 id 定位门店,字段与单条 PUT /location/{id} 一致;id 为 的项忽略。
///
/// 示例请求:
/// ```json
/// {
/// "items": [
/// {
/// "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
/// "partner": "MedVantage Cafe Group",
/// "groupName": "NC Region",
/// "locationName": "UNCC store",
/// "street": "222 School House Lane",
/// "city": "Charlotte",
/// "stateCode": "NC",
/// "country": "USA",
/// "zipCode": "29889",
/// "phone": "2123456789",
/// "email": "nc@example.com",
/// "latitude": 35.3,
/// "longitude": -80.7,
/// "state": true
/// }
/// ]
/// }
/// ```
///
/// 参数说明:
/// - items: 编辑行数组;单行失败不影响其它行提交结果汇总
///
/// 批量编辑请求体
/// 成功数、失败数及失败明细
/// 全部或部分行处理完成,见返回体中的计数与 errors
/// 整单校验失败(如超过单次条数上限、items 为空)
/// 服务器错误
Task UpdateLocationsBulkAsync(LocationBulkUpdateInputVo input);
}