import axios from 'axios';
import { create } from 'xmlbuilder2';
import { baseUrl } from '../constants/urls';

const baseUrl1 = `${baseUrl}/api/generate-sitemap`;
export const config = {
  api: {
    // responseLimit: '20mb',
    responseLimit: false,
  },
};


async function fetchProductList(page: number) {
  try {
  
    const response = await axios.get(`${baseUrl1}?type=products-list&page=${page}`);

    return response.data?.data?.data;
  } catch (error) {
    console.error('Error fetching data:', error);
    return [];
  }
}

function generateSitemapUrl(url: string, lastmod: string,priority:any) {
  return {
    loc: url,
    lastmod,
    priority
  };
}

export async function productSitemapXml(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 1; page <= pages; page++) {
    const productList1 = await fetchProductList(page);
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8' 
      root.ele('url')
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}

export async function productSitemapXml1(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 101; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}

export async function productSitemapXml2(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 201; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}

export async function productSitemapXml3(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 301; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8' ;
      root.ele('url')
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}

export async function productSitemapXml4(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 401; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}


export async function productSitemapXml5(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 501; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}


export async function productSitemapXml6(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 601; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}


export async function productSitemapXml7(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 701; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}


export async function productSitemapXml8(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 801; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}



export async function productSitemapXml9(pages: number) {
  const sitemap = create({ version: '1.0', encoding: 'UTF-8' });
  const root = sitemap.ele('urlset', { xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' });

  for (let page = 901; page <= pages; page++) {
   
    const productList1 = await fetchProductList(page);
  
    productList1.forEach((item: any) => {
      // Modify this part to fit your data structure.
      const productUrl = `${item?.product_url}`;
      const lastModified = new Date().toISOString();
      const priority = '0.8';
      root.ele('url') 
      .ele(generateSitemapUrl(productUrl, lastModified,priority));
    });
  }

  return sitemap.end({ prettyPrint: true });
}