/**
 * 订单管理相关类型定义
 */

// 支付状态枚举
export enum PaymentStatus {
  PENDING = 1, // 待支付
  PAID = 2, // 已支付
  CANCELLED = 3, // 已取消
  REFUNDED = 4 // 已退款
}

// 订单类型
export type OrderType = 'single_card' | 'device'

// 买家类型
export type BuyerType = 'personal' | 'agent'

// 订单支付方式
export type OrderPaymentMethod = 'wallet' | 'wechat' | 'alipay' | 'offline'

// 订单佣金状态
export enum OrderCommissionStatus {
  NOT_APPLICABLE = 0, // 不适用
  PENDING = 1, // 待结算
  SETTLED = 2 // 已结算
}

// 订单明细
export interface OrderItem {
  id: number
  package_id: number
  package_name: string
  quantity: number
  unit_price: number // 单价(分)
  amount: number // 小计金额(分)
}

// 订单响应
export interface Order {
  id: number
  order_no: string
  order_type: OrderType
  buyer_id: number
  buyer_type: BuyerType
  payment_status: PaymentStatus
  payment_status_text: string
  payment_method: OrderPaymentMethod
  total_amount: number // 订单总金额(分)
  actual_paid_amount?: number // 实付金额(分)
  paid_at: string | null
  commission_status: OrderCommissionStatus
  commission_config_version: number
  device_id: number | null
  iot_card_id: number | null
  asset_identifier?: string // 资产标识符快照（ICCID 或 VirtualNo）
  asset_type?: string // 资产类型：single_card 或 device
  purchase_role?: string // 订单渠道
  purchase_remark?: string // 购买备注
  operator_name?: string // 操作者
  items: OrderItem[] | null
  created_at: string
  updated_at: string
}

// 订单查询参数
export interface OrderQueryParams {
  page?: number
  page_size?: number
  payment_status?: PaymentStatus
  order_type?: OrderType
  order_no?: string
  identifier?: string // 按资产标识符过滤
  purchase_role?: string // 订单渠道
  start_time?: string
  end_time?: string
  dateRange?: string[] | any // For date range picker in UI
}

// 订单列表响应
export interface OrderListResponse {
  items: Order[]
  page: number
  page_size: number
  total: number
  total_pages: number
}

// 创建订单请求
export interface CreateOrderRequest {
  order_type?: OrderType // 订单类型
  iot_card_id?: number | null // IoT卡ID
  device_id?: number | null // 设备ID
  identifier?: string // 资产标识符（ICCID 或 VirtualNo）
  package_ids: number[] // 套餐ID列表（前端限制单选,后端支持1-10个）
  payment_method: OrderPaymentMethod // 支付方式
  payment_voucher_key?: string // 线下支付凭证（仅 offline 必填）
}

// 创建订单响应 (返回订单详情)
export type CreateOrderResponse = Order
