/**
 * Domain Context Abstraction & Multi-Domain Readiness Specification
 * 
 * Provides resolution of incoming hostnames (e.g., 'lagoslisting.com', 'abujalisting.com',
 * 'kanolisting.com') to Nigerian Geographic State Contexts.
 * 
 * Designed for clean future multi-domain activation without disrupting the unified codebase.
 */

export interface DomainContext {
  hostname: string;
  isCustomStateDomain: boolean;
  stateCode?: string;
  stateName?: string;
  stateId?: number;
  brandName: string;
  metaTitleSuffix: string;
}

export const KNOWN_STATE_DOMAINS: Record<
  string,
  { stateCode: string; stateName: string; stateId: number; brandName: string }
> = {
  "lagoslisting.com": {
    stateCode: "LA",
    stateName: "Lagos",
    stateId: 25,
    brandName: "Lagos Listing",
  },
  "abujalisting.com": {
    stateCode: "FC",
    stateName: "Abuja (FCT)",
    stateId: 15,
    brandName: "Abuja Listing",
  },
  "kanolisting.com": {
    stateCode: "KN",
    stateName: "Kano",
    stateId: 20,
    brandName: "Kano Listing",
  },
  "riverslisting.com": {
    stateCode: "RI",
    stateName: "Rivers",
    stateId: 33,
    brandName: "Rivers Listing",
  },
  "oyolisting.com": {
    stateCode: "OY",
    stateName: "Oyo",
    stateId: 31,
    brandName: "Oyo Listing",
  },
};

/**
 * Resolves a hostname into a domain context.
 * In Phase 1, defaults to the unified Nigeria Listing national context.
 * Ready for middleware header injection in future phases.
 */
export function resolveDomainContext(hostHeader?: string | null): DomainContext {
  if (!hostHeader) {
    return {
      hostname: "nigerialisting.com",
      isCustomStateDomain: false,
      brandName: "Nigeria Listing",
      metaTitleSuffix: "Nigeria's Premier Real Estate Marketplace",
    };
  }

  const cleanHost = hostHeader.split(":")[0].toLowerCase().trim();

  // Check exact custom state domain mapping
  const match = KNOWN_STATE_DOMAINS[cleanHost];
  if (match) {
    return {
      hostname: cleanHost,
      isCustomStateDomain: true,
      stateCode: match.stateCode,
      stateName: match.stateName,
      stateId: match.stateId,
      brandName: match.brandName,
      metaTitleSuffix: `Verified Properties in ${match.stateName}, Nigeria`,
    };
  }

  // Default national platform context
  return {
    hostname: cleanHost,
    isCustomStateDomain: false,
    brandName: "Nigeria Listing",
    metaTitleSuffix: "Nigeria's Premier Real Estate Marketplace",
  };
}
