/**
 * filekorolheader: 企业下拉列表API接口 - 用户管理页面企业数据获取服务
 * 功能：企业列表查询、下拉框数据准备、错误处理
 * 路径：/central-config/tenant/user-management/components/enterpriseApi
 * 规范：遵循crop-x/docs/开发项目规范.md，使用SDK API调用，TypeScript类型安全
 */

import { getAuthToken } from "@/utils/token.ts";
import {
  listTenantsApiV1TenantsGet
} from "@/lib/api/sdk.gen";

// 企业数据类型（简化版，用于下拉框）
export interface EnterpriseOption {
  id: string;
  company_name: string;
  tenant_code: string;
  is_active: boolean;
}

// API响应数据类型
export interface EnterpriseApiResponse {
  data: EnterpriseOption[];
  total: number;
  page: number;
  size: number;
  total_pages: number;
  has_next: boolean;
  has_prev: boolean;
}

// 查询参数接口
export interface EnterpriseQueryParams {
  search?: string;
  audit_status?: string;
  page?: number;
  size?: number;
  order_by?: string;
  sort_order?: 'asc' | 'desc';
}

/**
 * 获取企业列表数据（用于下拉框）
 * 固定查询100条数据，获取所有活跃企业
 */
export async function fetchEnterprisesForDropdown(params: EnterpriseQueryParams = {}): Promise<EnterpriseOption[]> {
  try {
    console.log('🏢 用户管理页面 - 获取企业下拉列表数据');

    // 构建查询参数，固定查询100条数据
    const queryParams: any = {
      page: 1,
      size: 100, // 固定查询100条
      sort_order: 'desc',
      order_by: 'created_at',
      // 只查询活跃的企业
      is_active: true,
    };

    // 添加可选参数
    if (params.search) queryParams.search = params.search;
    if (params.audit_status) queryParams.audit_status = params.audit_status;

    // 获取认证token
    const token = getAuthToken();

    // 使用SDK API调用企业查询接口
    const response = await listTenantsApiV1TenantsGet({
      query: {
        ...queryParams,
        // 添加时间戳防止缓存
        _t: Date.now(),
      },
      headers: token ? {
        'Authorization': `Bearer ${token}`,
      } : undefined,
    });

    if (response.error) {
      throw new Error(`API error: ${response.error.message || 'Unknown error'}`);
    }

    const data = response.data as any;

    console.log('🏢 企业下拉列表API响应:', {
      total: data?.total || 0,
      dataCount: data?.data?.length || 0,
    });

    // 转换响应数据格式，只返回需要的字段
    const enterprises: EnterpriseOption[] = (data?.data || []).map((tenant: any) => ({
      id: tenant.id,
      company_name: tenant.company_name,
      tenant_code: tenant.tenant_code,
      is_active: tenant.is_active,
    }));

    console.log('🏢 转换后的企业下拉列表数据:', enterprises.length, '条');

    return enterprises;
  } catch (error) {
    console.error('🏢 获取企业下拉列表失败:', error);
    throw error;
  }
}

/**
 * 将企业数据转换为下拉框选项格式
 */
export function transformEnterprisesToOptions(enterprises: EnterpriseOption[]): Array<{
  value: string;
  label: string;
}> {
  return enterprises
    .filter(enterprise => enterprise.is_active) // 只显示活跃企业
    .map(enterprise => ({
      value: enterprise.id,
      label: `${enterprise.company_name} (${enterprise.tenant_code})`,
    }))
    .sort((a, b) => a.label.localeCompare(b.label, 'zh-CN')); // 按中文名称排序
}