---
import { getCollection, render } from 'astro:content';
import ServicePage from '../../../components/services/ServicePage.astro';
import ServiceCallout from '../../../components/services/ServiceCallout.astro';
import ServiceSteps from '../../../components/services/ServiceSteps.astro';
import ServiceFeatureList from '../../../components/services/ServiceFeatureList.astro';
import { getLangParam } from '../../../lib/pages';
import type { ProfessionSlug } from '../../../data/navigation';

const serviceToCvRoles: Partial<Record<string, ProfessionSlug[]>> = {
  'domestic-worker-recruitment': ['domestic-worker', 'nanny', 'caregiver'],
  'private-driver-recruitment': ['private-driver'],
};

const serviceMdxComponents = {
  ServiceCallout,
  ServiceSteps,
  ServiceFeatureList,
};

export const prerender = false;

const lang = getLangParam(Astro.params.lang);
if (!lang) return Astro.redirect('/');

const serviceSlug = Astro.params.slug ?? '';
const entry = (await getCollection('services')).find((item) => {
  const [entryLang, ...rest] = item.id.split('/');
  const slug = rest.join('/').replace(/\.mdx?$/, '');
  return entryLang === lang && slug === serviceSlug;
});

if (!entry) return new Response(null, { status: 404 });

const { Content } = await render(entry);
const linkedCvRoles = serviceToCvRoles[serviceSlug] ?? [];
---

<ServicePage
  locale={lang}
  entry={entry}
  linkedCvRoles={linkedCvRoles}
  Content={Content}
  mdxComponents={serviceMdxComponents}
/>
