/**
 * 단가 수정 페이지
 *
 * 경로: /sales/pricing-management/[id]/edit
 * API: GET /api/v1/pricing/{id}, PUT /api/v1/pricing/{id}
 */

import { PricingFormClient } from '@/components/pricing';
import { getPricingById, updatePricing, finalizePricing } from '@/components/pricing/actions';
import type { PricingData } from '@/components/pricing';

interface EditPricingPageProps {
  params: Promise<{
    id: string;
  }>;
}

export default async function EditPricingPage({ params }: EditPricingPageProps) {
  const { id } = await params;

  // 기존 단가 데이터 조회
  const pricingData = await getPricingById(id);

  if (!pricingData) {
    return (
      <div className="container mx-auto py-6 px-4">
        <div className="text-center py-12">
          <h2 className="text-xl font-semibold mb-2">단가 정보를 찾을 수 없습니다</h2>
          <p className="text-muted-foreground">
            올바른 단가 정보로 다시 시도해주세요.
          </p>
        </div>
      </div>
    );
  }

  // 서버 액션: 단가 수정
  async function handleSave(data: PricingData, isRevision?: boolean, revisionReason?: string) {
    'use server';

    const result = await updatePricing(id, data, revisionReason);

    if (!result.success) {
      throw new Error(result.error || '단가 수정에 실패했습니다.');
    }

    console.log('[EditPricingPage] 단가 수정 성공:', result.data, { isRevision, revisionReason });
  }

  // 서버 액션: 단가 확정
  async function handleFinalize(priceId: string) {
    'use server';

    const result = await finalizePricing(priceId);

    if (!result.success) {
      throw new Error(result.error || '단가 확정에 실패했습니다.');
    }

    console.log('[EditPricingPage] 단가 확정 성공:', result.data);
  }

  return (
    <PricingFormClient
      mode="edit"
      initialData={pricingData}
      onSave={handleSave}
      onFinalize={handleFinalize}
    />
  );
}
