/**
 * 产品模态框适配器组件
 * 作者: 阿瑞
 * 功能: 适配ProductModal组件接口，供销售记录创建页面使用
 * 版本: 1.0.0
 */

'use client';

import React, { useState } from 'react';
import { Product } from '@/models/team/types/old/product';
import ProductModal from '../../products/product-modal';
import { useParams } from 'next/navigation';

/**
 * 产品模态框适配器组件接口
 */
interface ProductModalAdapterProps {
  isOpen: boolean;
  onClose: () => void;
  product: Product | null;
  onSuccess: () => void;
  suppliers: { id: number; name: string }[];
  brands: { id: number; name: string }[];
  categories: { id: number; name: string }[];
  availableLevels: string[];
  onSelectProduct?: (product: Product) => void;
}

/**
 * 产品模态框适配器组件
 * 用于在销售记录创建页面中使用ProductModal
 */
export default function ProductModalAdapter({
  isOpen,
  onClose,
  product,
  onSuccess,
  suppliers,
  brands,
  categories,
  availableLevels,
  onSelectProduct
}: ProductModalAdapterProps) {
  const params = useParams();
  const teamCode = params?.teamCode as string;
  const [lastProductId, setLastProductId] = useState<number | null>(null);

  /**
   * 处理产品创建/编辑成功
   * 当产品创建成功后，自动获取并选择该产品
   */
  const handleSuccess = async () => {
    // 先调用原始的onSuccess回调
    onSuccess();

    // 如果没有提供onSelectProduct，则不需要自动选择
    if (!onSelectProduct) return;

    try {
      // 获取最新创建的产品
      const response = await fetch(`/api/team/${teamCode}/products?sortBy=createdAt&sortOrder=desc&pageSize=1`);

      if (response.ok) {
        const data = await response.json();
        if (data.products && data.products.length > 0) {
          const newProduct = data.products[0];
          // 避免重复选择同一个产品
          if (newProduct.id !== lastProductId) {
            setLastProductId(newProduct.id);
            onSelectProduct(newProduct);
          }
        }
      }
    } catch (error) {
      console.error('获取最新创建的产品失败:', error);
    }
  };

  return (
    <ProductModal
      isOpen={isOpen}
      onClose={onClose}
      product={product}
      onSuccess={handleSuccess}
      suppliers={suppliers}
      brands={brands}
      categories={categories}
      availableLevels={availableLevels}
    />
  );
} 