import type { AppLanguage } from "@/context/LanguageContext";

/**
 * Per-page SEO copy, localized for each supported language.
 *
 * The SeoMeta component uses this map to produce a dynamic
 * `<title>`, `<meta name="description">`, Open Graph tags, Twitter
 * card tags, `<link rel="alternate" hreflang="…">` pairs and a
 * canonical URL on every route.
 *
 * Adding a new route:
 *   1. Pick the path as the key (without a trailing slash, except `/`).
 *   2. Fill in both `en` and `ar` title + description.
 *
 * When a route is not found in this map, the component falls back to
 * `DEFAULT_SEO` so every page still exposes valid metadata.
 */

export interface SeoEntry {
  title: string;
  description: string;
  /** Optional override for the Open Graph image on this page. */
  image?: string;
}

export type LocalizedSeo = Record<AppLanguage, SeoEntry>;

/** Brand / suffix that is appended to the title on non-home pages. */
export const BRAND_NAME: Record<AppLanguage, string> = {
  en: "DoItEasy",
  ar: "DoItEasy",
};

/** Default OG image used when a page doesn't override it. */
export const DEFAULT_OG_IMAGE = "/logo.svg";

/**
 * Production origin used for canonical + hreflang URLs.
 * Falls back to the current `window.location.origin` at runtime, so this
 * constant only matters for SSR / prerender scenarios.
 */
export const SITE_ORIGIN = "https://doiteasy.com";

export const DEFAULT_SEO: LocalizedSeo = {
  en: {
    title: "DoItEasy — Reliable Hosting, Powerful Cloud, Simple Setup",
    description:
      "Enterprise hosting, cloud VPS, dedicated servers and managed IT services — engineered for speed, security and 99.99% uptime. Saudi-hosted with 24/7 expert support.",
  },
  ar: {
    title: "DoItEasy — استضافة موثوقة وسحابة قوية وإعداد بسيط",
    description:
      "استضافة على مستوى المؤسسات و VPS سحابي وسيرفرات مخصصة وخدمات إدارة تقنية — مصممة للسرعة والأمان وجاهزية 99.99٪، مستضافة في السعودية بدعم خبراء 24/7.",
  },
};

/**
 * Canonical SEO entries per route.
 *
 * Only public / indexable pages are listed here. Admin, auth and CMS
 * routes intentionally omit their entries — the SeoMeta component will
 * mark those pages as `noindex` automatically.
 */
export const ROUTE_SEO: Record<string, LocalizedSeo> = {
  "/": {
    en: {
      title: "DoItEasy — Reliable Hosting, Powerful Cloud, Simple Setup",
      description:
        "Premium hosting, cloud VPS, dedicated servers and managed IT services engineered for speed, security and 99.99% uptime. Saudi-hosted with 24/7 expert support.",
    },
    ar: {
      title: "DoItEasy — استضافة موثوقة وسحابة قوية وإعداد بسيط",
      description:
        "استضافة متميزة و VPS سحابي وسيرفرات مخصصة وخدمات إدارة تقنية — أداء عالٍ وأمان وجاهزية 99.99٪، مستضافة في السعودية بدعم خبراء 24/7.",
    },
  },

  "/hosting": {
    en: {
      title: "Shared Hosting Plans — cPanel, Plesk, Windows & WordPress",
      description:
        "Fast, reliable shared hosting with free SSL, free migration and 24/7 support. Choose cPanel, Plesk, aaPanel, Windows or WordPress-optimized plans.",
    },
    ar: {
      title: "خطط الاستضافة المشتركة — cPanel و Plesk و Windows و WordPress",
      description:
        "استضافة مشتركة سريعة وموثوقة مع SSL مجاني وترحيل مجاني ودعم 24/7. اختر cPanel أو Plesk أو aaPanel أو ويندوز أو خطط مخصصة لووردبريس.",
    },
  },
  "/shared-hosting": {
    en: {
      title: "Shared Hosting — DoItEasy",
      description:
        "Affordable, feature-rich shared hosting. Free SSL, daily backups, 1-click installers and 24/7 expert support.",
    },
    ar: {
      title: "الاستضافة المشتركة — DoItEasy",
      description:
        "استضافة مشتركة بأسعار اقتصادية وبمزايا غنية. SSL مجاني ونسخ احتياطي يومي ومُثبّتات بنقرة واحدة ودعم خبراء 24/7.",
    },
  },
  "/shared-hosting/cpanel": {
    en: {
      title: "cPanel Hosting — DoItEasy",
      description:
        "Industry-standard cPanel hosting with Softaculous, LiteSpeed and daily backups. Free SSL and free migration included.",
    },
    ar: {
      title: "استضافة cPanel — DoItEasy",
      description:
        "استضافة cPanel المعيارية مع Softaculous و LiteSpeed ونسخ احتياطي يومي. SSL مجاني وترحيل مجاني.",
    },
  },
  "/shared-hosting/plesk": {
    en: {
      title: "Plesk Hosting — DoItEasy",
      description:
        "Plesk hosting for Windows and Linux workloads. Power, security and a modern control panel with 24/7 support.",
    },
    ar: {
      title: "استضافة Plesk — DoItEasy",
      description:
        "استضافة Plesk لأحمال ويندوز ولينكس. أداء وأمان ولوحة تحكم حديثة مع دعم 24/7.",
    },
  },
  "/shared-hosting/aa-panel": {
    en: {
      title: "aaPanel Hosting — DoItEasy",
      description:
        "Lightweight aaPanel hosting with quick one-click deployments and flexible server tools.",
    },
    ar: {
      title: "استضافة aaPanel — DoItEasy",
      description:
        "استضافة aaPanel الخفيفة مع نشر بنقرة واحدة وأدوات مرنة للسيرفر.",
    },
  },
  "/shared-hosting/windows": {
    en: {
      title: "Windows Hosting — DoItEasy",
      description:
        "Windows hosting for ASP.NET, MSSQL and IIS workloads. Enterprise-grade performance with managed support.",
    },
    ar: {
      title: "استضافة ويندوز — DoItEasy",
      description:
        "استضافة ويندوز لأحمال ASP.NET و MSSQL و IIS. أداء على مستوى المؤسسات مع دعم مُدار.",
    },
  },
  "/shared-hosting/wordpress": {
    en: {
      title: "Managed WordPress Hosting — DoItEasy",
      description:
        "Tuned WordPress stack with auto-updates, caching and malware scanning. Free migration and expert 24/7 support.",
    },
    ar: {
      title: "استضافة ووردبريس المُدارة — DoItEasy",
      description:
        "بيئة ووردبريس محسّنة مع تحديثات تلقائية وتخزين مؤقت وفحص للبرمجيات الخبيثة. ترحيل مجاني ودعم خبراء 24/7.",
    },
  },
  "/wordpress-hosting": {
    en: {
      title: "WordPress Hosting — DoItEasy",
      description:
        "Blazing-fast WordPress hosting with auto-updates, free SSL, daily backups and dedicated WordPress support.",
    },
    ar: {
      title: "استضافة ووردبريس — DoItEasy",
      description:
        "استضافة ووردبريس فائقة السرعة مع تحديثات تلقائية و SSL مجاني ونسخ احتياطي يومي ودعم مخصص لووردبريس.",
    },
  },

  "/cloud-vps": {
    en: {
      title: "Cloud VPS — DoItEasy",
      description:
        "NVMe-powered Cloud VPS with per-second billing, one-click OS reinstall and 60-second provisioning. Scale up or down instantly.",
    },
    ar: {
      title: "VPS سحابي — DoItEasy",
      description:
        "VPS سحابي بتقنية NVMe مع فوترة بالثانية وإعادة تثبيت بنقرة واحدة وتوفير خلال 60 ثانية. وسّع مواردك أو قلّصها فوراً.",
    },
  },
  "/dedicated": {
    en: {
      title: "Dedicated Servers — DoItEasy",
      description:
        "Bare-metal dedicated servers with hardware isolation, enterprise SLAs and 24/7 managed support.",
    },
    ar: {
      title: "السيرفرات المخصصة — DoItEasy",
      description:
        "سيرفرات مخصصة بعتاد معزول واتفاقيات SLA على مستوى المؤسسات ودعم مُدار 24/7.",
    },
  },

  "/business-email": {
    en: {
      title: "Business Email — DoItEasy",
      description:
        "Professional mailboxes on your own domain with spam & malware protection, mobile access and full control.",
    },
    ar: {
      title: "بريد الأعمال — DoItEasy",
      description:
        "بريد إلكتروني احترافي على نطاقك مع حماية من البريد المزعج والبرمجيات الخبيثة ووصول من الجوال وتحكم كامل.",
    },
  },
  "/bizmail360": {
    en: {
      title: "Bizmail360 — Collaboration Mail by DoItEasy",
      description:
        "A unified collaboration mail suite with calendars, contacts, video meetings and powerful admin controls.",
    },
    ar: {
      title: "Bizmail360 — بريد التعاون من DoItEasy",
      description:
        "حزمة بريد تعاون موحدة مع تقويمات وجهات اتصال واجتماعات فيديو وأدوات إدارة قوية.",
    },
  },

  "/whatsapp-api": {
    en: {
      title: "WhatsApp Business API — DoItEasy",
      description:
        "Send transactional and marketing messages at scale with the official WhatsApp Business API. Easy integration and expert onboarding.",
    },
    ar: {
      title: "WhatsApp Business API — DoItEasy",
      description:
        "أرسل رسائل معاملات وتسويق على نطاق واسع عبر WhatsApp Business API الرسمي مع تكامل سهل ودعم تهيئة.",
    },
  },
  "/uptime-monitor": {
    en: {
      title: "Uptime Monitoring — DoItEasy",
      description:
        "Real-time uptime and performance monitoring with instant alerts via email, SMS and WhatsApp.",
    },
    ar: {
      title: "مراقبة التشغيل — DoItEasy",
      description:
        "مراقبة حيّة للتشغيل والأداء مع تنبيهات فورية عبر البريد و SMS و WhatsApp.",
    },
  },
  "/sd-wan": {
    en: {
      title: "SD-WAN Services — DoItEasy",
      description:
        "Smart, secure WAN for multi-site and branch offices. Optimized routing, MPLS alternative and enterprise-grade reliability.",
    },
    ar: {
      title: "خدمات SD-WAN — DoItEasy",
      description:
        "شبكة WAN ذكية وآمنة للمكاتب متعددة المواقع والفروع. توجيه محسّن وبديل MPLS وموثوقية على مستوى المؤسسات.",
    },
  },
  "/managed-it": {
    en: {
      title: "Managed IT Services — DoItEasy",
      description:
        "Outsource your IT operations: 24/7 monitoring, proactive patching, secure backups and expert engineers on call.",
    },
    ar: {
      title: "خدمات الإدارة التقنية — DoItEasy",
      description:
        "أسنِد إدارة عملياتك التقنية: مراقبة 24/7 وتحديثات استباقية ونسخ احتياطية آمنة ومهندسون خبراء جاهزون.",
    },
  },
  "/remote-support": {
    en: {
      title: "Remote Support — DoItEasy",
      description:
        "Secure on-demand remote troubleshooting for your servers, endpoints and end-users.",
    },
    ar: {
      title: "الدعم عن بُعد — DoItEasy",
      description:
        "مساعدة آمنة عند الطلب عن بُعد للسيرفرات والأجهزة والمستخدمين النهائيين.",
    },
  },

  "/domain-search": {
    en: {
      title: "Domain Search & Registration — DoItEasy",
      description:
        "Search and register domains in 500+ TLDs with instant availability checks, WHOIS privacy and easy management.",
    },
    ar: {
      title: "البحث عن النطاقات وتسجيلها — DoItEasy",
      description:
        "ابحث وسجّل النطاقات في أكثر من 500 امتداد مع تحقق فوري من التوفر وخصوصية WHOIS وإدارة سهلة.",
    },
  },
  "/domains": {
    en: {
      title: "Domains — DoItEasy",
      description:
        "Register, transfer and manage your domains in one place with DoItEasy.",
    },
    ar: {
      title: "النطاقات — DoItEasy",
      description:
        "سجّل وانقل وأدر نطاقاتك في مكان واحد مع DoItEasy.",
    },
  },

  "/shop": {
    en: {
      title: "DoItEasy Shop — Premium Tech for Business",
      description:
        "Laptops, workstations, networking gear and accessories — hand-picked for businesses and ready to ship.",
    },
    ar: {
      title: "متجر DoItEasy — تقنيات متميزة للشركات",
      description:
        "حواسيب محمولة ومحطات عمل ومعدات شبكات وملحقات — مختارة للشركات وجاهزة للشحن.",
    },
  },
  "/shop/cart": {
    en: {
      title: "Your Cart — DoItEasy Shop",
      description: "Review the products in your shopping cart before checkout.",
    },
    ar: {
      title: "سلتك — متجر DoItEasy",
      description: "راجع المنتجات في سلة التسوق قبل إتمام الشراء.",
    },
  },
  "/shop/checkout": {
    en: {
      title: "Checkout — DoItEasy Shop",
      description: "Securely complete your order with Stripe payment.",
    },
    ar: {
      title: "إتمام الشراء — متجر DoItEasy",
      description: "أكمل طلبك بأمان عبر الدفع بـ Stripe.",
    },
  },
  "/shop/payment-success": {
    en: {
      title: "Thank you — DoItEasy Shop",
      description: "Your order has been placed successfully.",
    },
    ar: {
      title: "شكراً — متجر DoItEasy",
      description: "تم إنشاء طلبك بنجاح.",
    },
  },

  "/about": {
    en: {
      title: "About Us — DoItEasy",
      description:
        "DoItEasy is a Saudi-based hosting and cloud provider with a decade of experience serving businesses across the Gulf.",
    },
    ar: {
      title: "من نحن — DoItEasy",
      description:
        "DoItEasy شركة سعودية للاستضافة والخدمات السحابية بخبرة عقد من الزمن في خدمة الشركات عبر الخليج.",
    },
  },
  "/contact": {
    en: {
      title: "Contact Us — DoItEasy",
      description:
        "Reach our sales and support team by phone, email or ticket. Available 24/7.",
    },
    ar: {
      title: "تواصل معنا — DoItEasy",
      description:
        "تواصل مع فريق المبيعات والدعم عبر الهاتف أو البريد أو التذكرة. متاح 24/7.",
    },
  },

  "/services": {
    en: {
      title: "Services Catalog — DoItEasy",
      description:
        "Browse the full catalog of DoItEasy hosting, cloud and managed IT services.",
    },
    ar: {
      title: "كتالوج الخدمات — DoItEasy",
      description:
        "تصفح الكتالوج الكامل لخدمات DoItEasy من استضافة وخدمات سحابية وإدارة تقنية.",
    },
  },
  "/service-catalog": {
    en: {
      title: "Service Catalog — DoItEasy",
      description:
        "Explore all DoItEasy services in one place: hosting, cloud, email, support and more.",
    },
    ar: {
      title: "كتالوج الخدمات — DoItEasy",
      description:
        "استعرض جميع خدمات DoItEasy في مكان واحد: استضافة وسحابة وبريد ودعم والمزيد.",
    },
  },

  "/knowledge-base": {
    en: {
      title: "Knowledge Base — DoItEasy",
      description:
        "Search step-by-step guides, tutorials and documentation from the DoItEasy support team.",
    },
    ar: {
      title: "قاعدة المعرفة — DoItEasy",
      description:
        "ابحث في الأدلة التفصيلية والشروحات والتوثيق من فريق دعم DoItEasy.",
    },
  },
  "/kb": {
    en: {
      title: "Knowledge Base — DoItEasy",
      description:
        "Guides, tutorials and troubleshooting articles from the DoItEasy support team.",
    },
    ar: {
      title: "قاعدة المعرفة — DoItEasy",
      description:
        "أدلة وشروحات ومقالات لحل المشكلات من فريق دعم DoItEasy.",
    },
  },
  "/faq": {
    en: {
      title: "Frequently Asked Questions — DoItEasy",
      description:
        "Find answers to the most common questions about DoItEasy hosting, billing, domains and support.",
    },
    ar: {
      title: "الأسئلة الشائعة — DoItEasy",
      description:
        "اعثر على إجابات الأسئلة الأكثر شيوعاً حول استضافة DoItEasy والفوترة والنطاقات والدعم.",
    },
  },
  "/tickets": {
    en: {
      title: "Support Tickets — DoItEasy",
      description:
        "Open, track and respond to your DoItEasy support tickets — 24/7 expert help.",
    },
    ar: {
      title: "تذاكر الدعم — DoItEasy",
      description:
        "افتح وتابع وارد على تذاكر دعم DoItEasy — مساعدة خبراء 24/7.",
    },
  },

  "/service-terms": {
    en: {
      title: "Service Terms — DoItEasy",
      description:
        "Read the service terms that govern your use of DoItEasy products and services.",
    },
    ar: {
      title: "شروط الخدمة — DoItEasy",
      description:
        "اطلع على شروط الخدمة التي تنظم استخدامك لمنتجات وخدمات DoItEasy.",
    },
  },
  "/refund-policy": {
    en: {
      title: "Refund Policy — DoItEasy",
      description:
        "Our refund policy: eligibility, timeframes and how to request a refund for DoItEasy services.",
    },
    ar: {
      title: "سياسة الاسترداد — DoItEasy",
      description:
        "سياسة الاسترداد: معايير الأهلية والفترات الزمنية وكيفية طلب الاسترداد لخدمات DoItEasy.",
    },
  },
  "/privacy-center": {
    en: {
      title: "Privacy Center — DoItEasy",
      description:
        "Learn how DoItEasy collects, uses and protects your personal information across our services.",
    },
    ar: {
      title: "مركز الخصوصية — DoItEasy",
      description:
        "تعرّف على كيفية جمع DoItEasy لمعلوماتك الشخصية واستخدامها وحمايتها عبر خدماتنا.",
    },
  },

  "/login": {
    en: {
      title: "Sign in — DoItEasy",
      description: "Sign in to the DoItEasy client area.",
    },
    ar: {
      title: "تسجيل الدخول — DoItEasy",
      description: "سجّل الدخول إلى منطقة العميل في DoItEasy.",
    },
  },
  "/register": {
    en: {
      title: "Create an Account — DoItEasy",
      description:
        "Create your DoItEasy account to manage hosting, domains and services in one place.",
    },
    ar: {
      title: "إنشاء حساب — DoItEasy",
      description:
        "أنشئ حسابك في DoItEasy لإدارة الاستضافة والنطاقات والخدمات من مكان واحد.",
    },
  },
};

/**
 * Routes that should be marked `noindex, nofollow`. Any route starting
 * with one of these prefixes is excluded from search indexing.
 */
export const NOINDEX_PREFIXES: string[] = [
  "/admin",
  "/client",
  "/account",
  "/agent",
  "/auth",
  "/forgot",
  "/reset-password",
];

/**
 * Returns true when the given pathname corresponds to a page that
 * must not be indexed by search engines.
 */
export function shouldNoIndex(pathname: string): boolean {
  return NOINDEX_PREFIXES.some(
    (p) => pathname === p || pathname.startsWith(p + "/"),
  );
}

/**
 * Look up the localized SEO entry for a given path + language.
 *
 * - Exact path match wins.
 * - For dynamic segments (e.g. `/shop/:slug`) we fall back to the
 *   parent route entry so we still emit sensible metadata.
 * - Ultimately falls back to `DEFAULT_SEO`.
 */
export function resolveSeo(pathname: string, lang: AppLanguage): SeoEntry {
  const cleanPath = pathname.replace(/\/+$/, "") || "/";
  if (ROUTE_SEO[cleanPath]) return ROUTE_SEO[cleanPath][lang];
  // Try parent paths: "/shop/abc" -> "/shop"
  const segments = cleanPath.split("/").filter(Boolean);
  while (segments.length > 0) {
    segments.pop();
    const parent = "/" + segments.join("/");
    const key = parent === "/" ? "/" : parent;
    if (ROUTE_SEO[key]) return ROUTE_SEO[key][lang];
  }
  return DEFAULT_SEO[lang];
}