import type {
  ProductBatchPricePreviewDto,
  ProductBatchPricePreviewItemDto,
  ProductCategoryManageDto,
  ProductPickerItemDto,
} from '#/api/product';

/** 批量工具卡片标识。 */
export type BatchToolKey = 'category' | 'excel' | 'price' | 'sale' | 'sync';

/** 批量范围类型。 */
export type BatchScopeType = 'all' | 'category' | 'manual';

/** 批量工具卡片。 */
export interface BatchToolCard {
  description: string;
  icon: string;
  key: BatchToolKey;
  title: string;
  tone: 'blue' | 'cyan' | 'green' | 'orange' | 'purple';
}

/** 分类选项。 */
export interface BatchCategoryOption {
  label: string;
  productCount: number;
  value: string;
}

/** 商品选项。 */
export interface BatchProductOption {
  label: string;
  price: number;
  spuCode: string;
  value: string;
}

/** 批量页共享状态。 */
export interface BatchPageState {
  activeTool: BatchToolKey | null;
  latestResultText: string;
  scopeType: BatchScopeType;
}

/** 调价状态。 */
export interface BatchPriceState {
  amount: number;
  amountType: 'fixed' | 'percent';
  direction: 'down' | 'up';
  preview: ProductBatchPricePreviewDto;
}

/** 同步状态。 */
export interface BatchSyncState {
  productIds: string[];
  syncPrice: boolean;
  syncStatus: boolean;
  syncStock: boolean;
  targetStoreIds: string[];
}

/** 导入导出状态。 */
export interface BatchExcelState {
  exportCategoryIds: string[];
  exportScopeType: 'all' | 'category';
  importFile: File | null;
}

/** 批量页分类 DTO 转选项。 */
export function toBatchCategoryOptions(rows: ProductCategoryManageDto[]) {
  return rows.map<BatchCategoryOption>((item) => ({
    label: item.name,
    productCount: item.productCount,
    value: item.id,
  }));
}

/** 批量页商品 DTO 转选项。 */
export function toBatchProductOptions(rows: ProductPickerItemDto[]) {
  return rows.map<BatchProductOption>((item) => ({
    label: `${item.name}（${item.spuCode}）`,
    price: item.price,
    spuCode: item.spuCode,
    value: item.id,
  }));
}

/** 调价预览行。 */
export type BatchPricePreviewRow = ProductBatchPricePreviewItemDto;
