import { prisma } from './db';
import { createCheckout, dodoConfigured } from './dodo';
import type { Plan } from './plans';
import type { User } from '@prisma/client';
export class CheckoutError extends Error { constructor(msg: string, public status = 503) { super(msg); } }
/** Dodo checkout oturumu açar ve bekleyen Payment kaydı oluşturur. */
export async function startCheckout(u: User, plan: Plan, base: string, orderId?: string) {
  if (!dodoConfigured()) throw new CheckoutError('Ödeme altyapısı henüz yapılandırılmadı.');
  const productId = process.env[plan.productEnv];
  if (!productId) throw new CheckoutError(`${plan.productEnv} tanımlı değil.`);
  const ret = orderId ? `${base}/panel/siparisler/${orderId}` : `${base}/panel/odemeler`;
  const s = await createCheckout({
    productId, email: u.email, name: u.name, returnUrl: `${ret}?odeme=tamam`, cancelUrl: `${ret}?odeme=iptal`,
    metadata: { userId: u.id, plan: plan.id, ...(orderId ? { orderId } : {}) },
  });
  await prisma.payment.create({ data: { userId: u.id, orderId: orderId ?? null, plan: plan.id, credits: plan.credits, amount: plan.price * 100, dodoSessionId: s.session_id } });
  return s.checkout_url;
}
