import type { Metadata } from "next";
import { CheckoutContent } from "./components/CheckoutContent";
import { TrustRow } from "../components/TrustRow";
import { Footer } from "../components/Footer";
import { getShippingMethods, getShippingCountries, getPaymentMethods, getCartTrustBadges, getShippingSettings, getDefaultTaxRatePercent, getKleinunternehmer } from "../lib/payload";
import { getSessionCustomer, getCustomerProfile } from "../lib/customerAuth";

// robots: noindex — transactional page, same reasoning as /cart.
export const metadata: Metadata = {
  title: "Checkout",
  description: "Schließe deine Bestellung bei einfach produktiv ab.",
  robots: {
    index: false,
    follow: true,
  },
};

export default async function CheckoutPage() {
  const [shippingMethods, shippingCountries, paymentMethods, trustBadges, shippingSettings, defaultTaxRate, kleinunternehmer, session] = await Promise.all([
    getShippingMethods(),
    getShippingCountries(),
    getPaymentMethods(),
    getCartTrustBadges(),
    getShippingSettings(),
    getDefaultTaxRatePercent(),
    getKleinunternehmer(),
    getSessionCustomer(),
  ]);
  // Full profile (incl. saved address) only fetched when a session exists
  // — pre-fills Card 1 for a returning customer instead of leaving it blank.
  const profile = session ? await getCustomerProfile(session.token) : null;

  return (
    <>
      <main className="flex flex-col flex-1 bg-bg-base">
        <CheckoutContent
          shippingMethods={shippingMethods}
          shippingCountries={shippingCountries}
          paymentMethods={paymentMethods}
          trustBadges={trustBadges}
          shippingSettings={shippingSettings}
          defaultTaxRate={defaultTaxRate}
          kleinunternehmer={kleinunternehmer}
          customerEmail={session?.customer.email ?? null}
          savedProfile={profile}
        />
        <TrustRow />
      </main>
      <Footer />
    </>
  );
}
