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}/services`,
    lastmod: today,
    changefreq: "weekly",
    priority: "0.9"
  },
  {
    loc: `${baseUrl}/states`,
    lastmod: today,
    changefreq: "weekly",
    priority: "0.9"
  },
  {
    loc: `${baseUrl}/blog`,
    lastmod: today,
    changefreq: "daily",
    priority: "0.9"
  },
  {
    loc: `${baseUrl}/case-studies`,
    lastmod: today,
    changefreq: "weekly",
    priority: "0.9"
  },
  {
    loc: `${baseUrl}/industries`,
    lastmod: today,
    changefreq: "weekly",
    priority: "0.8"
  },
  {
    loc: `${baseUrl}/about`,
    lastmod: today,
    changefreq: "monthly",
    priority: "0.7"
  },
  {
    loc: `${baseUrl}/contact`,
    lastmod: today,
    changefreq: "monthly",
    priority: "0.8"
  }
];

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.8"
}));

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

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

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

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

const allUrls = [...staticPages, ...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;
