const generateCategoryJsonLd = (category, products = [], baseUrl, config) => {
  // Category IDs to skip (seeds, plants, headshop items)
  const skipCategoryIds = [689, 706, 709, 711, 714, 748, 749, 896, 710, 924, 923, 922, 921, 916, 278, 259, 258];

  // Check if category ID is in skip list
  if (category.id && skipCategoryIds.includes(parseInt(category.id))) {
    return '';
  }

  const categoryUrl = `${baseUrl}/Kategorie/${category.seoName}`;

  // Calculate price valid date (current date + 3 months)
  const priceValidDate = new Date();
  priceValidDate.setMonth(priceValidDate.getMonth() + 3);
  const priceValidUntil = priceValidDate.toISOString().split("T")[0];

  const jsonLd = {
    "@context": "https://schema.org/",
    "@type": "CollectionPage",
    name: category.name,
    url: categoryUrl,
    description: `${category.name} - Entdecken Sie unsere Auswahl an hochwertigen Produkten`,
    breadcrumb: {
      "@type": "BreadcrumbList",
      itemListElement: [
        {
          "@type": "ListItem",
          position: 1,
          name: "Home",
          item: baseUrl,
        },
        {
          "@type": "ListItem",
          position: 2,
          name: category.name,
          item: categoryUrl,
        },
      ],
    },
  };

  // Add product list if products are available
  if (products && products.length > 0) {
    jsonLd.mainEntity = {
      "@type": "ItemList",
      numberOfItems: products.length,
      itemListElement: products.slice(0, 20).map((product, index) => ({
        "@type": "ListItem",
        position: index + 1,
        item: {
          "@type": "Product",
          name: product.name,
          url: `${baseUrl}/Artikel/${product.seoName}`,
          image:
            product.pictureList && product.pictureList.trim()
              ? `${baseUrl}/assets/images/prod${product.pictureList
                  .split(",")[0]
                  .trim()}.avif`
              : `${baseUrl}/assets/images/nopicture.jpg`,
          description: product.description 
            ? product.description.replace(/<[^>]*>/g, "").substring(0, 200)
            : `${product.name} - Hochwertiges Growshop Produkt`,
          sku: product.articleNumber || product.seoName,
          brand: {
            "@type": "Brand",
            name: product.manufacturer || config.brandName,
          },
          offers: {
            "@type": "Offer",
            url: `${baseUrl}/Artikel/${product.seoName}`,
            price: product.price && !isNaN(product.price) ? product.price.toString() : "0.00",
            priceCurrency: config.currency,
            priceValidUntil: priceValidUntil,
            availability: product.available
              ? "https://schema.org/InStock"
              : "https://schema.org/OutOfStock",
            seller: {
              "@type": "Organization",
              name: config.brandName,
            },
            itemCondition: "https://schema.org/NewCondition",
            hasMerchantReturnPolicy: {
              "@type": "MerchantReturnPolicy",
              applicableCountry: "DE",
              returnPolicyCategory: "https://schema.org/MerchantReturnFiniteReturnWindow",
              merchantReturnDays: 14,
              returnMethod: "https://schema.org/ReturnByMail",
              returnFees: "https://schema.org/FreeReturn",
            },
            shippingDetails: {
              "@type": "OfferShippingDetails",
              shippingRate: {
                "@type": "MonetaryAmount",
                value: 5.90,
                currency: "EUR",
              },
              shippingDestination: {
                "@type": "DefinedRegion",
                addressCountry: "DE",
              },
              deliveryTime: {
                "@type": "ShippingDeliveryTime",
                handlingTime: {
                  "@type": "QuantitativeValue",
                  minValue: 0,
                  maxValue: 1,
                  unitCode: "DAY",
                },
                transitTime: {
                  "@type": "QuantitativeValue",
                  minValue: 2,
                  maxValue: 3,
                  unitCode: "DAY",
                },
              },
            },
          },
        },
      })),
    };
  }

  return `<script type="application/ld+json">${JSON.stringify(
    jsonLd
  )}</script>`;
};

module.exports = {
  generateCategoryJsonLd,
}; 