import type { Metadata } from 'next'
import { notFound } from 'next/navigation'
import { locations, getLocationBySlug } from '@/lib/locations-data'
import { LocationPageTemplate } from '@/components/locations/LocationPageTemplate'
import { Breadcrumbs } from '@/components/seo/Breadcrumbs'
import { JsonLd } from '@/components/seo/JsonLd'
import { COMPANY } from '@/lib/constants'

export async function generateStaticParams() {
  return locations.map((location) => ({ slug: location.slug }))
}

export async function generateMetadata({
  params,
}: {
  params: Promise<{ slug: string }>
}): Promise<Metadata> {
  const { slug } = await params
  const location = getLocationBySlug(slug)
  if (!location) return {}

  return {
    title: location.metaTitle,
    description: location.metaDescription,
    keywords: location.keywords,
    alternates: { canonical: `/locations/${location.slug}` },
    openGraph: {
      title: location.metaTitle,
      description: location.metaDescription,
      type: 'website',
    },
  }
}

export default async function LocationPage({
  params,
}: {
  params: Promise<{ slug: string }>
}) {
  const { slug } = await params
  const location = getLocationBySlug(slug)
  if (!location) notFound()

  const localBusinessSchema = {
    '@context': 'https://schema.org',
    '@type': 'LocalBusiness',
    name: COMPANY.name,
    description: location.metaDescription,
    telephone: COMPANY.phone,
    url: `${COMPANY.url}/locations/${location.slug}`,
    areaServed: {
      '@type': 'City',
      name: location.city,
      containedInPlace: {
        '@type': 'AdministrativeArea',
        name: location.county,
      },
    },
    serviceType: 'Charter Bus Rental',
  }

  return (
    <>
      <JsonLd data={localBusinessSchema} />
      <div className="max-w-7xl mx-auto px-4">
        <div className="pt-24">
          <Breadcrumbs
            items={[
              { label: 'Locations', href: '/locations' },
              { label: location.city },
            ]}
          />
        </div>
      </div>
      <LocationPageTemplate location={location} />
    </>
  )
}
