import type { TenantPlan, PlanPeriod } from "./schema";

export const PLAN_RANK: Record<TenantPlan, number> = {
  free: 0,
  starter: 1,
  pro: 2,
  enterprise: 3,
};

// Validated server-side; values are discount fractions (0.5 = 50% off)
export const DISCOUNT_CODES: Record<string, number> = {
  KOVAK50: 0.5,
  KOVAK10: 0.1,
};

export function validateDiscountCode(code: string): number | null {
  const normalized = code.trim().toUpperCase();
  return DISCOUNT_CODES[normalized] ?? null;
}

export type PlanCatalogEntry = {
  id: TenantPlan;
  name: string;
  description: string;
  monthly: number;
  yearly: number;   // 10 ay ücreti (2 ay bedava)
  currency: string;
  features: string[];
  highlight?: boolean;
};

export const PLAN_CATALOG: Record<Exclude<TenantPlan, "free">, PlanCatalogEntry> = {
  starter: {
    id: "starter",
    name: "Başlangıç",
    description: "Büyüyen emlak ofisleri için.",
    monthly: 599,
    yearly: 5990,
    currency: "TRY",
    features: [
      "50 aktif ilan",
      "100 müşteri",
      "20 sunum",
      "3 ekip üyesi",
      "10 fotoğraf / ilan",
      "Otomatik eşleştirme",
    ],
  },
  pro: {
    id: "pro",
    name: "Pro",
    description: "Kurumsal emlak ofisleri için.",
    monthly: 999,
    yearly: 9990,
    currency: "TRY",
    highlight: true,
    features: [
      "200 aktif ilan",
      "500 müşteri",
      "50 sunum",
      "10 ekip üyesi",
      "20 fotoğraf / ilan",
      "Yatırımcı portalı",
      "Öncelikli destek",
    ],
  },
  enterprise: {
    id: "enterprise",
    name: "Enterprise",
    description: "Büyük zincir ofisler için sınırsız kullanım.",
    monthly: 1799,
    yearly: 17990,
    currency: "TRY",
    features: [
      "Sınırsız aktif ilan",
      "Sınırsız müşteri",
      "Sınırsız sunum",
      "Sınırsız ekip üyesi",
      "Sınırsız fotoğraf",
      "Yatırımcı portalı",
      "Öncelikli & özel destek",
    ],
  },
};

export function planPrice(entry: PlanCatalogEntry, period: PlanPeriod): number {
  return period === "yearly" ? entry.yearly : entry.monthly;
}

export function planPriceDisplay(entry: PlanCatalogEntry, period: PlanPeriod): number {
  // Yıllık seçildiğinde aylık karşılığını göster
  return period === "yearly" ? Math.round(entry.yearly / 12) : entry.monthly;
}
