import Stripe from "stripe";

export const stripe = process.env.STRIPE_SECRET_KEY
  ? new Stripe(process.env.STRIPE_SECRET_KEY)
  : null;

export const stripeConfigured = Boolean(
  process.env.STRIPE_SECRET_KEY && process.env.STRIPE_PRICE_ABONNEMENT,
);

export async function createPharmacyCheckoutSession(opts: {
  pharmacyId: string;
  pharmacyName: string;
  contactEmail: string;
  baseUrl: string;
}) {
  if (!stripe) throw new Error("Stripe non configuré.");

  const base = opts.baseUrl;

  const lineItems: Stripe.Checkout.SessionCreateParams.LineItem[] = [
    { price: process.env.STRIPE_PRICE_ABONNEMENT, quantity: 1 },
  ];
  if (process.env.STRIPE_PRICE_USAGE) {
    // Prix à l'usage (2 € HT / bilan au-delà de 30) : pas de "quantity" pour un prix metered.
    lineItems.push({ price: process.env.STRIPE_PRICE_USAGE });
  }

  const session = await stripe.checkout.sessions.create({
    mode: "subscription",
    customer_email: opts.contactEmail,
    client_reference_id: opts.pharmacyId,
    line_items: lineItems,
    success_url: `${base}/inscription/confirmation?session_id={CHECKOUT_SESSION_ID}`,
    cancel_url: `${base}/inscription`,
    metadata: { pharmacyId: opts.pharmacyId, pharmacyName: opts.pharmacyName },
  });

  return session;
}
