import { statesData } from "./lib/states-data.ts";
import { blogArticles } from "./lib/blog-data.ts";
import { caseStudies } from "./lib/case-studies-data.ts";
import { cityLandings } from "./lib/city-landings-data.ts";

interface SitemapUrl {
  loc: string;
  lastmod: string;
  changefreq: string;
  priority: string;
}

const baseUrl = "https://morgueonthemove.com";
const today = new Date().toISOString().split("T")[0];

const staticPages: SitemapUrl[] = [
  { loc: `${baseUrl}/`, lastmod: today, changefreq: "daily", priority: "1.0" },
  { loc: `${baseUrl}/about`, lastmod: today, changefreq: "monthly", priority: "0.6" },
  { loc: `${baseUrl}/contact`, lastmod: today, changefreq: "monthly", priority: "0.7" },
];

// Emergency & mass-fatality pages
const emergencyPages: SitemapUrl[] = [
  "emergency-morgue",
  "temporary-morgue",
  "surge-morgue-capacity",
  "mass-fatality-equipment",
  "disaster-morgue-solutions",
  "portable-morgue-systems",
  "mobile-morgue",
  "emergency-body-storage",
].map((slug) => ({
  loc: `${baseUrl}/${slug}`,
  lastmod: today,
  changefreq: "weekly",
  priority: "0.9",
}));

// Equipment pages
const equipmentPages: SitemapUrl[] = [
  "emergency-mortuary-coolers",
  "mortuary-lifts",
  "mortuary-racks",
  "rapid-deployment-cooling",
  "mortuary-equipment",
].map((slug) => ({
  loc: `${baseUrl}/${slug}`,
  lastmod: today,
  changefreq: "weekly",
  priority: "0.9",
}));

// Guide pages
const guidePages: SitemapUrl[] = [
  "mass-fatality-planning",
  "surge-capacity-planning",
  "emergency-morgue-checklist",
].map((slug) => ({
  loc: `${baseUrl}/${slug}`,
  lastmod: today,
  changefreq: "monthly",
  priority: "0.8",
}));

// Legacy pages
const legacyPages: SitemapUrl[] = [
  { loc: `${baseUrl}/services`, lastmod: today, changefreq: "weekly", priority: "0.7" },
  { loc: `${baseUrl}/states`, lastmod: today, changefreq: "weekly", priority: "0.7" },
  { loc: `${baseUrl}/blog`, lastmod: today, changefreq: "daily", priority: "0.7" },
  { loc: `${baseUrl}/case-studies`, lastmod: today, changefreq: "weekly", priority: "0.7" },
  { loc: `${baseUrl}/industries`, lastmod: today, changefreq: "weekly", priority: "0.6" },
];

const servicePages: SitemapUrl[] = [
  "mobile-morgue-coolers",
  "emergency-services",
  "hospital-overflow",
  "funeral-home-storage",
  "medical-examiner",
  "long-term-leasing",
].map((slug) => ({
  loc: `${baseUrl}/services/${slug}`,
  lastmod: today,
  changefreq: "weekly",
  priority: "0.7",
}));

const statePages: SitemapUrl[] = statesData.map((state) => ({
  loc: `${baseUrl}/states/${state.slug}`,
  lastmod: today,
  changefreq: "monthly",
  priority: "0.7",
}));

const blogPages: SitemapUrl[] = blogArticles.map((article) => ({
  loc: `${baseUrl}/blog/${article.slug}`,
  lastmod: article.modifiedDate || article.publishedDate,
  changefreq: "monthly",
  priority: "0.6",
}));

const caseStudyPages: SitemapUrl[] = caseStudies.map((study) => ({
  loc: `${baseUrl}/case-studies/${study.slug}`,
  lastmod: today,
  changefreq: "monthly",
  priority: "0.7",
}));

const cityPages: SitemapUrl[] = cityLandings.map((city) => ({
  loc: `${baseUrl}/cities/${city.slug}`,
  lastmod: today,
  changefreq: "monthly",
  priority: city.featured ? "0.8" : "0.7",
}));

const allUrls = [
  ...staticPages,
  ...emergencyPages,
  ...equipmentPages,
  ...guidePages,
  ...legacyPages,
  ...servicePages,
  ...statePages,
  ...blogPages,
  ...caseStudyPages,
  ...cityPages,
];

const sitemapXml = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${allUrls
  .map(
    (url) => `  <url>
    <loc>${url.loc}</loc>
    <lastmod>${url.lastmod}</lastmod>
    <changefreq>${url.changefreq}</changefreq>
    <priority>${url.priority}</priority>
  </url>`
  )
  .join("\n")}
</urlset>`;

export default sitemapXml;
