import { fetchBarcodeDataForPrint } from '@/app/lib/actions/printActions';
import { notFound } from 'next/navigation';
import { PrintPreview } from '@/app/ui/PrintPreview';
import { getTranslations } from 'next-intl/server';

interface PrintPageProps {
  params: { 
    year: string; 
    month: string; 
    locale: string;
  };
}

export default async function PrintPage({ params }: PrintPageProps) {
  const year = parseInt(params.year);
  const month = parseInt(params.month);

  // Validate year and month parameters
  if (isNaN(year) || isNaN(month) || month < 1 || month > 12) {
    notFound();
  }

  let printData;

  try {
    printData = await fetchBarcodeDataForPrint(year, month);
  } catch (error) {
    console.error('Error fetching print data:', error);
    notFound();
  }

  // Get translations for the current locale
  const t = await getTranslations("home-page.print-preview");
  const yearMonth = `${year}-${month.toString().padStart(2, '0')}`;
  const translations = {
    title: t("title"),
    barcodesFound: t("barcodes-found"),
    barcodeSingular: t("barcode-singular"),
    printButton: t("print-button"),
    printFooter: t("print-footer", { date: new Date().toLocaleDateString() }),
    tableHeaderIndex: t("table-header-index"),
    tableHeaderBillInfo: t("table-header-bill-info"),
    tableHeaderBarcode: t("table-header-barcode"),
    emptyStateTitle: t("empty-state-title"),
    emptyStateMessage: t("empty-state-message", { yearMonth })
  };

  // If no barcode data found, show empty state
  if (!printData || printData.length === 0) {
    return (
      <div className="min-h-screen flex items-center justify-center">
        <div className="text-center">
          <h1 className="text-2xl font-bold mb-4">{translations.emptyStateTitle}</h1>
          <p className="text-gray-600">
            {translations.emptyStateMessage}
          </p>
        </div>
      </div>
    );
  }

  return <PrintPreview data={printData} year={year} month={month} translations={translations} />;
}