/**
 * 供应商数据模型
 * 作者: 阿瑞
 * 功能: 提供供应商相关的数据访问方法
 * 版本: 1.0
 */

import { ISupplier, ISupplierListItem, SupplierStatus } from './types/ISupplier';

/**
 * 供应商模型
 * 提供供应商相关数据操作函数
 */
export class SupplierModel {
  /**
   * 获取供应商列表
   * @returns 供应商列表
   */
  static async getSuppliers(): Promise<ISupplierListItem[]> {
    try {
      // 此处应实现查询数据库的逻辑
      // 为了示例，返回模拟数据
      const mockSuppliers: ISupplierListItem[] = [
        { 
          id: 1, 
          order: 1, 
          name: '广州服装有限公司', 
          status: SupplierStatus.ENABLED,
          contact: { 
            phone: '13800138000', 
            contactPerson: '张先生',
            address: '广州市天河区高新技术开发区123号'
          } 
        },
        { 
          id: 2, 
          order: 2, 
          name: '深圳电子科技有限公司', 
          status: SupplierStatus.ENABLED,
          contact: { 
            phone: '13900139000', 
            contactPerson: '李女士',
            address: '深圳市南山区科技园456号'
          } 
        },
        { 
          id: 3, 
          order: 3, 
          name: '东莞家居用品有限公司', 
          status: SupplierStatus.BACKUP,
          contact: { 
            phone: '13700137000', 
            contactPerson: '王先生',
            address: '东莞市长安镇工业园789号'
          } 
        }
      ];
      
      return mockSuppliers;
    } catch (error) {
      console.error('获取供应商列表失败:', error);
      return [];
    }
  }

  /**
   * 根据ID获取供应商详情
   * @param supplierId 供应商ID
   * @returns 供应商详情或null
   */
  static async getSupplierById(
    supplierId: number | string
  ): Promise<ISupplier | null> {
    try {
      // 此处应实现查询数据库的逻辑
      // 为了示例，返回模拟数据
      const mockSupplier: ISupplier = {
        id: Number(supplierId),
        order: 1,
        name: '广州服装有限公司',
        contact: {
          phone: '13800138000',
          contactPerson: '张先生',
          address: '广州市天河区高新技术开发区123号'
        },
        status: SupplierStatus.ENABLED,
        level: 'A级',
        type: '生产商',
        remark: '优质供应商，合作5年',
        created_at: new Date().toISOString(),
        updated_at: new Date().toISOString(),
        categories: [1, 3]
      };
      
      return mockSupplier;
    } catch (error) {
      console.error(`获取供应商(ID: ${supplierId})失败:`, error);
      return null;
    }
  }
} 