import { supabaseAdmin } from '@/lib/supabase';
import ProductDetailClient from './ProductDetailClient';
import { notFound } from 'next/navigation';

export default async function ProductPage({ params }: { params: Promise<{ id: string }> }) {
  const { id } = await params;

  const { data: product } = await supabaseAdmin
    .from('products')
    .select('*, category:categories(*)')
    .eq('id', id)
    .eq('is_active', true)
    .single();

  if (!product) notFound();

  // Fetch related products (same category)
  const { data: related } = await supabaseAdmin
    .from('products')
    .select('*, category:categories(*)')
    .eq('category_id', product.category_id)
    .neq('id', id)
    .eq('is_active', true)
    .limit(4);

  // Fetch reviews
  const { data: reviews } = await supabaseAdmin
    .from('reviews')
    .select('*, user:users(first_name, last_name, avatar_url)')
    .eq('product_id', id)
    .order('created_at', { ascending: false })
    .limit(10);

  // Fetch Payvato plans if eligible
  let payvatoPlans = null;
  if (product.payvato_eligible) {
    const { data } = await supabaseAdmin
      .from('payvato_plans')
      .select('*')
      .eq('product_id', id)
      .order('installment_months');
    payvatoPlans = data;
  }

  // Fetch highest bid if auction
  let highestBid = null;
  if (product.is_auction) {
    const { data } = await supabaseAdmin
      .from('auction_bids')
      .select('*, user:users(first_name, last_name)')
      .eq('product_id', id)
      .order('bid_amount', { ascending: false })
      .limit(5);
    highestBid = data;
  }

  return (
    <ProductDetailClient
      product={product}
      related={related || []}
      reviews={reviews || []}
      payvatoPlans={payvatoPlans}
      auctionBids={highestBid}
    />
  );
}
